Mostrando las entradas con la etiqueta gamegine. Mostrar todas las entradas
Mostrando las entradas con la etiqueta gamegine. Mostrar todas las entradas

jueves, 1 de mayo de 2008

Parte 2: JUN, el diseño del juego

Ha pasado mucho tiempo desde que inicié el desarrollo de este Tutorial. Me han de perdonar esta ausencia, y es que han pasado muchas cosas en estos días y me he visto en la terrible necesidad de meter muchos de mis proyectos a un cajón, en espera de una portunidad de continuar con su desarrollo.

Precisamente ahora, mi calendario de trabajo personal está hecho un caos y no se bien lo que estaré haciendo durante los próximos días, pero mientras mi vida entra en balance nuevamente, decidí continuar con el desarrollo de este juego. Espero a algunos de ustedes les sea de utilidad esta información.

Ahora si, pasemos a lo bueno de este post: el documento de diseño de un videojuego.

Mucho de habla de esta parte del proceso. Muchos han de decir que es una pérdida de tiempo, pero les aseguro que es extremadamente importante, sobre todo si se trabaja e equipo. A lo largo de su vida profesional, se darán cuenta que el trabajo en equipo es extremadamente funcional, si se sabe aplicar correctamente. Incluso ahora, las grandes compañías de desarrollo, no solo de videojuegos, están compuestas por equipos enormes, que se reparten el trabajo de una manera optimizada y funcional.

Podemos decir, como se escucha en algunos lugares, que el documento de diseño de un videojuego es el alma misma del juego, o la biblia del juego. Aquí se detallan los elementos más importantes del juego, sin llegar al nivel técnico, para el cual se desarrolla otro documento (el documento de técnico de un juego).

Para este juego, he desarrollado un breve documento de diseño, que explica muy brevemente los factores más importantes de JUN. Es importante que no me tomen cada palabra como una regla, sino que investiguen por su cuenta y tomen mi trabajo como una rferencia más para aprender de ustedes mismos. Se darán cuenta, con el tiempo, que el mejor maestro es la experiencia.

Por otro lado, no crean que tengo una gran experiencia en esta parte del proceso. Creo que son muy pocas las personas a las que les gusta esta parte, pero créame que vale la pena el esfuerzo.

En mi trabajo diario, me ha tocado documentar muchas partes de la plataforma de desarrollo de aplicaciones que utilizamos. He escrito muchos manuales de usuario y de procedimientos, así como videos que explican las técnicas más eficientes para la elaboración de formularios ycatálogos en línea; y cada vez que m encuentro ante Word, con muchas líneas de texto por escribir y detalles que explicar, tengo que ir a tomarme una buena taza de café, pues esta parte puede resultar extremadamente aburrida, pero mucho más importante de lo que parece.

Ahora si, ¿que debemos encontrar en este documento? Fácil, una descrpción de cada elemento del juego. Dsde las pantallas, la lógica, la inteligencia artificial, etc. ¿Recuerdan el artículo que les mencioné en la primera parte? también me he basado en ellos para desarrollar nuestro documento de diseño. Les recuerdo la liga para que le echen un vistazo:

Link: [inglés] Tim Ryan's "The Anatomy of a Design Document"

Por otro lado, también he subido al grupo en google (¿les mencioné que di de alta un grupo en google?) el documento de diseño para JUN.

Link: JUN- Game Design

Les prometo que muy pronto estaré pulicando lo más interesante del juego: como se programa el juego. Por ahora, déjenme darles un adelanto, los siguientes post dividirán el desarrollo en dos fases: el desarrollo de la lógica del juego (incluyendo la inteligencia artificial) y el desarrollo gráfico del juego.

Nos vemos muy pronto.

.

viernes, 22 de febrero de 2008

Parte 1: Jun, el concepto del juego

He estado pensando al respecto y creo que me he apresurado un poco en el desarrollo de este tutorial. No se que piensen ustedes de esto, pero creo que para ser un "curso" completo, debemos tocar cada uno de los puntos que intervienen en el desarrollo de un videojuego a nivel profesional. Así que volvamos a comenzar desde el principio: con el concepto del juego.

Todo videojuego debe comenzar con una idea, lo que podemos llamar como el "concepto" del juego. Será necesario documentar esta idea para poder vender el proyecto a un publicista, productor o persona afín. Podrá parecer una perdida de tiempo, pero créanme, en las grandes ligas, esta parte del diseño de videojuegos resulta muy importante.

Este documento debe ser muy breve, claro y extremadamente atractivo. Piensen en él como la carta de presentación de su proyecto. Si el día de mañana alguno de sus proyectos pudiese entrar a un concurso o recibieran la entrevista de algún productor, este documento es lo primero que necesitarán presentar. Es nuestra carta fuerte, así que como tal habrá que redactarlo.

Los puntos más importantes a mencionar en este documento son los siguientes:

* ¿cual es el objetivo del juego?
* ¿que lo hace tan atractivo?
* ¿cuales son sus características mas importantes?

Para desarrollar nuestro juego JUN, he escrito un breve documento sobre el concepto del juego. Este documento, dicho sea de paso, esta basado en una guía escrita por Tim Ryan para Gamasutra, en donde podrán encontrar información mas detallada sobre este importante procedimiento:

