lunes, 7 de mayo de 2018

8BP estuvo en Retromadrid 2018

Hola amigos de 8 bits de poder

Estuvimos en uno de los eventos retro mas importantes de España: Retromadrid.
Interesantísimo punto de encuentro (no comercial) donde maquinas antiguas, desarrollos homebrew e intercambio de ideas se viven al minuto. Un evento de referencia para todos nosotros, con conferencias y talleres muy interesantes.

Este año fui con un amstrad CPC464, demostrando una vez mas que todos los juegos hechos con 8BP pueden correr en 64KB de RAM, sin trampa ni cartón. También llevé una Bartop para jugar a shooters hechos con 8BP como el Nibiru o el Anunnaki y un video introductorio a 8BP que os adjunto aqui:




Muchos serán los blogs que tratarán el contenido del evento y como no, la participación de Jon Ritman (creador de Batman, Head Over Hells, Match day...), que fue un invitado de excepción.
Estuvimos con Jon Ritman, el creador de Batman (entre otros)
Tuve la oportunidad de charlar con Jon Ritman y contarle lo que 8BP puede hacer. No todos los dias tenemos la ocasión de  conocer en persona a una estrella del calibre de Jon.

Yo en este post os voy a contar mi impresión sobre el evento. Lo retro esta mas de moda que nunca. Y no hay una causa sino muchas. Una muy importante es que un videojuego de 8bit lo puede hacer una sola persona en unas pocas semanas (o a lo sumo meses), mientras que un juego para sistemas modernos requiere mas tiempo, mas detalles, mas trabajo. Además las limitaciones de estas máquinas, lejos de verse como un problema, son valoradas positivamente pues estimulan la imaginación y el ingenio.

gran acogida del videojuego "3D-Racing One", creado con 8BP
Los amantes de lo retro poseen una complicidad "silenciosa". Cuando un programador de Amstrad se encuentra con un programador de spectrum, commodore o MSX (o otro sistema antiguo), se dan la mano. Se entienden en el lenguaje secreto de los 8 bit.
El publico disfrutando de Anunnaki, 3D-racing one, Nibiru...
Otra cosa que me sorprendió fue el elevado número de niños que descubrieron y disfrutaron de los juegos de 8 bit. Su simplicidad, su fácil manejo, su clara mecánica...les atrapa. En verdad los juegos tan sencillos ya no están de moda y por lo tanto están "fuera del alcance" de las nuevas generaciones.
Los niños son verdaderos embajadores del sentido común, de lo que significa divertirse y su criterio esta limpio de modas. Son auténticos validadores de estos juegos.
Una distinguida visitante disfrutando con "Fresh fruits & vegetables", creado con 8BP
Incluso el primer juego construido con 8BP "Mutante Montoya", fue la delicia de grandes y pequeños. Incluso yo mismo estaba sorprendido. Es un juego sencillo, pero "engancha".
Publico jugando a "mutante montoya"
Una novedad interesante y que me causó una grata sensación fue ver un juego mio ("Nibiru") en edición física a la venta. No es mi intención ganar dinero y prometo donar lo poco que gane con el, pero reconozco que me hizo mucha ilusión. Fue como un deseo anhelado desde niño, ver un juego mio a la venta, en cassette.

gran acogida del juego "Nibiru" ejecutado con una Bartop con joystick profesional
Nibiru a la venta a precio ochentero
Durante la jornada del Sábado ofrecí una charla sobre programación Pseudo-3D, cuya capacidad está integrada en la librería 8BP desde la versión 32. He de decir que el público era excepcional: gente reunida en torno a un interés y una pasión común. Esa pasión nos conectaba a todos en la sala de conferencias. Para mi fue un placer compartir esas ideas con todos vosotros.

imagen de la charla de pseudo-3D
Hablé de como estaban programados los juegos en los 80: Pole Position, After burner, Space harrier... y tambien de como se hicieron los juegos pseudo 3D en el Amstrad, asi como de la programación pseudo 3D con la libreria 8BP.

