Jump to content
Unity Insider Forum

Unet Bug? (NetworkReader out of Range)


Helishcoffe

Recommended Posts

Hallo,

 

Ich habe schon lange das Problem, dass ich in unregelmäßigen Abständen Fehler bei meinem Multiplayer-Spiel bekomme. Die Fehlermeldung lautet wie folgt:

 

IndexOutOfRangeException: NetworkReader:ReadByte out of range:NetBuf sz:8 pos:8

 

Nach langen ermüdenden Suchen im Internet nach einer Lösung handelt es sich hier wohl um einen Internen Bug zu handeln. Es ist völlig egal ob ich im Code etwas ändere oder nicht. Wenn ich meinen Build erstelle ist die Chance 50/50 ob diese Fehlermeldung beim testen meines Spiels kommt oder nicht. Ich überschreibe weder OnSerialize() oder OnDerialize().

 

Der Fehler tritt immer dann auf, wenn ich mich mit einem Host verbinde und die Online-Szene geladen wird. Dabei wird das Playerobjekt gar nicht mehr erst geladen bzw erstellt.

 

 

So richtig reproduzierbar ist der Fehler jedoch nicht. Entweder er tritt in meinem Build auf oder nicht. Wenn ja, dann muss ich das ganze nochmal builden und hoffen dass der Fehler nicht mehr auftritt. Das ist wirklich richtig nervenaufreibend, besonders wenn man nur mal eben noch eine Kleinigkeit testen will. Ich musste gestern meinen Build 3x hintereinander erstellen damit es letzendlich geklappt hat.

 

 

Naja meine eigentliche Frage ist nun: Habt ihr auch Probleme mit diesem Bug? Oder gibt es da eine Lösung. Im englischen Unity-Forum wird immer vermutet dass es sich um einen Bug handelt. Jedoch existiert dieser schon seit Unity 5.0 also seit der Einführung von Unet. Warum tut sich dann nichts im Sinne von Bugfixes?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich habe das noch nie gehabt. Dabei arbeite ich mit UNet öfters.

 

Wäre cool, wenn du an den Titel NetworkReader out of range hängst. Hilft besser den Leuten beim Suchen (vor allem was Google angeht).

UNet Bug alleine kann ja alles mögliche sein.

 

Stimmt ist gemacht ;)

 

Mh ich habe echt keinen blassen Schimmer wo das her kommt

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 8 months later...

Die Exception wurde bei mir aufgrund unterschiedlicher Versionen geworfen.

Mein Mate hatte den Pull bei git vergessen, wodurch das Build eine ältere Version als meine Editor Version hatte.

Meine Editor Version hatte versucht eine SyncVar zu setzen, welche es in dem Build noch nicht gab.

Eventuell hilft dir das weiter.

Ist zwar schon einige Monate alt, aber vlt hilft es anderen Leuten.

Link zu diesem Kommentar
Auf anderen Seiten teilen

In einem englischen Thread schrieb jemand, man soll "SeekZero()" aufrufen, bevor man "ReadMessage" aufruft.

public void OnSetGroupState(NetworkMessage netMsg)
{
netMsg.reader.SeekZero();
PulseMessages.SetGroupStateMsg msg = netMsg.ReadMessage<PulseMessages.SetGroupStateMsg> ();

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich denke es geht davon aus, das der Pointer des Readers zu hochgezählt wird. Der Fehler entsteht durch einen fehlerhaften Arrayzugriff, wobei der Zähler über die Maximallänge des Buffers versucht zu lesen. Ein Zurücksetzen dieses Zählers bevor man von der Networkmessage liest, soll angeblich den Fehler verhindern, ob das allerdings stimmt, da bin ich überfragt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...