Tim Ryan's "The Anatomy of a Design Document"


Puedes obtener una versión del documento del concepto del juego en la siguiente liga:

JUN: Game Concept


.

JUN, iniciando el proceso de diseño

Siguiendo con la idea del videojuego, vamos a comenzar por lo basico: el analisis del problema.

Este juego consta de 108 cartas (mas las especiales que no forman parte del juego convencional), organizadas de la siguiente manera:

Cartas azules:
0 x1
1-9 x2
Toma 2 x2
Reversa x2
Salto x2


Cartas rojas:
0 x1
1-9 x2
Toma 2 x2
Reversa x2
Salto x2


Cartas verdes:
0 x1
1-9 x2
Toma 2 x2
Reversa x2
Salto x2


Cartas amarillas:
0 x1
1-9 x2
Toma 2 x2
Reversa x2
Salto x2


Cartas sin color (multicolor):
Comodin x4
Toma 4 x4


Las reglas del juego son muy sencillas, pero tienen diversas especificaciones, razon por la cual solo mencionare las mas importantes. Pueden visitar el sitio UNO en Wikipedia para conocer mas detalles y variantes del juego.

Para manejar esto, tenemos que definir estas caracteristicas de una forma simple y que nos permita manipular las cartas de forma eficiente, por lo que nos iremos por el camino sencillo y vamos a manejarlo con enumerados.

De la misma forma, necesitamos definir una "Carta" dentro del juego, que especifique las caracterisitcas descritas y que nos permita manipular el flujo del juego a placer y con suma sencilles.

Tambien vamos a necesitar crear pilas de cartas, que nos permitan controlar las jugadas en mano, cartas jugadas y cartas por jugar.

Veo que tengo algunos problemas para poner contenido de codigo en este template, por lo que he de solucionarlo hoy en la noche y comenzare a postear el codigo del juego como va hasta el momento.

Nos vemos pronto.

.

miércoles, 20 de febrero de 2008

Gamegine, ahora con un sistema de GUI

Mas silencio por aqui, pero no se crean, he estado trabajando en el Gamegine.

Ahora que me encuentro planeando el primer juego que empleara el Gamegine Development Framework, me he topado con un problema: no habia manera de definir una interfaz grafica. Claro, hay muchas opciones aqui en la red, pero ninguna que se ajuste a las necesidades del framework; sin embargo, una de ellas se aproxima lo suficiente. Se trata del framework CEGUI (Crazy Eddie's GUI System) que es utilizado en casi todos los demos de Ogre. En realidad es muy bueno, y configurable, y no resulto muy dificil construir algo para el. De hecho, el systema, aunque un poco complicado, ha quedado muy facil de implementar.

Por otro lado, hacia falta tambien un mecanismo para definir menus. Hay dos tipos, en terminos generales, de menus que podemos ver en un juego: estan los menus de configuracion y los menus dentro del juego. Los primeros son empleados en gran medida para definir las caracterisitcas del juego, cargar niveles, etc. Los segundos son elementos que se encuentran activos mientras estas jugando, como por ejemplo: un menu de armas, hechizos, etc.

Pero bueno bueno, y esto que tiene que ver con el juego? Facil, necesitamos menus para el juego. Este primer juego, como se han de imaginar, es uno muy sencillo que, segun veamos como le va, podriamos hacer mas completo. Este juego no utilizara fisica, que es una caracteristica que aun no he terminado de implementar en el framework.

Vamos a lo importante, a partir de mañana comenzare a trabajar en la parte artistica del juego y comenzare a postear detalles de la logica y objetivos del mismo, a la vez que liberamos contenido y codigo.

Hasta entonces, espero verlos muy pronto por estos lugares.

.

jueves, 20 de diciembre de 2007

Demo: Water

Otro demo mas a la cuenta. En esta ocasión se trata de un simulador de superficies, escrito para Ogre, en el cual podemos observar algunas características interesantes de este motor de gráficos.



Water ( Gamegine + Ogre)

Por otra parte, me he dado a la tarea de rediseñar el pipeline de ejecución del framework. Ahora, en Gamegine, es posible trabajar con un GameController predefinido o escribir el propio e implementarlo en tu aplicación. Un GameController, como su nombre lo indica, controla el programa, o dicho de mejor forma, controla el flujo del programa. Es importante hacer notar que el framework está diseñado para que ustedes mismos armen su motor de la manera que ustedes prefieran, o simplemente usar los controladores básicos.

Hoy vamos a hablar del pipeline de ejecución. Este, no es otra cosa que una colección de objetos que se ejecutan secuencialmente, siendo que al terminar la ejecución del último elemento en la lista se termina la aplicación. Más adelante hablaremos de como cambiar este comportamiento, por ahora nos centraremos en definir un GameHandler. Este es, en palabras sencillas, un elemento dentro del pipeline (cola) de ejecución. Un handler puede ser cualquier cosa que ustedes deseen implementar, siendo su representación más natural un objeto de tipo GameLevel. Este último es el elemento a implementar si queremos agregar algo a nuestros programas. En próximos tutoriales veremos más información sobre estos elementos del framework.

.