Aunque en el canal oficial de Retromadrid aun no ha sido publicado, hay un canal de youtube que ya ha publicado la charla, aqui os la dejo. Cuando esté disponible el de Retromadrid, añadiré dicho video




Y por último solo me queda agradecer a la organización (a la Asociacion de Usuarios de Informatica Clasica - AUIC) y a todos, expositores y visitantes, por hacer de Retromadrid un gran punto de encuentro.

gran stand de 8BP en retromadrid 2018


hasta pronto amigos!



domingo, 15 de abril de 2018

Disponible nuevo juego "3D racing one" y la version 32 de 8BP

Hola amigos de 8BP

Ya esta disponible la versión v32 de 8BP,  en https://github.com/jjaranda13/8BP la cual incorpora la prometida y esperada capacidad "pseudo 3D" para hacer juegos de carreras , tanques, naves...etc.. Esta versión representa un avance importante en la librería 8BP, y poder hacer juegos 3D en BASIC es algo revolucionario. 

La nueva versión 32 de 8BP viene con un regalo, el nuevo juego "3D racing one", que encontrarás en la carpeta "GameExamples". Es un juego que demuestra la capacidad pseudo3D de 8BP, el primero realizado con esta nueva funcionalidad. Posee un lujoso gráfico, 4 fases, en una deberás competir con 4 coches y una fase de conducción nocturna.


Además, el manual ha sido actualizado minuciosamente y encontrarás detalles de como funciona el pseudo3D, las matemáticas que usa, los trucos, etc. El manual además incorpora nuevos consejos para aumentar el rendimiento de tus juegos, y por si fuera poco, la librería ha mejorado la funcionalidad de algunos comandos como MAP2SP, PRINTSPALL, mejoras en velocidad de PRINTAT, nuevos comandos ""ROUTESP" y 3D", y un sin fin de mejoras que están a tu disposición, para que las disfrutes y rindas culto al Amstrad CPC

En siguientes posts iré contando cosas del funcionamiento del pseudo3D. De momento os dejo con un video del fabuloso juego (de casi 20KB de BASIC) titulado "3D Racing one", realizado íntegramente en BASIC, con 8BP y usando la técnica de "lógicas masivas".

Te gustaría una charla/conferencia sobre la historia de los juegos y técnicas pseudo3D y la programación 8BP en Retromadrid 2018? vamos a intentarlo!

Larga vida al Amstrad CPC!






















lunes, 12 de marzo de 2018

Edición física de "Nibiru", ya a la venta

Hola amigos de 8 bits de poder

Hoy os traigo una grata noticia, que me hace gran ilusión, un anhelo por fin cumplido: la de editar un videojuego en físico. Se trata de "Nibiru". Siéntelo, óyelo...tócalo!!!!

La lujosa edición ha sido elaborada y puesta a la venta en la web de MATRANET. Lo encontrareis en la sección "boutique", de CPC. Estará disponible en la feria "Amstrad Eterno", el 21 de Abril.

8BP sigue avanzando como una locomotora y este no va a ser el único juego del que veáis edición física. 8BP pretende conquistar con el AMSTRAD CPC, el universo analógico/digital en todas sus dimensiones.


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



 
 







MATRANET hace unas ediciones físicas extraordinarias, a precio ochentero, 8,75€, que nos permiten revivir la verdadera experiencia de disfrutar de un juego en el Amtrad. Poder tocar la cinta, poder abrirla, meterla en la unidad de cassette...oír sus fabulosos sonidos binarios como entran y dan vida al Amstrad como si de su sangre se tratase....es una experiencia que mezcla lo analógico con lo digital. Una sensación indescriptible. Pues aqui está!
Podéis conseguir vuestra cinta en la web de MATRANET, en la sección "check-out". la información del juego está en http://www.matranet.net/boutique/cpc/nibiru/nibiru.php



un abrazo!









lunes, 19 de febrero de 2018

Usa más colores en 8BP con sobreescritura

