Páginas

Juegos hechos con 8BP

Los juegos que te presento a continuación son gratuitos, y los encontrarás en la carpeta "Game Examples" de https://github.com/jjaranda13/8BP .
  • Blaster pilot: un juego con scroll multidireccional inspirado en el estilo de juegos como “Time Pilot” o “Asteroids”
  • Happy Monty: un tributo al mitico "Mutant "Monty", con un primer nivel muy similar al original y un total de 25 niveles. Alcanza 25 FPS y esta programado con la version v37 de la libreria 8BP ( comentado en https://auamstrad.es/videojuegos/happy-monty-lo-nuevo-de-8-bits-de-poder/). Ha sido presentado en la CPCRetroDev 2019 http://www.indieretronews.com/2019/10/happy-monty-upcoming-cpcretrodev-game.html
  • Eridu: the space port : un juego inspirado en el clasico "scramble", con scroll horizontal, bombas y disparos, mecanismo de fuel, tiene 5 fases y es muy rápido. Comentado en https://auamstrad.es/videojuegos/preview-de-eridu-the-space-port/
  • Frogger Eterno: una versión del clasico "frogger", realizado con 8BP
  • Space Phantom: un juego shooter estilo "space harrier", pseudo-3D.  Comentado en  https://auamstrad.es/videojuegos/space-phantom-no-creeras-que-esta-hecho-en-basic/
  • 3D-Racing one: juego de coches primero en usar la capacidad pseudo-3D de 8BP
  • Fresh Fruits & vegetables: un juego de plataformas con scroll horizontal
  • Nibiru: un juego de naves de scroll horizontal con características avanzadas de 8BP. Este juego además tienes la opción de conseguirlo en edicion física a través de http://www.matranet.net/boutique/cpc/cpc.php
  • Anunnaki: un juego de naves, género arcade, scroll vertical
  • Mutante Montoya: un juego de pasar pantallas, podría encuadrarse en género plataformas. Fue el primer juego que hice con 8BP.
  • minijuegosson juegos didácticos, sencillos y cortos, para iniciarse en la programación con 8BP
    • mini-pong: inspirado en el clasico de Atari "Pong"( ver https://www.youtube.com/watch?v=0Bw9Qmyy5rA)
    • mini-invaders:inspirado en el clasico de Taito "space Invaders" (ver https://www.youtube.com/watch?v=6OcB_hjuYiU)

Blaster Pilot

Es un juego creado con la versión v39 de 8BP, en la que es posible tener efectos de sonido (creados con SOUND) a la vez que suena música mediante el comando MUSIC. En este caso el comando SOUND se usa para los disparos y explosiones y utiliza el tercer canal mientras que la música usa los dos primeros canales.
El juego posee scroll multidireccional y esta inspirado en el estilo de juegos como “Time Pilot” o “Asteroids”. Junto al panel de puntuación y vidas se presenta un radar con el que puedes orientarte por el espacio para localizar a 3 actornautas perdidos a los que debes rescatar. El juego es interesante por como se aborda la programación del movimiento de la nave en 12 direcciones posibles del modo mas eficiente posible.
Además de 6 niveles, posee una fase de bonus al finalizar cada nivel, que permite acumular puntos y recuperar una vida.

Blaster Pilot

Blaster Pilot: scroll multidireccional con la nave en el centro



Happy Monty

EL juego es un tributo a Mutant Monty, un juego de 1984 escrito en ensamblador y logra alcanzar su misma velocidad (a veces supera 25 FPS) y hasta posee lógicas mas complejas de enemigos que en el juego original. Esto significa que en BASIC se puede lograr el resultado de un juego programado en ensamblador haciendo uso de 8BP y la técnica de lógicas masivas. Si, has leído bien, se puede hacer.

Este es un juego que hace uso intensivo de logicas masivas para alcanzar los 25 FPS. EL juego se mide a si mismo e imprime los FPS que esta siendo capaz de generar en cada momento. Tiene 25 niveles y funciona a unos 25 FPS, escrito en BASIC con 8BP v37. Usa la capacidad de Layout de 8BP y una forma de compactar los mapas de las pantallas de modo que cada nivel ocupa solo 160 caracteres
uno de los 25 niveles
el primer nivel de happy monty es un tributo a Mutant Monty y se ha creado con 160 caracteres





Eridu: The space port

Este juego es un clone del clasico "Scramble" de Konami creado en 1981. Realmente tiene muchas diferencias con el original, pero en esencia esta inspirado en el juego clásico, ya que incorpora la necesidad de recargar combustible, forzando al jugador a arriesgarse para destruir los tanques de combustible y asi no perder una vida.
Es bastante rápido a pesar de funcionar con un scroll potente, mostrando 32 sprites en pantalla en muchos momentos. Llega a alcanzar los 18 fps

El juego tiene 5 fases, y diferentes músicas on-game, además de un gráfico de presentación muy lujoso. 
Eridu es un videojuego que conecta con una antigua historia “prohibida” de la humanidad. Eridú fue la primera ciudad del mundo, creada por los “Anunnaki” hace 400.000 años, una raza extraterrestre según las tablillas sumerias encontradas en el desierto de Irak. Allí establecieron un puerto espacial llamado “Tierra 1”.

Los mapas de las diferentes fases se cargan en diferentes bancos de memoria ocupando cada uno 500 bytes de datos del mundo y 200 bytes para la descripción de la ubicación de los enemigos. El scroll lógicamente esta hecho con el comando MAP2SP

Tras la carga del juego aparecen unas fabulosas letras gigantes desplazándose por la pantalla, a la vez que la tabla de puntuaciones

El scroll es potente, como se puede constatar en 4 de las 5 fases ( la fase 2 solo tiene estrellas)


hay analisis/ comentarios en youtube sobre el juego en:
canal de Novabug : https://youtu.be/lzfUEm_T_Ts  minuto 3:38
canal de xyphoe :  https://www.youtube.com/watch?v=g4hHpioiRlI  minuto 2:52:38

Frogger Eterno

El juego “Frogger Eterno” ha sido realidado con la versión V36 de 8BP, y su titulo evoca tanto el clásico “frogger” de konami lanzado en 1981 como la feria “Amstrad Eterno” celebrada en 2019, evento en el que este juego hizo su aparición.
Es un juego programado en mode 1, que usa LAYOUT, impresión transparente en la rana y rutas de diversa naturaleza para los sprites. Algunos de los sprites son invisibles, pero colisionables, tales como 4 rios “invisibles” que se encuentran bajo los troncos, nenúfares y tortugas sobre los que la rana debe saltar, como “muros invisibles” a los laterales del rio, para que la rana no pueda escapar.




Space Phantom

Este es un juego realizado con la versión v35 de la librería. Usa las capacidades pseudo-3D para la presentación de títulos al estilo “Star Wars”. Usa también impresión transparente con sprites (monedas) que pasan detrás del fondo ( la tabla de scores).
El juego está inspirado en el clásico “Space Harrier” y manejas a un héroe equipado con un jet-pack que vuela por el espacio, matando meteoritos, ovnis, pájaros espaciales y hasta un dragón. Se compone de tres fases y un final épico.
El juego de caracteres es propio, aunque sólo se han definido los números, al estilo “reloj casio” para los marcadores.
En la primera fase se usan rutas para las estrellas, que son sprites al igual que los meteoritos y los pájaros.
En la segunda se usa sobreescritura de sprites con fondo de 2 bit (4 colores) y animación por tintas usando RINK. Las naves en hilera se construyen ubicándolas mediante el uso del comando mejorado ROUTESP, disponible en la V35.
Aunque el juego simula 3 dimensiones, no se usa la proyección pseudo-3D, sino rutas de sprites en los que se va cambiando la versión del enemigo por una mayor para dar sensación de que se acerca. Para que una colisión con un enemigo lejano no nos afecte, se utiliza un flag no usado registro de estado para marcar los enemigos lejanos como inofensivos.
En la tercera fase se ha usado movimiento relativo horizontal de las piedras del suelo, en combinación con una ruta de movimiento vertical acelerado

Un buen análisis del juego y una entrevista la podeis encontrar en https://www.readyandplay.com/space-phantom-amstrad-cpc/










3D-Racing one

Este es el primer juego realizado usando la capacidad pseudo3D de 8BP. Posee un lujoso gráfico de carga y 4 circuitos: uno de entrenamiento con charcos en la carretera, otro en el que competimos con otros 4 coches, otro donde la velocidad es el doble, usando segmentos de menor inclinación, y una ultima fase nocturna.








Fresh Fruits & vegetables

Es un juego de plataformas que usa scroll horizontal y gestión avanzada de rutas de sprites. 
Tu misión consiste en recoger todas las frutas para dejar a la población sin nada que comer, de modo que tengan que sacrificar a un pobre cerdo para alimentarse.

Su mayor novedad es el uso avanzado de rutas, concatenando unas a otras para pasar de “caer” a “andar” y el uso de RINK combinado con MAP2SP como técnica de scroll
Durante la segunda fase se combina un efecto de lluvia con el scroll horizontal
 



Nibiru

Este es un juego que pone a prueba muchas de las características de 8BP y de la técnica de programación de "lógicas masivas", y tiene detalles como un gráfico de carga lujoso y tres melodías durante el juego, así como una tabla de scores que no se pierde aunque reinicies el juego y otros aspectos técnicos avanzados como scroll paralax, rutas, macrosecuencias, etc. El listado BASIC ocupa poco mas de 16KB, de modo que aun sobrarían 10 KB para hacer un juego mucho mayor (con 8BP los juegos en BASIC pueden ocupar 26KB, sin contar gráficos ni música). 

Nibiru está disponible en edición física en la web http://www.matranet.net/boutique/cpc/cpc.php


Eres el piloto de una nave destructora y debes vencer al planeta Nibiru y a su lider, "Gorgo", un reptil milenario casi invencible. Debes destruir a los pajaros galácticos que viven en sus lunas y una vez que llegues al planeta te debes enfrentar a sus peligros antes de poder luchar con Gorgo.


El Juego consiste en tres fases y utiliza el mecanismo de scroll de 8BP basado en el comando MAP2SP y también usa enrutamiento de sprites y macrosecuencias de animación. Todo desde BASIC! gracias a 8BP y a la técnica de "lógicas masivas"


Un lujoso gráfico de presentación realizado con la herramienta ConvImg

Las 3 musicas se han realizado con el secuenciador WYZtracker. Una de ellas no me cabía en los 1250bytes para música y tuve que ensamblarla en otra dirección.


El efecto de scroll de texto se logra con un sprite que en realidad contiene el mensaje “press space to start…” lo movemos como si fuese un muñeco y ya tenemos scroll.

Para crear las fases se cargan justo antes de empezar en la zona de memoria del mapa del mundo. Todas las fases se precargan en la dirección 25000 pero cada vez que entramos en una fase se vuelca la fase a la zona del mapa del mundo usando POKEs. Esta técnica de gestión de las fases se describe con mas detalle en el manual de 8BP
Los pájaros usan una ruta de movimiento para simplificar la lógica del juego, ganando velocidad (hay montañas, pájaros y disparos de pájaros y nuestros disparos y nave).

La primera fase (y todas las demás) usa MAP2SP para crear el scroll. Aunque las montañas parecen muy grandes, usan la técnica del manchado de modo que con unos pocos y pequeños sprites conseguimos dibujar todo el contorno. La explosión de la nave se realiza con fragmentos que se imprimen con sobreescritura para no destruir las montañas, pero todo lo demás se hace sin sobreescritura (más rápido).

Tras atravesar las dos lunas de nibiru, nos encontramos con naves en formación que usan enrutamiento y macrosecuencias para cambiar de sprite en función de su dirección de movimiento de forma automática. Las macrosecuencias lucen muy bien y la velocidad es buena a pesar del gran numero de sprites (naves + disparos)

Esta segunda fase es muy costosa. Usa sobreescritura además de scroll y se nota. Aun asi está en el límite de lo aceptable. Piensa que un juego de arcade es muy exigente en velocidad. Si fuesen personas caminando y no naves espaciales consideraríamos que va a buen ritmo. Va un poco justa de velocidad por la carga extrema de CPU que exige. Además la música también consume CPU, todo se suma.

Una vez mas, las naves usan rutas

En la tercera fase tenemos un scroll paralax hecho con una mezcla de mapa del mundo y montañas que son sprites que se mueven en uno de cada dos ciclos y que no forman parte del mapa del mundo. son sprites gigantes pero horizontales por lo que son muy rápidos de imprimir.
La técnica se detalla más en el manual de 8BP disponible en  https://github.com/jjaranda13/8BP


La tabla de scores se consigue almacenándola en RAM con pokes, en lugar de almacenarla en variables BASIC. Eso permite que aunque pares el juego y hagas RUN, los valores no se pierden.


ANUNNAKI: nuestro pasado alien

Este es un juego muy interesante para analizar y adentrarse en la técnica de programación de "lógicas masivas".
A diferencia del "Mutante Montoya", el videojuego "Anunnaki" no hace uso del layout, ya que se trata de un juego donde se trata de avanzar y destruir naves enemigas, no es un juego de laberintos ni de pasar pantallas.
Este juego además, hace uso de técnicas de scroll "simulado", muy interesantes.
disponible como parte de la distribución freeware de la libreria 8BP . disponible en dsk y wav en https://github.com/jjaranda13/8BP



Eres Enki, un comandante anunnaki que se enfrenta a razas alienígenas para conquistar el planeta tierra y así someter a los humanos a su voluntad.
El juego consta de 2 niveles, aunque si pierdes una vida, continuas en el punto del nivel en que te encuentres, no vuelves al principio del nivel.
El primer nivel es una fase en el espacio interestelar, donde debes esquivar meteoritos y matar hordas de naves y pajarracos espaciales. Al final del nivel debes destruir un "jefe"
El segundo nivel se desarrolla en la Luna, donde debes destruir hordas de naves, tras lo cual debes atravesar un túnel plagado de minas hasta encontrarte con tres a los que debes destruir



 la pantalla de presentación muestra un scroll de estrellas de 4 capas a diferente velocidad para dar sensación de profundidad. Para ello se usa el comando STARS

los controles son QAOP y la barra espaciadora para disparar.
Durante el juego, al pulsar Q, la nave sube y muestra fuego en sus cohetes propulsores. Esto simplemente se realiza cambiando la secuencia de animación asociada a la nave con un POKE a la dirección correspondiente a la secuencia de animación de la nave en la tabla de sprites


Los meteoritos son indestructibles. Al usar la instrucción de colisión COLSPALL, se determina que el colisionado es un sprite cuyo identificador es mayor que un cierto numero y con ello se concluye que es un enemigo "duro" que no se puede destruir.

se utiliza lógicas masivas, de modo que en cada fotograma solo un meteorito puede decidir cambiar su dirección de movimiento

la colisión del disparo múltiple se realiza mediante COLSPALL, ya que los 3 disparos tienen flag de "colisionador" activo en el byte de status, y para ahorrar ciclos solo puede empezar a morir un enemigo en un mismo fotograma, lo cual no representa ninguna limitación en el juego, ya que vamos matando uno a uno a los enemigos.


todos los pajarracos tienen el flag de movimiento relativo en su byte de status, y se mueven con el comando MOVERALL siguiendo una trayectoria almacenada en un array. De este modo todos se mueven a la vez con una sola instrucción

hay una horda de naves que bajan en "zig-zag", que también usan la misma técnica, los desplazamientos calculados con la función coseno son almacenados en un array para después usarlo en MOVERALL
|MOVERALL,0,rx(i): i=(i+1) MOD 15

como puedes ver, a la vez hay estrellas de fondo que pasan "por debajo" de todos los enemigos, mediante el comando STARS.

las explosiones son "secuencias de muerte", de modo que tras terminar la animación de la explosión, el enemigo en cuestión queda desactivado y no se imprime mas.


Las distintas hordas de naves enemigas en formación siguen trayectorias diferentes, siempre en dos hileras de 6 naves cada una. Para moverlas se utiliza la técnica de logicas masivas controlando en cada instante de tiempo que par de naves deben cambiar su dirección de movimiento. El movimiento se realiza asignando a cada nave un par Vx,Vy e invocando a AUTOALL, ya que todas tienen el flag de movimiento automático


El enemigo final (llamado "arkaron") es semi-duro, significa que tiene un contador de disparos que le alcanzan y muere al recibir diez impactos.

La música durante estos momentos cambia, siendo una melodía mas "angustiosa". las 3 melodías que tiene el juego ocupan poco, no mas de 200 bytes cada una


En la luna ("hollow moon" significa "luna hueca" pues se trata de un satélite artificial alienígena) se simula scroll con "motas" y cráteres que se mueven a la misma velocidad. Las motas se hacen con STARS y los cráteres son sprites que se mueven hacia abajo.

Además, se utilizan dos sprites a los lados que "manchan" la pantalla dando el efecto de muros laterales.

todas las hordas usan "lógicas masivas" para moverse


 mas hordas, esta vez con una trayectoria que cambia de dirección pasados unos instantes.

fíjate como la nave pasa "por encima" del cráter a pesar de que no se está usando sobreescritura. Es gracias a que la nave tiene un identificador de sprite superior al cráter y por ello se imprime después. Obviamente "borra" un trozo de cráter pero el efecto es aceptable


 el tunel se construye con dos hileras de sprites que simulan los bordes del tunel, dando un efecto de scroll vertical

es realmente pesado porque son sprites muy grandes pero el efecto es aceptable

superar el túnel es difícil, se genera aleatoriamente de modo que a veces es más difícil y a veces más fácil.


 al final hay que destruir 3 jefes cuya dificultad estriba en que ninguno muere de forma independiente sino que cada uno de ellos debe recibir al menos 10 disparos para que los 3 mueran a la vez. si disparas mil veces al mismo no conseguiras superar este reto. El número de sprites en pantalla es muy elevado si sumamos todos los disparos de la nave y de los enemigos pero los movimientos de los disparos tienen poca lógica y todo se mueve con velocidad suficiente


Al destruir a los 3 jefes, llegamos a la pantalla del final del juego, con una melodía diferente y un mensaje de enhorabuena.

Enki es bueno?...o es malo? los textos sumerios lo describen como el dios bueno y su hermano Enlil era el malo...pero y si todo hubiese sido un engaño?







Mutante Montoya

Un primer tributo al Amstrad CPC, con un título inspirado en el clasico "mutant monty"

Información y enlaces:
disponible como parte de la distribución freeware de la libreria 8BP . disponible en dsk y wav en https://github.com/jjaranda13/8BP



Es un juego sencillo de 5 niveles. Se basa en el uso del layout de 8BP para construir cada pantalla. A continuación algunas "pistas" de como está hecho, aunque el listado basic es accesible (de hecho tenéis el listado en el libro sobre 8BP y podéis analizarlo en profundidad).



La presentación simula lluvia mediante el comando |STARS. Trata de apreciar como pasan por debajo de sprites y elementos del layout sin dañarlos.

El castillo está construido como un layout. En el listado BASIC lo podrás distinguir construido con letras asociadas a sprites

El primer nivel es muy sencillo. la condicion de salida es que la coordenada Y del personaje sea menor que cero (cuando consigues salir por arriba).

todos los sprites se imprimen simultáneamente con el comando de 8BP "|PRINTSPALL"

El segundo nivel no usa ninguna tecnica especial. No usa logicas masivas y aun asi puedes ver la potencia y velocidad de la libreria 8BP. hay 7 sprites

También puedes apreciar el "clipping" de la rutina de impresión si mueves el personaje fuera de la pantalla, hacia la izquierda. En ese caso se mostrará sólo parcialmente

El tercer nivel usa la técnica de "lógicas masivas" para mover los 8 soldados. A pesar de haber 9 sprites en pantalla a la vez, y estar ejecutando en BASIC, todo funciona a un ritmo adecuado.
Es interesante analizar como se abre la compuerta. Se actúa sobre el layout cuando montoya coge la llave.

El cuarto nivel usa "lógicas masivas". Podría haber metido 8 fantasmas y habría seguido funcionando sin apenas diferencia de velocidad, pero habría sido muy difícil pasar la pantalla!

En esta pantalla no se usan lógicas masivas aunque haya 5 sprites, pues es suficientemente rápido. Se emplea la misma técnica que en el tercer nivel para abrir las compuertas

Al final todos los personajes salen a saludar. El efecto del telon que baja se hace con un solo sprite, imprimiéndolo en un bucle e invocando al comando |PRINTSP. es muy sencillo pero interesante efecto. El sprite va "manchando" la pantalla mientras baja, dando la sensación de un telón en movimiento

No hay comentarios:

Publicar un comentario