top of page

Netcode-valkuilen: berichten die stilletjes verdwijnen

Foto van schrijver: Marcel Dütscher
Marcel Dütscher
21 jun
1 minuten om te lezen

Multiplayer-bugs zijn een soort apart genre: er crasht niets, er komt geen foutmelding in een log – er gebeurt gewoon niets. Twee van onze favoriete valkuilen uit onze eigen netwerkcode, als waarschuwing en ter vermaak.


Valkuil 1: het niet-geregistreerde bericht. Ons netwerkprotocol kent berichtklassen – “blok veranderd”, “speler bewogen”, “chat”. Elk nieuw berichttype moet bij de codec geregistreerd worden, zodat het een ID krijgt en geserialiseerd kan worden. Vergeet je dat, dan gebeurt het allerergste: de verzendaanroep mislukt, maar op een plek waar de fout stilletjes wordt weggeslikt. Geen crash, geen log – de functie “doet het gewoon niet”. We hebben dat meer dan eens zitten debuggen, tot de reflex erin zat: nieuwe berichtklasse? Eerste vraag: is hij geregistreerd?


Valkuil 2: het spookblok. Wanneer de server een blok verandert – bijvoorbeeld omdat een script het terrein hervormt – moet hij dat actief aan alle verbonden spelers melden. Vergeet je de broadcast, dan krijg je een spookblok: de server weet dat er een blok staat, de client toont lucht. De speler loopt tegen een onzichtbare muur – of erger, bouwt op een plek die aan de serverkant niet meer bestaat. Pas als je de chunk opnieuw laadt, staan beide werelden weer gelijk.


De gemene deler: in multiplayer zijn er altijd twee waarheden – die van de server en die van de client – en elke plek waar beide gelijk moeten blijven lopen is een potentiële valkuil. Ons antwoord waren tests die precies deze synchronisatie controleren, en checklists voor nieuwe berichten. Niet spectaculair, maar de spoken zijn sindsdien zeldzaam geworden.

Recente blogposts

Alles weergeven

Opmerkingen


Het is niet meer mogelijk om opmerkingen te plaatsen bij deze post. Neem contact op met de website-eigenaar voor meer info.
bottom of page