Sistemas de entidades y objetos

Aunque me había planificado un alto de varios días, al final volví al desarrollo luego de una parada breve para cacharrear con Blender. O tal vez debería decir que me vi obligado a cacharrear Blender para poder poner a prueba ciertas ideas que tenía.

En concreto, el primer tema que estoy trabajando es el sistema de entidades, en este caso una entidad es un personaje del juego, ya sea NPC o jugador. Como Urho3D no es Unity3D, parece que la solución pasa por un sistema doble basado en una lista de características y marcadores creados desde el editor. La lista detalla elementos visuales y de mecánica de juego: por ejemplo la lista de animaciones, tipo de IA, etc. El marcador es una forma de facilitar la ubicación en el escenario de las entidades y contiene un mínimo de información: como el nombre del NPC, utlizando para ello las variables que se pueden asignar a un nodo en Urho3D. En Unity3D esto lo resolveríamos asignando un script al GameObject, pero no he logrado replicar ese comportamiento. Sí, Urho me permite asignar un ScriptInstance, pero no consigo pasarle un parámetro útil.

Ayer en la noche trabajé un rato en esto, pero aún no hay un resultado concreto. Falta poner mucho código y limar montones de detalles, sobre todo en el proceso de crear las entidades y en definir qué información va en la lista y cuál puedo poner en el nodo. Una regla básica sería: si es genérico, va en la lista, si es específico, va en el nodo marcador.

El sistema de objetos hereda mucho de un diseño anterior. Estoy en proceso de contrastarlo con otras ideas en internet, pero en esencia utiliza un método similar al anterior: una lista de definiciones y una instancia del objeto en el inventario del jugador. Aquí sucede lo mismo: me cuesta decidir qué dejar en la lista para evitar información duplicada. Este es una parte complicada, porque si bien todas las entidades son iguales, los objetos varían mucho: no es lo mismo una espada que una poción.

Es un buen momento para tratar de mejorar mi anterior enfoque del sistema de propiedades de los items, que funciona, pero quisiera que fuera un poco más óptimo si es posible. La idea actual se basa en que cada objeto tenga una lista de propiedades (daño, defensa, bonificación, penalización, regeneración, etc), pero acceder a esa lista podría ser lento y hay que considerar que en medio de un combate habrá un uso intensivo de objetos. Ni idea de cómo esto podría afectar el rendimiento y por eso prefiero pecar por exceso y no por defecto, no sea que acabe con unos requisitos mínimos comparables al último Call of Duty.

El asunto de equipar los items, o sea, hacerlos visibles, no es nada complicado. Cada objeto equipable tiene un punto de anclaje: un hueso del esqueleto del personaje; aquí es posible que sean necesarios huesos auxiliares en los modelos. Lo trabajoso es encontrar la escala, rotación y desplazamiento adecuados para cada modelo de objeto. Nada que no haya implementado antes con Ogre3d,  y de hecho, ya conseguí una sencilla prueba de concepto en Urho.

No me atrevo a hacer predicciones acerca de cuándo estará listo esto, pero es uno de los detalles que deberían liquidarse antes de pasar al sistema de combate, el último milestone antes del trailer. Sí, porque tendremos un trailer y todo (con su música exclusiva, que ya está lista), pero de eso hablaré luego.

3 thoughts on “Sistemas de entidades y objetos

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *