sábado, 3 de abril de 2010

Gamegine 0.4, sin errores de compilación

Seis días me ha tomado depurar Gamegine 0.4.

Por más de mi experiencia en los varios compiladores que utilizo, por más de mis conocimientos de ingeniería y arquitectura de sistemas, por más de las doce o cartorce horas que paso pegado a la computadora todos los días; hay cosas que simplemente no he logrado mejorar, como compilaciones limpias en C++. El lenguaje es a todo dar, es mi favorito, pero es de esos que te hacen sufrir. Supongo que en parte es por eso que me gusta tanto...

En fin, logré compilar ya la versión 0.4 de Gamegine. Ahora sigue actualizar las librerías que tenemos disponibles. Por ahora: Gamegine+OIS, Gamegine+CEGUI, Gamegine+FMOD y Gamegine+Physx.

Estoy considerando sacar el blog de aquí y llevarlo a mi sitio en Zeion (aún en construcción), pero les aviso en caso de que lo lleve a cabo.

Gamegine 0.4 finalmente sin errores en tiempo de compilación.
.

sábado, 27 de marzo de 2010

Gamegine 0.4, primer build

¿Hay alguien por aquí?

Hace unas semanas saqué a Gamegine del cajón. Comencé a traajar un viernes hasta el amanecer y tres o cuatro días después le regalé otras dos horas al proyecto y varios días después otras. El caso es que, poco a poco, Gamegine va tomando forma e importancia de nuevo.

Tengo mucho que hacer, mucho que contar. Pero será para otras entradas del blog. Mientras tanto, les dejo con el primer build de la versión 0.4.



3,581 errores de compilación, tal parece que me voy a divertir un buen rato...

.

sábado, 21 de noviembre de 2009

como el fénix

Increible, pero cierto. Este proyecto casi ha muerto, pero no, no lo logró. Sigue vivo en mi mente y en mis entrañas. ¿Entonces que sigue? Levantarlo, seguir caminando y llegar al "Release Candidate" y de ahí ya platicaremos...

.

sábado, 4 de abril de 2009

Implementando diálogos para mensajes

Me he topado con un problema durante el desarrollo de BrainRush, puesto que necesito desplegar información al usuario a manera de diálogos con mensajes. Algo muy simple en realidad.

Una alternativa es crear un formulario y utilizarlo cada vez que necesite desplegar un mensaje. La otra, crear un mecanismo en Gamegine para desplegar diálogos. Como se imaginan, opté por la segunda, puesto que eso de mostrar mensajes no es algo que ocurra únicamente en BrainRush, sino en cualquier juego a desarrollar.

El caso es que desarrollé este mecanismo (según yo, sencillo) y me encontré con una serie de complicaciones en el camino; sin embargo, creo que ha quedado lo suficientemente funcional.

GamegineCEGUI fué el encargado de llevar a cabo el truco, y consta de una clase que tiene una pila de mensajes por mostrar, junto con información relacionada a la instancia que solicitó se desplegara el mensaje. Lo que ocurre, entonces, es que GamegineCEGUI irá mostrando los mensajes uno a uno y destruirá el diálogo hasta que la pila se encuentre vacía.

Implmentando MessageDialog con Gamegine

Y ha quedado muy fácil de implementar, lo único que tienes que hacer es llamar a la siguiente rutina:

GUI::Dialogs::MessageDialog::show( _Form, "This is a message dialog!", "A dialog title..." );

.

lunes, 30 de marzo de 2009

Elementos básicos con CEGUI

He estado trabajando estos días para extender la funcionalidad de GamegineCEGUI, aunque debo aceptar que es un trabajo que requerirá muchos días (o semanas) para que implemente todas las funcionalidades que nos ofrece CEGUI.

Por ahora, he terminado de implementar wrappers para: Label, TextBox, Button, RadioButton, CheckBox y ComboBox. Ha quedado todo muy bien y fácil de utilizar.

Elementos básicos en Gamegine + CEGUI

El problema que tengo ahora es uno a nivel de Link al momento de definir los eventos para los controles. Hay 2 formas de lograr eso: la primera es mediante objetos que hereden de la clase Event, MouseEvent, etc; el segundo es utilizando EventListeners, que son clases especializadas (templates). Con estos últimos, asignar un evento a un control será cosa de niños. Solo falta resolver ese problema...

Sin embargo, todo este trabajo nos da la posibilidad de crear interfaces sencillas y tremendamente funcionales, como la que estoy diseñando para BrainRush! (nombre provisional), un juego experimental en el que estaré trabajando las siguientes semanas. Les confieso que llevo apenas unas horas trabajando en el proyecto y me siento emocionado... Esto me permitirá dejar el framework a punto.

Les comparto el boceto que hice para el menú principal del juego:

 
BrainRush!, boceto del menú principal


.

miércoles, 18 de marzo de 2009

Gamegine + CEGUI

Finalmente, una versión compilable de GamegineCEGUI, un wrapper que nos ha de permitir crear entornos gráficos con suma facilidad. Aunque por ahora solo se puede crear etiquetas... Cuando menos, la funcionalidad ya está terminada, lo que sigue es la talacha de implementar los componentes y propiedades que nos ofrece CEGUI.

Demo: Hello world!

He quedado bastante satisfecho con la forma en la que se crean los controles. Es muy sencillo realizarlo y más aún cargarlos de un archivo de template creado con el editor de CEGUI.

Por ejemplo, para crear una hoja con controles, será necesario crear un formulario (muy a la Microsoft):
Form* form = GameGUIDevice::getSingleton().createForm("Demo");

Posteriormente, crearemos los controles basándonos en esta plantilla:
Label* lbl = form->createLabel( "Label" );
lbl->setText( "Hello world!" );

Y, finalmente, desplegamos el formulario en pantalla:
form->load();

El resultado es el que vemos en el screenshot mas arriba :D

Por otro lado, en un mes aproximadamente se vence el dominio gamegine.net, por lo que tengo que decidir si pago otro año más con él, o cambio el dominio a gamegine.org.

Se aceptan ideas...

.

domingo, 15 de marzo de 2009

GUI Device en el horno

¿Que se cocina en el horno? Se preguntan. Se trata de un dispositivo para el control de interfaces gráficas. Quienes hayan trabajado con algún IDE (como .Net, por ejemplo) se preguntarán: "¿Para qué? Si puedes crear interfaces fácil y rápido con mi Visual Studio". La respuesta es: Gamegine, al igual que sus componentes, debe permanecer como un framework multiplataforma. De ahí nace la necesidad de implementar un mecanismo de interfaces gráficas.

Hay muchos en el mercado, y no todos son gratuitos. La idea aquí, como en otras cuestiones, es permitirte trabajar con un dispositivo y luego  cambiar a otro sin tener que reescribir toda tu aplicación. Aquí es en donde entra Gamegine en escena.

Por ahora, estoy trabajando con Crazy Eddie's GUI System (CEGUI) que me parece muy bueno, aunque un tanto difícil de acostumbrarse a su modo de trabajar.

En fin, falta mucho trabajo en este dispositivo (como en todos los otros), pero poco a poco irán creciendo y madurando. Mientras tanto, deben existir para permitirnos crear juegos con facilidad.

.