Feed Rss, Atom Categoría Pascal, 10 entrada(s)

Ha pasado, ya, una semana del concurso que comenté en la anterior entrada.  Todavía no he empezado a codificar nada, pero eso no quiere decir que no haya empezado.

Esta semana, aparte de pensar cómo será el juego, he estado planificando, escribiendo y haciendo esquemas y diagramas.  Mirad, mirad:


Mi mesa hace unos minutos.

Planificar es algo que debería hacerse siempre antes de empezar a programar, pero por desgracia no puedo hacerlo en el trabajo casi nunca porque dice mi jefe que tardo mucho.  Y es verdad que se tarda más, pero es que a la larga ahorra mucho trabajo.  Perder el tiempo haciendo y repitiendo esquemas permite darse cuenta de dónde van a estar los problemas antes de toparse con ellos, y casi siempre ayuda a encontrar la solución mucho antes de escribir una línea.

Por ejemplo, si os fijáis en la foto que he puesto (pulsad encima para verla más grande, incluso la tecla "Ctrl" y, sin soltar, la tecla "más (+)") veréis que en las dos hojas de arriba a la izquierda hay dibujado un monigote de palos.  Esto es porque estudiando cómo dibujar y manejar los personajes, el primer sistema que pensé no me convenció y según lo he cambiado he ido encontrando problemas o cosas que luego me darían problemas.  Si hubiera empezado a programar sin hacer esos esquemas me hubiera encontrado inconvenientes a la hora de comprobar las colisiones del jugador y los enemigos con las armas, entre ellos y con el entorno (paredes, muebles, etc.).  Hubiera encontrado una solución, sí, pero es que la mejor que he encontrado me hubiera obligado a reescribir prácticamente todo el sistema de dibujado y de colisiones, lo que hubiera sido tiempo perdido.

En definitiva:  procurad dedicar un tiempo a la planificación antes de hacer cualquier cosa, no sólo programar.  Os facilitará la vida.

Por cierto:  El juego se titulará Duke of Dragonfear: Deathland, como homenaje a un juego escrito en BASIC por Tim Hartnell, con cuyos libros aprendí mucho de programación.  A ver si en lo próximo que escriba os puedo enseñar ya algo.

Vaya, pues sí hace tiempo que no escribo.  Estos dos meses han sido un poco locura, principalmente por temas de trabajo, y no me apetecía escribir. Y ahora no me apetece hablar de ello sino de otra cosa

La web Pascal Game Development convocó el concurso 1st PGD Challenge: Simple Controller, y he pensado en participar.  Hay que hacer un juego en tres semanas y la norma es que el juego ha de usar un "mando clásico", es decir, cuatro direcciones y cuatro botones.  Así que nada de ratones, pantallas táctiles, potenciómetros, giroscopios, detectores de movimiento ni cosas raras.  Personalmente me encanta la idea porque me recuerda a los juegos de los salones recreativos de mi época de jugón.

Sin embargo, en los tres días que llevamos de concurso (empezó el viernes) no se me ha ocurrido nada lo suficientemente simple como para hacerlo en tres semanas.  Así que he echado mano del Spin-o-matic que usan en el concurso SpeedHack, un programa que da ideas para videojuegos, y me ha salido lo siguiente:

  • Fear:  Inspirar temor ha de ser clave en tu juego.  Bien puede ser temor al jugador, a los enemigos, a ambos...
  • Second Person Sh... What?  El juego ha de estar en segunda persona -- esto es, ves la acción a través de los ojos de un personaje que no controlas del todo, o controlas a un personaje que indirectamente controla al personaje principal.
  • Boom, Boom, BOOM!  Debe haber muchas explosiones, con o sin una buena razón.

Las dos primeras ideas me gustan bastante, y además creo que están relacionadas entre sí.  Y la tercera siempre está bien, porque cualquier videojuego mejora con unas cuantas explosiones, y si no lo creéis es que no habéis jugado a Tetris Queen.  Todavía no estoy seguro de qué voy a hacer, pero creo que todo apunta a un horror survival de esos con zombis, oscuro y tal.