Hola amigos de 8 Bits de poder

hoy os traigo un consejo de programación, una técnica para usar mas de 9 colores en 8BP con sobreesritura.

Como sabéis, A diferencia de muchos videojuegos que para la sobreescritura usan máscaras y doble buffer (gastando mucha memoria), en 8BP he optado por una solución que no gasta memoria y permite la sobreescritura y restablecer el fondo como por arte de magia, sin necesidad de guardarlo. Y sin necesidad de mascaras.

Básicamente 8BP "esconde" los colores del fondo dentro de los colores del personaje. En el fondo lo que ocurre es que los bits que se usan para el color de fondo no interfieren con los bits que se usan para el color del personaje y por lo tanto el fondo nunca se destruye aunque lo parezca. En el capitulo "sprites con sobreescritura" del manual describo con detalle esta técnica. La ventaja: no requiere doble buffer y es tan rápida como usar mascaras. El inconveniente: solo puedes usar 7 de los 16 colores para tus sprites y para los colores de fondo puedes usar 2 colores. Para los objetos de fondo que no requieran sobreescritura (una nube,un tejado) se pueden usar 9 colores. La limitación compensa la gran ventaja de no usar doble buffer, pues asi hay mucha mas memoria para tu programa. Por ejemplo el juego "Nibiru" usa sobreescritura ( mira la fase 2) usando esta técnica. Y también he subido algunas demos que la usan


Los resultados los teneis en las imagenes que siguen.

 
 

¿Y si quieres aun mas color?
Si has hecho tus primeras pruebas con sobreescritura y necesitas mas colores en tu videojuego, hay una forma de lograrlo, pero necesitas entender bien el método de 8BP.

Suponte que solo uno de tus sprites requiere sobreescritura y consume 3 colores. Eso significa que debes destinar 6 tintas a este Sprite. Sin embargo, si el resto de sprites no requieren sobreescritura, puedes imprimirlos sin sobreescritura y usar mas colores en ellos, es decir:
2 tintas para el fondo ( 2 colores)
6 tintas para el Sprite con sobreescrituras ( 3 colores)
8 tintas para los demás sprites ( 8 colores)

En este caso, en total podrás usar 13 colores!!!! Simplemente tienes que activar el flag de sobreescritura en el Sprite que lo necesita y dejarlo inactivo en los otros sprites. En los sprites que no usen sobreescritura podrás usar los 13 colores, en el Sprite con sobreescritura usarías 3 y en el fondo 2.


Otros ejemplos son posibles. Por ejemplo, si los sprites con sobreescritura necesitan 4 colores, entonces gastarán 8 tintas. Aparte tendremos 2 tintas para el fondo y las 6 tintas restantes pueden identificar 6 colores diferentes, es decir que podremos usar un total de 12 colores.

Espero que este consejo de programación os sea útil. Pronto os  traeré la 8BP v32 , está terminada, simplemente quiero entregaros también un juego de coches que estoy acabando. Un poco de paciencia y os prometo que os gustará

un abrazo y hasta pronto!


domingo, 7 de enero de 2018

Preview de 8BP v32

Hola amigos de 8 bits de poder

aunque aun no he publicado la v32, os quiero adelantar algo para que veais como va quedando. Está prácticamente acabada aunque tengo que preparar una buena demo y tambien actualizar el manual de programación, por lo que aun me demoraré un pelín.

Lo que permite la v32 es crear un mundo 2D y recorrerlo en 3D. Es decir, podemos pintar caminos, plantas , arboles, vallas, etc y activar el modo de visualizacion 3D para ver en 3 dimensiones nuestro mapa del mundo. Este sencillo y versátil mecanismo permitirá hacer juegos de tanques, de naves, de carreras etc, casi con la misma sencillez con la que hacemos un juego 2D.

