lunes, 26 de junio de 2017

Como escribir un juego(¿cutre?) de Spectrum. (II) Eligiendo nuestro framework.

Otras entregas de esta serie:
Como escribir un juego(¿cutre?) de Spectrum. (I) Introducción.
Como escribir un juego(¿cutre?) de Spectrum. (III) Diseñando el juego.
Como escribir un juego(¿cutre?) de Spectrum. (IV) Implementación y resultados.
 
Llevo años usando distintos frameworks, y a día de hoy sigo sin saber que significa la palabra. Es decir, si que se lo que significa, en teoría, pero dado lo que me he ido encontrando por ahí, creo que el significado del palabro en cuestión es algo ambiguo. Al final se trata de un conjunto de herramientas (Que pueden tener algo que ver entre si O NO) y que se supone que ayudan a realizar determinada tarea.

En este caso partiré de lo esencial e iré añadiendo programas a medida que los vaya necesitando. Como mi sistema operativo es Linux Mint, casi todo lo que voy a instalar saldrá del gestor de paquetes.

1. El emulador.

A menos que tengamos un Spectrum en casa y queramos conectarlo este es el elemento indispensable. Seguro que hay quien puede, y además será capaz de exportar el código, pero lleva mucho tiempo y esfuerzo. En cambio el emulador funciona estupendamente en nuestro escritorio y tiene sus ventajas.

Yo voy a usar Fuse. Hasta donde he podido comprobar funciona bastante bien y se puede instalar directamente desde el gestor de aplicaciones. Para los que usen sistemas operativos mas cutres (MacOS, Windows) creo que hay versiones para esos sistemas operativos.

1a. La chuleta.

El programa se puede escribir directamente en el BASIC del Spectrum. Hay que decir que tanto el editor de lineas como el teclado funcionan de una forma bastante peculiar, por lo que será necesario saber lo que se hace y una chuleta como esta:




No obstante hoy en día tenemos opciones menos puñeteras y mucho mas recomendables.

2. Editor de texto.

En linux hay muchos y muy buenos. Yo voy a usar Geany. Un editor ligero, con múltiples pestañas, que subraya la sintaxis, autocompleta texto y  permite lanzar otras aplicaciones (compiladores y otras herramientas). Al igual que el emulador está en el gestor de aplicaciones, y al igual que el emulador está disponible en otras plataformas.

2a. Herramientas variadas.


Si se  trabaja desde un editor de texto será necesario emplear una aplicación como zmakebas para cargar el programa en el emulador. Este puede encontrarse en el gestor de paquetes Synaptic.

Lo contrario (Pasar el programa a texto) será necesario si se escribe la aplicación directamente en el emulador y se quiere exportar los listados.  Junto al emulador hay varias utilidades (fuse-utils) entre las cuales encontraremos listbasic.

3. Un compilador. 

Esta es la opción que voy a usar. Aunque hay varios disponibles, me he decidido por el ZX Basic Compiler.  Está escrito en Python, por lo que debería funcionar en casi cualquier plataforma. Para Linux basta con descargar y descomprimir en una carpeta. Luego lo llamamos desde el editor de texto añadiendo algo como lo siguiente en los comandos de construcción:

/home/username/opt/zxbasic/zxb.py %f -o salida.tzx -T -B -a

También podemos hacer que sea el propio Geany el que llame al emulador y ya está, tenemos lo que todo desarrollador en JAVA ha aprendido a configurar:  Un entorno de desarrollo en una máquina de última generación para crear código para una plataforma obsoleta que se ejecuta en un emulador.

Hay varias razones para emplear este compilador. La sintaxis se parece mucho al basic del spectrum (Aunque hay que dejar claro que el código no tiene por que ser completamente compatible), lo que nos permite hacer cosas específicas para esta máquina (gráficos de bloques, atributos de color, UDGs) de una forma mas sencilla que con otros compiladores. También hay una gran cantidad de manuales, tutoriales y otra documentación específica para hacer lo que queremos (un juego).

4. Programa de dibujo.

Casi todas las distribuciones de Linux incluyen magníficas herramientas como GIMP para el retoque fotográfico o ImageMagick para trabajar por lotes. Por desgracia estos programas no se diseñaron para trabajar con el extraño modo gráfico del ordenador de Sinclair. Sin embargo los programas para Spectrum si que están diseñados para hacerlo.




En este caso hay varias opciones, como “The artist”, “Art studio”, etc... Yo he elegido el Melbourne Draw, que es el que usaba de niño :-). Las instrucciones apenas ocupan un folio y la curva de aprendizaje es muy rápida. Además creo recordar que era estupendo para crear UDGs, que eran unos sprites monocromos de 8x8 que se usaban mucho.

5. Hola mundo

Una vez instaladas todas las herramientas vamos a probar a ver que tal funciona todo. Empezaré por escribir un pequeño programa en BASIC directamente en el emulador:



Tras pasarlo por listbasic obtenemos una salida en texto que podemos compilar:

   10 LET x=13: LET y=7
   20 FOR y=17 TO 1 STEP -1: GO SUB 1000: NEXT y
  999 GO TO 9999
 1000 REM ******* up ********
 1015 PRINT AT y,x;" \::\: "
 1020 PRINT AT y+1,x;"\ .\.:\.."
 1025 PRINT AT y+2,x;"\: \::\: \: "
 1030 PRINT AT y+3,x;"\' \: \: \' "
 1040 PRINT AT y+4,x;"\ .\: \''"
 1045 BEEP 0.02,1
 1046 PAUSE 3
 1050 PRINT AT y-1,x;" \::\: "
 1060 PRINT AT y,x;"\ .\.:\.."
 1065 PRINT AT y+1,x;"\: \::\: \: "
 1070 PRINT AT y+2,x;"\' \: \: \' "
 1075 PRINT AT y+3,x;"\ '\' \:. "
 1080 PRINT AT y+4,x;"   "
 1085 BEEP 0.02,1
 1086 PAUSE 3
 1090 RETURN
 9999 REM caca


Hay que recordar que el código no siempre es compatible, pero en este caso lo es. Se han añadido un par de pausas para tener una velocidad parecida (Lineas 1046 y 1086) y compila perfectamente.

6. Conclusión.

A partir de este momento tenemos varias herramientas que funcionan perfectamente y que podemos usar para producir nuestro juego.



En el próximo capítulo me centraré en el diseño del juego que ya llevo bastante avanzado.

Tengo la intención de usar UDGs, gráficos de bloques (Como los del programa "¡Hola Mundo!"), PLOT y LINE, algún que otro POKE y otras técnicas que se usaban en los juegos en BASIC, por lo que el resultado puede resultar algo sorprendente.


No hay comentarios:

Publicar un comentario