Wpis z mikrobloga

Mirki od #unity3d i Photon, mam w multiplayerze synchronizowane Rigidbody: position, rotation, velocity, angular velocity. Czy jest sens nakładać jeszcze na to synchronizację transforma obiektu w którym to Rigidbody się znajduje?

Działa to akceptowalnie, chciałbym jeszcze opóźnić synchro pozycji żeby oszczędzić transfer, lepiej to zrobić IEnumeratorem czy można jakoś wskazać Photonowi żeby tą zmienną synchronizował np. co 2 sek:

stream.SendNext(this.position);
(Vector3)stream.ReceiveNext();

(na logikę jeśli parametr się nie zmieni przez 2 sek. to Photon nic nie wyśle)
#gamedev #csharp
jacku - Mirki od #unity3d i Photon, mam w multiplayerze synchronizowane Rigidbody: po...

źródło: comment_1644950777zH0I1oxrRoNnIZHH2vSs7L.jpg

Pobierz
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@jacku: Photon ma komponenty które dodajesz i się synchronizuje.
position, rotation z rigidbody to to samo co z transform.
photon ma tylko globalny sendrate PhotonNetwork.sendRateOnSerialize.
Wszystko co "wysyłasz" od ostatniego wysłania jest cachowane i potem leci jedna paczką.
jak zmienisz np 10 razy to samo pomiędzy paczkami to poleci raz
  • Odpowiedz
@zibizz1: Niby działa ale nielogicznie, tzn. photon nie przenosi pozycji i rotacji tylko robi moveTowards (co jest ok). Ale im więcej parametrów synchronizuje tym jest gorzej:

a)

transformView(off, off)
rigidbodyView(position, rotation,
  • Odpowiedz
@jacku: Nie wiem jak teraz tam jest ale kiedyś rigidbodyView miało tylko prędkość i prędkość kątowa
a transform pozycja i kąt
I trzeba było użyć dwóch, skoro rigidbody ma teraz pozycję to nie wiem jak to wpływa na siebie
  • Odpowiedz