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!


lunes, 1 de mayo de 2017

8 BITS DE PODER estuvo en Retromadrid 2017

Hola amigos de 8 bits de poder


Así es, 8BP estuvo en Retromadrid. Una experiencia inolvidable. Un reencuentro con el significado de la palabra "juego", desprovista del gran poder computacional actual. Donde la palabra "jugabilidad" no se mezcla con gráficos en alta resolución ni sonido de alta fidelidad ni memorias gigantescas. Una vuelta a los orígenes. A la esencia de lo que significa "jugar"

Sistemas retro de toda clase, expositores de altísimo nivel, pasión desbordada, aroma a Z80, 6502 y 68000, emoción y calidad. Encuentros con representantes de la escena retro y con un público entrañable que daba una gran energía al acontecimiento. Gracias a Javy, Atila, Jose, Cesar...y tantos que nos habéis dado esta acogida tan cálida.  En una palabra, Retromadrid ha sido magnífico.



El Sábado, presenté una conferencia sobre 8BP en la que se mostraron los fundamentos y posibilidades de esta herramienta, ejemplos y explicaciones sobre lógicas masivas, manejo de sprites, layout, sobreescritura, técnicas de scroll y recomendaciones de programación.



La conferencia se apoyó en una presentación y diversos vídeos. La presentación la subiré al repositorio github de 8bp , para complementar el manual. Me consta que fue grabada en vídeo, de modo que cuando sea publicado dicho vídeo os lo haré saber.

Agenda de la conferencia sobre 8BP

Folleto que fue repartido entre los visitantes
El folleto lo podéis encontrar en este link : folleto_8BP_retromadrid
Y en primicia, se presentó sobre un CPC464 real, el nuevo juego "fresh fruits & vegetables". Un juego de plataformas, donde 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. Tanto "fresh fruits & vegetables" como "Nibiru" fueron expuestos para el disfrute de grandes y pequeños durante todo el dia
juegos hechos con 8BP sobre un CPC464 real durante Retromadrid


Os dejo con el video del nuevo juego "Fresh fruits & vegetables" que encontrareis en el directorio "gameExamples" del repositorio GitHub de 8BP, en https://github.com/jjaranda13/8BP





hasta la vista!!!