Separando el código de los datos

Algo que estamos teniendo mucho en cuenta a la hora de desarrollar el videojuego es tratar de separar todo lo posible el código de los datos. Esto quiere decir que la información de los niveles, las características de los personajes, el guión del juego, la configuración básica del sistema etc están en ficheros aparte.

¿Qué ventajas aporta? En primer lugar, si quisiéramos cambiar algún parámetro en la jugabilidad como la velocidad o energía de un enemigo no tendríamos que modificar el código fuente. Únicamente acudiríamos a su fichero y cambiaríamos dos números. La implicación directa es que no sufriremos recompilaciones del sistema si necesitamos modificar una tontería. Si cambiamos el fichero de sonido con la voz del narrador en una escena de historia, simplemente tenemos que cambiar el fichero correspondiente de manera que, la próxima vez que se ejecute el juego los cambios se verán reflejados.

Quizás en un videojuego de pequeñas dimensiones como el nuestro no se hace imprescindible pero si pensamos en una producción con algo más de envergadura sí lo es. En este caso los programadores no serían las mismas personas que los grafistas. Imaginad que Pepito es un diseñador y decide cambiar la secuencia de animaciones de un enemigo determinado. Si todo estuviera mezclado necesitaría acudir al código fuente y recompilar para ver el resultado, pero… ¡si el no sabe programar! En cambio, si los datos estuvieran separados del código, simplemente retoca el fichero con los datos del personaje y… ¡voilá¡

No todo iba a ser un viaje por las nubes, como pega aparece la necesidad de contar con un parser que se encargue de leer los ficheros con los datos. Nosotros hemos elegido XML para estructurar nuestros ficheros y hemos precisado de un parser preparado para procesar este tipo de estructuras jerárquicas.

Ejemplos de ficheros con información (no definitivos):

Guión del juego:

<scenes>
	<scene type="story" path="introduccion.xml" />
	<scene type="level" path="nivel1.tmx" />
	<scene type="story" path="intermedio.xml" />
	<scene type="level" path="nivel2.tmx" />
</scenes>

Configuración básica:

<configuracion>
	<pantalla ancho="960" alto="560" bpp="32"/>
	<fps valor="30"/>
</configuracion>

Esperemos que esta idea/enfoque le sea útil a alguien, para nosotros funciona.

Explore posts in the same categories: Programación

Etiquetas: , ,

You can comment below, or link to this permanent URL from your own site.

Deja un comentario