top of page

Todo bloque es sólido… salvo cuando no lo es

Foto del escritor: Marcel Dütscher
Marcel Dütscher
22 jun
2 min de lectura

Nuestro mesher del cliente tiene una regla de hierro: todo bloque que no sea aire se renderiza y tiene colisión. Punto. Esta simplificación hace que el mallado sea rápido y el código sencillo… hasta que llega una función que quiere romper justo esa regla.


La puerta de energía. Para nuestras vallas de energía queríamos una puerta: una membrana resplandeciente que los jugadores y los NPC amistosos pueden atravesar sin más, pero los animales salvajes no. Es decir, un bloque que se ve, pero que para algunos no es una pared. Justo lo que nuestra arquitectura no contemplaba.


La solución tiene dos mitades. En el cliente, el mesher recibió su primera excepción deliberada: el bloque de la puerta se renderiza, pero queda fuera de la malla de colisión, así que los jugadores simplemente lo atraviesan. En el servidor corre la lógica de verdad: los sistemas de movimiento de las criaturas comprueban a cada paso si hay una barrera de energía en el camino. Los animales salvajes y los enemigos dan media vuelta; los compañeros y los jugadores pasan. Esta comprobación tuvo que ir en los tres sistemas de movimiento (animales salvajes, compañeros, enemigos planetarios); si no, algún tipo de criatura no habría «conocido» la puerta.


La nota al pie honesta: las criaturas voladoras pasan planeando por encima de la valla. No es un bug, sino una limitación documentada: una valla, sencillamente, no detiene nada que vuele. Preferimos dejar por escrito este tipo de huecos deliberados antes que esconderlos.


Lo que queda: las reglas de arquitectura como «todo lo que no es aire es sólido» son valiosas porque son simples. Pero conviene saber dónde vive esa única excepción, y por qué vive ahí.

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