working on multiplayer - still delay with more actors :/

This commit is contained in:
2025-07-21 09:05:24 +02:00
parent 3c13cc3034
commit 0d8cc0e291
10 changed files with 115 additions and 57 deletions

View File

@@ -2,6 +2,7 @@
using RebootKit.Engine.Extensions;
using RebootKit.Engine.Foundation;
using RebootKit.Engine.Main;
using RebootKit.Engine.Network;
using RebootKit.Engine.Simulation;
using RebootKit.Engine.Simulation.Sensors;
using RebootReality.jelycho.Items;
@@ -145,7 +146,7 @@ namespace RebootReality.jelycho.Player {
m_SyncRemoteStateTimer -= deltaTime;
if (m_SyncRemoteStateTimer <= 0.0f) {
m_SyncRemoteStateTimer = 1.0f / RR.TickRate.IndexValue;
m_SyncRemoteStateTimer = 1.0f / NetworkSystem.TickRate.IndexValue;
RemotePlayerActorState remoteState = new RemotePlayerActorState {
Position = transform.position,
@@ -672,9 +673,13 @@ namespace RebootReality.jelycho.Player {
}
public class PlayerActorData : IActorData {
public void Serialize(FastBufferWriter writer) { }
public void Serialize(NetworkBufferWriter writer) { }
public void Deserialize(FastBufferReader reader) { }
public void Deserialize(NetworkBufferReader reader) { }
public int GetMaxBytes() {
return 0;
}
}
public struct RemotePlayerActorState : IActorData {
@@ -684,20 +689,27 @@ namespace RebootReality.jelycho.Player {
public float LookYaw;
public bool IsGrounded;
public void Serialize(FastBufferWriter writer) {
writer.WriteValue(Position);
writer.WriteValue(Velocity);
writer.WriteValue(LookPitch);
writer.WriteValue(LookYaw);
writer.WriteValue(IsGrounded);
public void Serialize(NetworkBufferWriter writer) {
writer.Write(Position);
writer.Write(Velocity);
writer.Write(LookPitch);
writer.Write(LookYaw);
writer.Write(IsGrounded);
}
public void Deserialize(FastBufferReader reader) {
reader.ReadValue(out Position);
reader.ReadValue(out Velocity);
reader.ReadValue(out LookPitch);
reader.ReadValue(out LookYaw);
reader.ReadValue(out IsGrounded);
public void Deserialize(NetworkBufferReader reader) {
reader.Read(out Position);
reader.Read(out Velocity);
reader.Read(out LookPitch);
reader.Read(out LookYaw);
reader.Read(out IsGrounded);
}
public int GetMaxBytes() {
return sizeof(float) * 3 + // Position;
sizeof(float) * 3 + // Velocity
sizeof(float) * 2 + // LookPitch, LookYaw
sizeof(bool); // IsGrounded
}
}
@@ -714,12 +726,16 @@ namespace RebootReality.jelycho.Player {
struct PlayerActorPickupItemCommand : IActorData {
public ulong ItemActorID;
public void Serialize(FastBufferWriter writer) {
writer.WriteValue(ItemActorID);
public void Serialize(NetworkBufferWriter writer) {
writer.Write(ItemActorID);
}
public void Deserialize(FastBufferReader reader) {
reader.ReadValue(out ItemActorID);
public void Deserialize(NetworkBufferReader reader) {
reader.Read(out ItemActorID);
}
public int GetMaxBytes() {
return sizeof(ulong); // ItemActorID
}
}
@@ -727,38 +743,50 @@ namespace RebootReality.jelycho.Player {
public int InventorySlotIndex;
public int Count;
public void Serialize(FastBufferWriter writer) {
writer.WriteValue(InventorySlotIndex);
writer.WriteValue(Count);
public void Serialize(NetworkBufferWriter writer) {
writer.Write(InventorySlotIndex);
writer.Write(Count);
}
public void Deserialize(FastBufferReader reader) {
reader.ReadValue(out InventorySlotIndex);
reader.ReadValue(out Count);
public void Deserialize(NetworkBufferReader reader) {
reader.Read(out InventorySlotIndex);
reader.Read(out Count);
}
public int GetMaxBytes() {
return sizeof(int) * 2; // InventorySlotIndex, Count
}
}
struct PlayerActorEquipItemCommand : IActorData {
public int InventorySlotIndex;
public void Serialize(FastBufferWriter writer) {
writer.WriteValue(InventorySlotIndex);
public void Serialize(NetworkBufferWriter writer) {
writer.Write(InventorySlotIndex);
}
public void Deserialize(FastBufferReader reader) {
reader.ReadValue(out InventorySlotIndex);
public void Deserialize(NetworkBufferReader reader) {
reader.Read(out InventorySlotIndex);
}
public int GetMaxBytes() {
return sizeof(int); // InventorySlotIndex
}
}
struct PlayerActorSelectItemSlotCommand : IActorData {
public int SlotIndex;
public void Serialize(FastBufferWriter writer) {
writer.WriteValue(SlotIndex);
public void Serialize(NetworkBufferWriter writer) {
writer.Write(SlotIndex);
}
public void Deserialize(FastBufferReader reader) {
reader.ReadValue(out SlotIndex);
public void Deserialize(NetworkBufferReader reader) {
reader.Read(out SlotIndex);
}
public int GetMaxBytes() {
return sizeof(int); // SlotIndex
}
}
@@ -772,12 +800,16 @@ namespace RebootReality.jelycho.Player {
struct PlayerActorPrimaryEquippedItemChangedEvent : IActorData {
public ulong ItemActorID;
public void Serialize(FastBufferWriter writer) {
writer.WriteValue(ItemActorID);
public void Serialize(NetworkBufferWriter writer) {
writer.Write(ItemActorID);
}
public void Deserialize(FastBufferReader reader) {
reader.ReadValue(out ItemActorID);
public void Deserialize(NetworkBufferReader reader) {
reader.Read(out ItemActorID);
}
public int GetMaxBytes() {
return sizeof(ulong); // ItemActorID
}
}
}

View File

@@ -2,6 +2,7 @@
using R3;
using RebootKit.Engine.Foundation;
using RebootKit.Engine.Main;
using RebootKit.Engine.Network;
using RebootKit.Engine.Simulation;
using RebootReality.jelycho.Player.HUD;
using Unity.Mathematics;