Esto se puede concebir como una especie de nuevo modo de visualizacion 3D, como el "modo 7" de SNES (salvando las distancias), y se puede comprender con el siguiente ejemplo
nuevo modo 3D para recorrer el "mapa del mundo" de 8BP
En este caso hemos definido un mundo con segmentos y con una valla y al activar el modo 3D , las imagenes que conforman el mundo se proyectan en una visualizacion 3D

La detección de colisión de sprites sigue funcionando en 2D, de modo que podemos detectar cuando nuestro coche se sale de la carretera o pisa un charco, pero al imprimir los sprites se calculan coordenadas 3D antes de pintarlos.

ya entrando en mas detalle tenemos las siguientes  nuevas características:


  • Un comando de activación del modo 3D, que nos permite limitar la aplicación de la proyección 3D a un subconjunto de sprites de los 32 disponibles. Además, nos permite definir un offset vertical para proyectar mas arriba o mas abajo de la pantalla.  Por lo demas, las cosas siguen funcionando como hasta ahora para juegos con scroll. El comando MAP2SP calcula qué imágenes del mundo caen dentro de la pantalla y genera una lista de sprites a imprimir. El comando PRINTSPALL los imprime, pero si está activado el modo 3D, entonces primero los proyectará. La porción del mundo que se considera, de 160x200, tras ser proytectada caerá en un rectángulo de la pantalla de dimensiones 160x100. Los sprites no afectados por el modo 3D, se seguirán imprimiendo en cualquier parte de la pantalla y sin ser proyectados


  • Podemos definir imágenes con zoom. Básicamente son imágenes compuestas de varias versiones de la misma (unas mas grandes y otras mas pequeñas) y al proyectarse mas alto o mas bajo se escogerá automáticamente la versión mas adecuada


  • Podemos definir un nuevo tipo de imagen llamados "segmentos":  se definen por repetición de una sola scanline, muy útil para trazar caminos. Ocupan muy poca memoria y se pueden colocar en el mundo torcidos, de modo que nos permiten crear curvas y caminos. En un juego de tanques en el desierto puede que no los usemos pero en un juego de carreras son útiles.


Por último, y puesto que en 3D los juegos avanzan muy deprisa, será util un comando de actualización del mapa del mundo, para poder recorrer largas distancias y no solo la capacidad actual del mapa que es de 82 items. Estoy trabajando en este comando, y pronto estará todo disponible

Os dejo con un vídeo para que podáis ver como va quedando. Espero tenerlo todo publicado muy pronto





hasta la vista!








miércoles, 30 de agosto de 2017

Disponible versión V31 de la librería 8BP

hola amigos de 8 bits de poder

Ya esta disponible la versión v28 de 8BP,  en https://github.com/jjaranda13/8BP la cual incorpora un nuevo comando para imprimir minicaracteres.
la libreria ahora ocupa 1kB mas ( en total 7kB) pero en realidad internamente han quedado 850 bytes para programar nuevas funcionalidades ( la v32 incorporará pseudo 3D sin ocupar mas memoria)
Todo está documentado en el nuevo manual disponible en github


El juego de caracteres del AMSTRAD es bonito y bien construido. Sin embargo, en mode 0 tan solo disponemos de 20 caracteres de ancho por línea y aparecen demasiado “ensanchados”, por lo que en ocasiones no son adecuados para mostrar ciertos textos o marcadores de un juego. Además, el comando PRINT es muy lento, por lo que es poco recomendable actualizar los marcadores frecuentemente, ya que el juego se “detiene” mientras se está imprimiendo, son pocos milisegundos pero es perceptible.
Por ese motivo, a partir de la versión v31 de 8BP se ha incorporado el comando PRINTAT, el cual puede imprimir una cadena de caracteres usando un nuevo juego de caracteres mas pequeño (los llamo “minicaracteres”). Este nuevo comando permite usar el mecanismo de transparencia de los sprites, de modo que podras imprimir caracteres respetando el fondo. Funciona del siguiente modo:

|PRINTAT,<flag transparencia>, y,x,@string

Ejemplo:
cad$= “Hola”
|PRINTAT,0,100,10, @cad$



