viernes, mayo 06, 2016

Sistema de entidades

Casi todo juego debe llevar una lista del estado de ciertas entidades: donde están, si las hemos tocado, si están vivas o muertas, y etc. Una entidad no es solo un NPC (como pensé ingenuamente al principio). Si has abierto un cofre y arramblado con todo su contenido, o dejado dentro de él esa maza de hierro que no vale medio para que no haga bulto en tu inventario, eso también hay que guardarlo, o cuando regreses del otro lado del mundo, el cofre tendrá los mismos objetos que ya te llevaste una vez.
Mi primer enfoque a este asunto, que como ya decía obviaba los cofres y similares, consistía en llevar una lista, o Dictionary más exactamente, con los NPC. Al salir de una escena desactivaba los GameObjects de los NPC, agregándolos a esta lista si no existían. Al cargar una escena revisaba la lista para reactivar los GameObjects necesarios, que volvían a la vida justo donde se habían quedado. El método era sencillo y funcionaba.
Sin embargo, resulta que en realidad la forma más común de implementar esto es ligeramente diferente, y no podía faltar, más compleja. El caso es que debemos guardar en disco el estado de las entidades al salir de la escena, pare recargarlo al regresar. Eso implica enredarse con serialización/deserialización de objetos un poco complicados, un trabajito que siempre he dejado para más tarde, o para que lo haga otro. En fin, no es que mi primera solución esté mal, sino que a la gente más experimentada no le gusta por cuestiones de consumo de memoria.
Así que ya saben la forma correcta de manejar su lista de entidades. Ya también saben una menso correcta, pero que funciona.

No hay comentarios:

Publicar un comentario en la entrada