sábado, 17 de enero de 2009

Por fin un DLL de GameginePhysx

Comenzaba a pensar que este día no llegaría... Pero aquí estamos, el primer DLL de GameginePhysx...

Gamegine + Physx

Ahora viene una parte muy interesante, además de una mejora. He estado pensando un poco alrespecto y me doy cuenta de que, una vez terminada la simulación en Physx, Gamegine necesita enterarse de los cambios. He estado tratando de encontrar la forma más óptima para llevar esto a cabo, y creo que he encontrado una muy buena; consiste en lo siguiente:

1. En GameginePhysx, actualmente tenemos una colección de actores (linkeados a objetos en Gamegine). Esta colección actualmente está representada por un vector. Lo pensé de esta manera para ganar un buen rendimiento al momento de las actualizaciones, pero ahora veo que pierdo dicho rendimiento pues en muchas ocasiones necesito actualizar el estado de los actores y solamente dispongo de su nombre. Por esta razón, la colección la cambiaré a un mapa; de esta manera, podré localizar actores con mucha más eficiencia.

2. Como los actores estarán en un mapa, necesito un mecanismo eficaz para recorrer la colección durante una actualización; razón por la cual crearé una segunda colección basada en un vector. En este vector, estarán únicamente los actores que sean dinámicos y aquellos que no estén "durmiendo", por lo que el proceso será eficiente. Para lograrlo, GameginePhysx necesitará llevar un control interno de los actores, sus tipos y sus estados.

3. Al finalizar cada simulación, GameginePhysx se encargará de actualizar el estado en Gamegine para cada uno de los actores en el vector de actores por actualizar.

Así que, nos vemos en otro rato...

.

jueves, 15 de enero de 2009

Gamegine + Physx compilacion... ya perdí la cuenta...

Increíble pero cierto. No he terminado de compilar GameginePhysx...

Gamegine + Physx

Calculo que habré terminado para este fin de semana y entonces comenzaré con la implementación dentro de Gamegine. Aún me hace falta escriir código para la creación de elementos dinámicamente.

Mi idea es que en el archivo que define un escenario también haya información de sus características físicas; de tal manera que sea posible para Gamegine detectar un driver de física y crear los elementos necesarios de forma automática.

Por ejemplo, en el archivo de escenario de un juego habrá la siguiente definición:

<node name="Rock" id="0"> 
<position x="0" y="0" z="0" />
  <rotation qx="0" qy="0" qz="0" qw="1" />
<scale x="1" y="1" z="1" />
  <actor name="RockActor">
    <body mass="10" />
    <shapes>
      <box>
        <dimensions x="15" y="10" z="9" />
      box>
    shapes>
  actor>
node>

De esta manera, Gamegine podrá determinar las características físicas del objeto y crear los elementos que sean necesarios.

Gamegine ya puede levantar una escena desde un archivo xml, pero pues hace falta el codigo que interprete precisamente la parte de física...

.

martes, 6 de enero de 2009

Gamegine + Physx primera compilacion

Billy me ha malacostumbrado. En serio, rara vez vemos una cantidad tan inhumana de errores de compilación en un programa hecho en .Net. Si señores, C++ no es .Net, en términos generales.

El caso es que hoy, por fin, pude compilar el proyecto GameginePhysx y miren nada más la cantidad de errores por resolver:


1a compilación de GameginePhysx


Me esperaba unos mil, pero casi tres mil! Creo que estaré en esta etapa un buen rato más...

.

sábado, 3 de enero de 2009

Gamegine 0.3 en proceso

El segundo aniversario de Gamegine se acerca. No, no se vale revisar post viejos. ¿No lo recuerdan? Ahí les va, 18 de Marzo de 2007 Gamegine vió la luz. Ha pasado mucho desde entonces, y lo que mas esperamos no pasa.

Que tragedia...