El comando |PRINTAT imprime cadenas de caracteres y no variables numéricas, por lo que si quieres imprimir un número (por ejemplo, los puntos en el marcador de tu videojuego) debes hacerlo asi:

puntos=puntos+1
cad$= str$(puntos) 
|PRINTAT,0,100,10, @cad$

A diferencia del comando PRINT del BASIC, el comando |PRINTAT es bastante rápido y puede ser utilizado para actualizar los marcadores de tu videojuego con frecuencia.
PRINTAT usa un alfabeto redefinible, que puede contener una versión reducida o diferente de los caracteres “oficiales” del amstrad. Por defecto 8BP proporciona un pequeño alfabeto compuesto por números, letras mayúsculas y algunos símbolos. No podrás usar un carácter que no se encuentre entre este conjunto, como las letras minúsculas. Los caracteres de dicho alfabeto miden todos lo mismo: 4pixels de ancho x 5 pixels de alto, es decir 2 bytes x 5 lineas.
Esta cadena contiene todos los caracteres que puedes usar con el alfabeto de serie de 8BP. Fíjate que no hay minúsculas y faltan muchos símbolos, aunque puedes crear tu propio alfabeto que los contenga. Fíjate que el último símbolo es el espacio en blanco, es decir, es un símbolo disponible y por lo tanto puedes incluir espacios en blanco en las cadenas que imprimas. ("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ.:! ")



IMPORTANTE: Ten mucho cuidado de no usar caracteres no creados cuando uses PRINTAT.
He creado los caracteres usando las tintas 2 y 4, para que se pueda usar la sobreescritura, ya que los colores de fondo son 0 y 1 y usando sobreescritura la tinta 2 debe ser igual a la 3 y la 4 debe ser igual a la 5 ( consulta el capítulo donde explico la sobreescritura). Para usar la sobreescritura simplemente pon a “1” el flag de transparencia en el comando PRINTAT.


Puedes crear tu propio juego de caracteres, en el manual te indico paso a paso como hacerlo. básicamente consiste en definir una cadena que contiene todos los caracteres que vas a crear y dibujar uno a uno cada carácter.  Los bytes resultantes de cada dibujo de cada carácter los copias en un fichero de alfabeto con el que se ensambla toda la librería. 

a continuación os dejo una pequeña demostración del nuevo comando


hasta pronto amigos!







martes, 11 de julio de 2017

Programando juegos en Amstrad con la libreria 8BP y Locomotive Basic

Hola amigos de 8BP

Últimamente estoy trabajando poco en mejoras a la librería pero tengo ya una nueva versión que publicaré en breve (V31), con un par de nuevas e interesantes mejoras. Además, he empezado un nuevo juego de arcade que espero que os guste.
Una de las mejoras es la posibilidad de tener un juego de minicaracteres redefinibles para mode 0, de modo que podamos imprimir textos, marcadores etc., a un tamaño razonable y a mucha mayor velocidad que el comando PRINT de Basic, permitiendo que, por ejemplo, un texto pueda salir botando por la pantalla, o imprimir puntuaciones de un juego sin provocar esas indeseables pausas que provoca el comando PRINT. También ando trasteando con pseudo3D, a ver hasta donde llegamos.

Hoy os traigo un vídeo recientemente publicado por Retromadrid. Se trata de la conferencia que hice el día 29 de abril titulada "programando juegos en Amstrad con la librería 8BP y Locomotive Basic".

Además, he subido la presentación (powerpoint y pdf) de la conferencia a github (https://github.com/jjaranda13/8BP). La encontraréis en la carpeta de "documentacion", así como el folleto. De este modo podréis seguir y entender con mas claridad la conferencia. La presentación es un fichero muy pesado, de unos 72MB, porque incluye vídeos embebidos. Es muy completa, pero no es larga ni complicada.

Agradezco desde aquí a los amigos y organizadores de Retromadrid la oportunidad brindada para compartir esta iniciativa con los amantes de lo retro.





un abrazo y feliz verano!