Bueno, os dejo, que me voy a pasar por OpenGameArt a ver si encuentro algo que me inspire. Hasta otro día.

Estaba repasando el foro de Club Delphi cuando llegué, de nuevo, a un artículo de Jon L. Aasenden, un programador con ideas bastante afines a las mías.

El artículo en cuestión habla sobre las posibilidades que tendría poder traducir programas de Pascal a JavaScript.  Alguna vez había pensado yo en ello, y de hecho ya existen cosas similares como Morfik y ExtPascal.

Una de las cosas que menos me gustan de JavaScript (y de PHP) es su poco control sobre los datos.  No me refiero a que no pueda obtenerse información acerca de su tipo y naturaleza, que se puede, sino a que las variables no tienen por qué ser declaradas antes de usarlas y que estas no tengan un tipo concreto, lo cual me ha generado no pocos dolores de cabeza.  Esta característica me hace perder un tiempo precioso intentando descubrir por qué el cálculo no se realiza correctamente o por qué cierto campo se obceca en permanecer vacío; y todo porque obvié incorrectamente el tipo de dato o porque escribí mal el nombre de una variable.  Con Pascal esto no pasa, ya que al tener que declarar las variables y disponer estas de un tipo determinado, si comentes un error al escribir el nombre o asignas un dato de tipo no compatible el sistema te avisa rápidamente y rápidamente corriges el error.  Combinar, por tanto, ambos mundos es una idea que me atrae mucho:  por un lado tienes la universalidad de JavaScript, y por otro la estabilidad y potencia de un lenguaje estructurado como Pascal.

Además de esto, otra cosa que me ha llamado la atención son los varios enlaces que el señor Aasenden coloca al final de su artículo, entre los que hay varios ejemplos de gráficos 3D, con modelos complejos, texturas y materiales, completamente escritos para HTML5; es decir, que se ejecutan en el navegador web sin necesidad de instalar ninguna extensión como Flash o similares. Y me ha llamado la atención porque el pasado noviembre escribí un diminuto programa para HTML5 en 3D, y tenía la intención de publicarlo, pero entre pitos, flautas y que no me centro, lo olvidé. Seguro que si lo hubiera hecho en noviembre, nada más terminarlo, hubiera ganado muchos puntos, pero ese tren ya partió.

En fin: aquí tenéis el nada espectacular ejemplo de gráficos 3D en HTML5 que escribí entonces.  Que conste que no funciona con Internet Explorer, al menos hasta la versión 8 (gracias a Theck, de GAS, por comprobarlo).  El código fuente tiene asociada la licencia zlib/libpng, utiliza conceptos básicos y está profusamente comentado, así que podéis echarle un vistazo sin problemas.

Makeproject

Acabo de subir un paquete que contiene plantillas para crear proyectos de programación en C y en Pascal que utilizan make. El paquete contiene unos cuantos directorios y archivos, incluyendo guiones que automatizan algunos procesos, como determinar las dependencias de archivos de forma semiautomática.

Hasta ahora lo que hacía era coger un proyecto anterior, copiarlo y empezar a borrar y cambiar archivos. Es un trabajo tedioso, así que decidir hacer estas plantillas. Ahora sólo hay que copiar el contenido del directorio, cambiar un par de valores en el makefile y ya está. Además también hay algunos archivos con plantillas para la documentación, que parece una tontería pero facilitan mucho las cosas.

Si vais a utilizarlo, procurad leer la documentación.

Estoy más feliz que una perdiz, porque uno de mis proyectos parece que está despegando. Es una biblioteca para hacer videojuegos (llamada Allegro.pas) que empecé a programar hace un par de años. Resulta que hace unos días empezó a haber movimiento en la lista de correos (en parte provocado por mi, pero animado por lo que había) y hoy el foro ha empezado a bullir. Lo dicho: Más feliz que una perdiz. No, si al final va a resultar un éxito y todo.
Categorías: Pascal, Programación, Vida