1 jun 2009

IceStorm cumple 1 año

Para aquellos que no lo sepan (quizá porque nunca dije nada de esto antes), IceStorm cumple hoy un año de desarrollo.

¿Qué es IceStorm y con qué se come? IceStorm es un motor gráfico para juegos en 2D hecho en C++ y SDL.

El proyecto empezó por allá en Febrero de 2007, cuando se me ocurrió hacer algún juego y LuiGGi, en aquel momento de Datafull, sugirió basarlo en C++ y SDL. Desde ese momento empezaron pruebas interminables para aprender tanto el lenguaje como diseño de clases y manejo de SDL. Un dolor de espalda, quizá LuiGGi todavía se acuerde lo que llevaba el debuggeo.

Fueron pruebas que duraron hasta Noviembre de 2007, que fue cuando finalmente pegué un diseño que mostraba imagenes en pantalla con un diseño Orientado a Objetos. Ahí empezó un prototipado más largo que cola de plan trabajar al cual llamé NGE (Nameless Graphics Engine - Motor Gráfico Sin Nombre) a falta de un nombre mejor. El motor gráfico permitía hacer varias cosas, incluso manejar juegos de plataformas.

Era más entretenido de lo que parece... pero el NGE sabía que tenía menos expectativa de vida que un indígena africano: aparte de ser un prototipo, mi nula experiencia en diseño de clases hizo que el código sea horrible en tres meses. Me dan dolores de cabeza cada vez que me acuerdo.

Por eso en Marzo del 2008 empezé a dibujar el diseño para lo que sería NGE 2.0, tratando de arreglar los problemas que se presentaron en el primero. Así fue como en Junio del 2008 empecé a escribir el código de NGE 2.0, que más adelante se pasaría a llamar IceStorm por idea de Eduman.

Un año largo para una lista de mejoras corta. El log de desarrollo es el siguiente (copy paste directo):

10-06-08: Primera ScreenShot

17-06-08: Los characters empiezan a tomar forma... también puede alinearse el texto, junto con otras estupideces menores. (Sí, me robé los characters de abajo del RPG Maker, el Matrix lo dibujé con una plantilla del RPGM)

28-06-08: Aparte de un par de mejoras, los textos están casi completamente implementados.

18-08-08: Primer demo que junta todo lo hecho hasta ahora. En el demo se maneja a un personaje con las flechas, se invocan a otros con los números, se matan con Supr y se cambian con Espacio (la cámara los sigue). Incluye una presentación utilizando Scenes (hechas la semana pasada), y tiene también instrucciones, apretando F1. Al morirse todos los personajes aparece el cartel de Game Over.

13-09-08: Ningún avance... se empezó el desarrollo del primer juego que usa el engine. Es un juego de BlackJack.
26-12-08: Me pudrió el BlackJackinator, los errores en el engine se hicieron evidentes. Se corrigieron unos problemas de diseños de clases.
28-12-08: Se empieza a implementar un nuevo modo de manejar las imagenes.
28-12-08: Se remodeló la forma en que se cargan las imágenes. Hay planes para eliminar la clase Templated.
29-12-08: Los Sprites ahora pueden mostrar partes ellos mismos con el nuevo diseño. Se empieza a preparar el diseño de las animaciones.
29-12-08: Las animaciones están terminadas.
06-01-09: El sistema básico para el texto está hecho. Se le quitó soporte al TTF, así que ahora es sólo texto bitmap.
15-01-09: El sistema de cinemática está hecho. A los objetos se les puede aplicar velocidad, aceleración y gravedad a gusto.
17-02-09: Funciona en Linux. También empiezo a separarlo en librerías.
18-02-09: Por fin hay colisiones. El White Paper de N+ ayudó.
19-02-09: Las colisiones están corregidas. También hay un nuevo prompt, para hacer logs en pantalla.
23-02-09: Hora de resolver el asunto de los eventos y el input.
10-04-09: Hasta ahora se implementó el XML para los Characters, y también se puso el sistema de Entidades, aunque un poco crudo todavía. Se instaló el SDL_gfx que me deja rotar y escalar las imágenes de una buena vez. Esto hace que tenga que cambiar la forma en que se manejan las animaciones. Ahora no se usa la Plantilla, se usan imagenes por separado.

14-04-09: Los Text ahora se benefician de los métodos de Renderable, o sea, pueden rotarse, escalarse, invertirse, y todos los procesamientos que agregue a Renderable de acá en adelante.
17-04-09: Nuevo sistema de Input. Se pueden controlar todas las teclas y eventos de mouse de forma mucho más sencilla.
Como ven, tiene más idas y vueltas que una mina. Que esto no anda, que hay que cambiarlo, que ahora anda perfecto, que a los dos meses se arruina el diseño... es entretenido.

A un año de la primer línea de código, IceStorm está bastante parado por falta de tiempo y paciencia. El sistema de físicas se volvió a arruinar, así que hay que ponerle más tiempo. En cuanto lo tenga, seguiremos la transmisión.

No hay comentarios: