top of page

Trampas del netcode: mensajes que desaparecen sin hacer ruido

Foto del escritor: Marcel Dütscher
Marcel Dütscher
21 jun
1 min de lectura

Los bugs del multijugador son una especie aparte: nada se bloquea, nada registra un error, simplemente no pasa nada. Dos de nuestras trampas favoritas de nuestro propio código de red, como advertencia y como entretenimiento.


Trampa 1: el mensaje sin registrar. Nuestro protocolo de red conoce clases de mensajes: «bloque cambiado», «jugador movido», «chat». Cada tipo de mensaje nuevo tiene que registrarse en el códec para que reciba un ID y se pueda serializar. Si se te olvida, pasa lo peor que puede pasar: la llamada de envío falla, pero en un punto donde el error se traga en silencio. Ni cierre, ni registro: la función «simplemente no funciona». Depuramos eso más de una vez, hasta que el reflejo se nos quedó grabado: ¿clase de mensaje nueva? Primera pregunta: ¿está registrada?


Trampa 2: el bloque fantasma. Cuando el servidor cambia un bloque (por ejemplo, porque un script está remodelando el terreno), tiene que avisar activamente a todos los jugadores conectados. Si se te olvida ese aviso, aparece un bloque fantasma: el servidor sabe que ahí hay un bloque y el cliente muestra aire. El jugador choca contra una pared invisible o, peor aún, construye en un sitio que en el servidor ya ni existe. Solo recargar el chunk vuelve a poner de acuerdo a los dos mundos.


El denominador común: en el multijugador siempre hay dos verdades, la del servidor y la del cliente, y cada punto que tiene que mantenerlas sincronizadas es una trampa en potencia. Nuestra respuesta fueron pruebas que comprueban justo esa sincronización y listas de verificación para los mensajes nuevos. Nada espectacular, pero desde entonces los fantasmas se han vuelto raros.

Entradas recientes

Ver todo

Comentarios


Ya no es posible comentar esta entrada. Contacta al propietario del sitio para obtener más información.
bottom of page