Gamegine llega a su segundo año de desarrollo y aún no lo publico. No intento disculparme, yo mismo me he convencido de muchas cosas estos días, y una de ellas es que este proyecto me ha traído tantas emociones... Es como mi hijo más querido. De hecho, lo es. Hace unos meses me preguntaba si tendría sentido continuar con él. Me refiero a que, en la actualidad, hay muchos motores para el desarrollo de juegos. Muchos de ellos son gratuitos, incluso. Cosas así han rondado en mi cabeza desde hace un año, me atormentan... Luego recuerdo la idea original. De los motores que conozco, ninguno la tiene. Igual y estoy equivocado... Gamegine es un framework!!

Ya algunas veces he intentado explicar la diferencia, por lo que no entraré en detalles. Lo que sí será justo mencionar es que, aunque la idea principal se mantiene, ha habido algunos cambios en su estructura. Ya les platicaré de esto más adelante.

Y a todas estas, ¿que onda con Gamegine? Recientemente inicié el desarrollo de su versión 0.3. Esta, además de algunos cambios estructurales, implementa un dispositivo para control de física. Misma idea: un dispositivo controlable por cualquier motor de física en el mercado. En estos momentos estoy escribiendo un controlador basado en Physx, el cual creo es unos de los más poderosos. Lo mejor es que, bajo ciertas circunstancias, es gratuito.

Gamegine + Physx

Sobre proyectos con Gamegine, hay uno en puerta; razón por la cual me ví en la necesidad de comenzar la implementación de un dispositivo de física.

Como siempre, más noticias pronto, demos y código.

.

viernes, 17 de octubre de 2008

Gamegine y el linker se encuentran de nuevo

Me encontraba compilando Gamegine, después de meses de no trabajar en él. Me sentía como un extraño en mi propio código. Siempre me sucede algo parecido, ¿saben? Todos los días trabajo en diferentes proyectos, siempre uno de ellos es EL proyecto a desarrollar y los otros son nuevas ideas, experimentos, soporte a otros programadores, etc; y al final del día esta Gamegine y todos los proyectos con los que este trabaja. El caso es que siempre ando olvidando cosas que ya desarrollé y cómo las desarrolle. Al principio me llegó a preocupar bastante, pero como diria mi amigo Wilbert: "es una prueba de que sigo siendo humano".
El caso es que, compilaba Gamegine porque mejoré algunos aspectos del engine. Siempre estoy tratando de mejorar las cosas. Pero esta vez, después de tanto tiempo, cuando superé la compilación del proyecto, me encontré cruzando los dedos para que no hubiese problemas a la hora del link. Wow! si hubiesen visto cuantos errores me arrojó tras la primer compilación que le hice al proyecto, hace ya mucho tiempo de eso (¿como un año no?) Creo que me llevó como 2 semanas dejar el proyecto sin errores y luego otra más depurandolo para que no tronara en tiempo de ejecución.
.

Tras el último mensaje, sentí un alivio similar al de la primera ocasión. Como me encanta ete proyecto. En la oficina no dejo de hablar de esta o aquella nueva funcionalidad y bla bla bla bla...

Gamegine ha sido uno de los proyectos que más satisfacciones me han dado en esta mi vida geek, así que tengan por seguro que seguirá adelante. Esta vez un poco más tranquilo y mejor estructurado. Verán, trabajé más de un año para poder compilar el proyecto la primera vez. Para algunos será demasiado tiempo, pero si toman en cuenta que lo estoy desarrollando en mis tiempos libres, para mí es un gran logro. Por ratos me sentí tan desesperado por liberar algo, y aunque aún no lo he hecho, me digo a mi mismo: "mi mismo, llévatela tranquilo y libera cuando tengas que hacerlo". Digo, les funcionó a los de Silicon Knights, por qué conmigo seria diferente...

.

miércoles, 10 de septiembre de 2008

gamegine sigue en pie, nada mas dormido

Nada nuevo por aquí. En realidad me ví obligado a abandonar este proyecto por un tiempo, ya que mi vida personal se estaba haciendo pedazos. Pero ya vamos para arriba de nuevo y les tendré al tanto de lo que ocurra con este proyecto, el cual no ha muerto. No señor, está vivo, nada más que algo dormido.


Esperen noticias pronto. Gracias por visitarnos.

Un abrazo.

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.

.