Burdjia

Etiqueta Pascal, 19 entrada(s)

Feed Rss, Atom

Mañana, PGD 3rd Challenge

Mañana comienza el PGD 3rd Challenge, y de nuevo tengo pensado participar.  Intentaré hacerle un seguimiento similar al que hice en el primero con Duke of Dragonfear.  Por Twitter hemos creado (como si fuera difícil...) el hashtag #PGDchallenge, en el que un par de participantes iremos haciendo comentarios.

Para esta ocasión, la preparación ha ido más enfilada hacia la inteligencia artificial. No es que lo hiciera mal en anteriores ocasiones, pero me he estado leyendo Programming Game AI by Example y siempre hay algo que mejorar.  No me da tiempo a preparar todo lo que quisiera, pero por ahora será suficiente.

Ya os iré informando.

Amazing Tetris usa Allegro.pas

Hay pocas cosas que den más satisfacción que saber que tu trabajo les ha servido a otros para hacer el suyo.  Y esto es lo que he sabido hace no mucho.

Todos sabéis (o deberíais) que he trabajado mucho en Allegro.pas, que permite utilizar la biblioteca para desarrollo de videojuegos Allegro con Pascal.  Pues bien, a finales de 2011, un grupo de estudiantes alemanes de Ciencias de la Computación, decidieron hacer un clon de Tetris como proyecto, y usaron Allegro.pas.  Como resultado no sólo realizaron el juego sino que escribieron un lector de archivos de sonido OGG/Vorbis que poder usar junto con Allegro, y que está disponible como extensión (add-on) en la última versión.  Finalmente, y tras haber aprobado, el juego se encuentra disponible en la página web de uno de los desarrolladores, y podéis descargároslo desde esta página.  Que lo disfrutéis.

Allegro.pas 5.0 alpha 1

Después de este hiatus ocasionado por problemas técnicos, vuelvo a la carga.

La semana pasada decidí publicar el estado actual de la versión 5 de Allegro.pas.  Todavía está muy verde, pero es bastante más estable que cuando lo utilicé para mi entrada del 2nd. PGD Challenge.  Tanto es así que estoy pensando en publicar una versión precompilada del juego, algo que no pude hacer en su momento.

Este Allegro.pas 5.0 Alpha 1 tiene las siguientes características:

Hay que tener en cuenta que todavía está en desarrollo, por lo que hay cosas de la biblioteca Allegro que todavía no soporta, y tampoco incluye la documentación completa.  Aun así, si quieres probarla puedes descargarte el paquete en este enlace.

Nuevo sitio Allegro.pas

Con un mes de retraso, informo que publiqué una nueva versión de Allegro.pas, la 4.4.4.

Y hoy mismo he terminado y subido la nueva web del proyecto.  Esta está adaptada mejor a las mejoras realizadas por SourceForge en sus servicios, por lo que ya no usará GesBit.

La nueva web está realizada, en parte, con Ágora, pero con una nueva versión reescrita desde cero.  Esta nueva versión sí es realmente simple (admito que hasta ahora no era tan simple como pretendía, sino todo lo contrario); de hecho ocupa únicamente un archivo de apenas 12KiB.  Todavía no la he hecho pública porque he querido ponerla a prueba.  En cuanto tenga unos pocos ejemplos para documentar su uso, la publicaré y comenzaré la necesaria reforma de Burdjia.com.

Evaluación Momen 3D

Hace ya como un mes que terminó el 2nd PGD Challenge (perdón por no avisar) y creo que va siendo hora de hacer una evaluación de mi proyecto Momen3D.  No será, esta, una exposición rigurosa, pero espero que sí suficiente.

Preparación

Como en otros concursos de este tipo, este tiene dos tipos de normas:  las globales y las específicas.

Las normas globales son conocidas en todo momento y aluden a conceptos como, por ejemplo, la extensión o tamaño del juego, los lenguajes de programación y herramientas que pueden usarse, los plazos del concurso, etc.

Las normas específicas, sin embargo, son conocidas únicamente el mismo día en el que comienza el concurso.  Esto se hace así para evitar que haya concursantes que jueguen con ventaja.  Estas normas suelen referirse a temas de estilo y técnica, y suelen limitar el tipo de juego que puede realizarse.

Puesto que me mi intención era usar este concurso para poner a prueba la nueva versión que estoy realizando de Allegro.pas, decidí jugármela y comencé a diseñar y desarrollar un pequeño motor 3D una semana antes de que comenzara el concurso.  La jugada me salió bien, porque no suponía una ventaja demasiado grande (otros participantes usaron motores existentes) y las normas específicas no echaron por tierra mis esfuerzos.

Planificación

De las cuatro semanas de plazo para realizar el juego, utilicé casi toda la primera semana en realizar una planificación.  Escribí guiones, hice diagramas de diferente tipo (flujos, transiciones de estado, clases...) y jugué con ellos bastante hasta tener algo interesante y que me viera capaz de realizar en unas tres semanas.

Decidí rescatar un viejo proyecto que presenté incompleto a un speedhack.  Se trataba de un matamarcianos en tres dimensiones bastante simple, y al final lo actualicé para que fuera más similar a "Wing Commander" o "Rogue Squadron".  La norma específica establecía como requisito la necesidad de hacer un viaje, de forma que hubiera diferentes escenarios que obligaran al jugador, de alguna forma, a cambiar de forma de juego.  En un juego como el que elegí esto sería muy fácil pudiendo ofrecer batallas espaciales o planetarias, con o sin niebla, creando laberintos con el propio escenario...

Finalmente decidí arriesgarme de nuevo y decidí no hacerme cargo yo de los gráficos y pedí ayuda en un par de foros, entrando en contacto con Rubén Deig, que se ofreció a realizar los modelos que necesitase.  Gracias a la planificación previa no me fue difícil describir lo que necesitaba, y Rubén lo entendió a la perfección como veréis más adelante.

Desarrollo

El desarrollo tuvo varios altibajos, en parte debido a la presión de tener una "fecha de entrega" tan limitada.  La parte que más problemas me dio fue el propio motor.  Evidentemente, un motor realizado en apenas una semana no puede ser muy sofisticado y alguna de las características que tuve que añadir (por ejemplo, el mapa de alturas que representa el terreno en las misiones planetarias) dieron más problemas de lo deseado.

Aun así, el trabajar a base de objetivos concretos ha sido de lo más provechoso, algo que ya comprobé en el anterior PGD Challenge, aunque en ocasiones los fallos de diseño del motor me obligaran a volver al motor en varias ocasiones, añadiendo parches para salir del paso.

Una de las cosas de las que me siento más orgulloso es del sistema que ideé para definir las misiones.  Definí una especie de lenguaje de programación que permitía indicar en un archivo de texto, y de forma muy simple, los elementos del escenario, los enemigos, los objetivos a cumplir, la descripción que aparece en la pantalla de selección de misión y la relación con las misiones anteriores y posteriores.  A pesar de su sencillez permite definir misiones lo suficientemente variadas entre sí.

Conclusión

Estoy bastante satisfecho con el resultado.  Además, la gente que ha visto los vídeos (los tenéis en este hilo de PGD) y alguno que lo ha probado (ya avisaré cuando esté disponible para todos) me han dicho muy buenas críticas.  El motor necesita una refactorización severa, pero a rasgos generales es un buen motor, con una estructura flexible.

En definitiva, creo que ha sido un éxito personal.