Página 1 de 3

FASE, un nuevo engine inspirado en la Churrera

Publicado: Mié Ene 29, 2014 12:40 am
por antoniovillena
Acabo de liberar este engine pensado para hacer juegos en C para ZX Spectrum sin tener que preocuparse del apartado gráfico. Es para juegos tipo plataformas como los de la Churrera, así que nada de scroll ni cosas por el estilo. Lo bueno de este engine es que las rutinas de pintado de sprites están muy optimizadas, por lo que es posible hacer juegos con muchos enemigos simultáneos y sin parpadeos a 50 frames por segundo.

Como ejemplo aquí tenéis la demo, es muy sencillita sólo para que os hagáis una idea de sobre qué va el engine. En realidad currarse un juego es más complicado porque requiere manejar colisiones, tratar la inercia, la gravedad, la lógica del juego, el sonido, el menú, etc...

http://www.mojontwins.com/mojoniaplus/d ... hp?id=4363

El código fuente está en este repositorio:

https://github.com/DSkywalk/fase

Y si os interesa probarlo, aquí tenéis un paquete con todo lo necesario (excepto el compilador de C) para ponerse a programar.

http://www.mojontwins.com/mojoniaplus/d ... hp?id=4362

Re: FASE, un nuevo engine inspirado en la Churrera

Publicado: Mié Ene 29, 2014 1:45 am
por GLAURUNG
Me parece fantastico peeeeero, ¿se podria empaquetar todo en un .EXE ejecutable?. Los programas en lineas de comandos y yo no nos llevamos bien :(

Re: FASE, un nuevo engine inspirado en la Churrera

Publicado: Mié Ene 29, 2014 2:10 am
por antoniovillena
Sólo hay que escribir 3 cosas en línea de comandos: "fase", "fase gfx" ó "fase config". Lo complicado está en hacer los gráficos y el código en C.

Re: FASE, un nuevo engine inspirado en la Churrera

Publicado: Mié Ene 29, 2014 2:30 am
por hikoki
Gracias, tengo que repasar lo que estudié de C para ver si puedo sacarle partido :)
Aunque vista la versatilidad de javascript creo que me va a ser difícil ponerme a programar en otras cosas.
Sabiendo que eres autor de un emulador hecho en javascript no me resisto a comentarte la existencia de un gamemaker para javascript pequeño, sencillo y potente cuyo código fuente acaba de ser liberado aquí
Código fuente de Tululoo
Aquí hay algunos ejemplos hechos por un español que responde en ese hilo :
http://eruiz00.wix.com/mikgames#!freegames/cxnq
Me pregunto si sería posible crear unas extensiones para ese programa de forma que el resultado se corresponda con las restricciones del Spectrum, se podría testear muy cómodamente en un navegador y al final se exportaría para Spectrum, sería genial si aceptase el Basic de Boriel.

Edit :

Última versión de Tululoo Game Maker 2.0.0 build4 con casi todas las extensiones y ejemplos compartidos en su foro.

Re: FASE, un nuevo engine inspirado en la Churrera

Publicado: Mié Ene 29, 2014 3:02 am
por antoniovillena
Están chulos tus juegos en javascript, el de los pistoleros me ha gustado. Hacer un gamemaker multiplataforma y que una de ellas sea spectrum lastra mucho a la otra plataforma por el tema del attribute clash. Sólo funcionaría para juegos en blanco y negro. Al meter color te tienes que decantar por una u otra plataforma. Si te decantas por la no-spectrum te sale una versión spectrum poco colorida o con problemas de attribute clash. Si te centras en la spectrum apenas aprovechas la otra plataforma, pasa como con la mayoría de juegos de MSX que son port directos del spectrum. Sin embargo la idea es buena para otras plataformas sin attribute clash como el Amstrad CPC.

Con respecto al compilador de Boriel, el engine lo soportaba pero lo quité porque el compilador escribía en alguna variable de sistema, en cuanto se arregle esto lo vuelvo a soportar. Mientras tanto puedes usar ZXBasic cambiando el fase.bat por este otro:

https://github.com/DSkywalk/fase/blob/c ... e/fase.bat

Re: FASE, un nuevo engine inspirado en la Churrera

Publicado: Mié Ene 29, 2014 4:16 pm
por hikoki
:) no son mis juegos sino los de Enrique Ruiz, aquí dejó el proyecto de gunfighter por si quieres abrirlo en Tululoo
Si a alguien le interesa puedo subir más proyectos y extensiones publicadas en el foro de este programa.
Esta herramienta yo la vería como un gamemaker para ZX Spectrum restringiendo la paleta de colores, dimensiones de las escenas, tipos de movimiento, etc al menos podría servir para que diseñadores de juegos que no non usuarios de Spectrum desarrollaran para esta plataforma además de para html5

Genial entonces si FASE va a ser compatible con ZX Basic :D
Este motor puede ser muy útil para hacer juegos de tower defense con muchos sprites de pequeño tamaño.

Re: FASE, un nuevo engine inspirado en la Churrera

Publicado: Jue Ene 30, 2014 8:26 am
por Hark0
¿seria posible compilar todo esto para que funcionara desde la linea de comandos de un ipad (jailbreak)?

:P

PD Enorabuena por tu trabajo Antonio!

Re: FASE, un nuevo engine inspirado en la Churrera

Publicado: Jue Ene 30, 2014 9:28 am
por antoniovillena
Seguro que sí, prácticamente todo está en ANSI C

Re: FASE, un nuevo engine inspirado en la Churrera

Publicado: Jue Ene 30, 2014 11:23 am
por Alxinho
Joer, qué montón de motores tenemos ya! :o

Me encanta!

Sólo me faltaría que estuviesen recopilados todos en la wiki :|

Re: FASE, un nuevo engine inspirado en la Churrera

Publicado: Jue Ene 30, 2014 1:35 pm
por Hark0
Lo que estaría de perlas es que todas las aplicaciones se aglutinaran en un solo SDK... con su IDE, etc...

ZX Basic, churrera, fase, utilidades conversión, etc etc

8)

Re: FASE, un nuevo engine inspirado en la Churrera

Publicado: Lun Feb 03, 2014 7:32 pm
por javiperez
antoniovillena escribió:Acabo de liberar este engine pensado para hacer juegos en C para ZX Spectrum sin tener que preocuparse del apartado gráfico. [...]


La churrera tambiñén se apoya en el compilador Z88DK y la librería SPLIB, ¿podríamos decir que FASE es un paso intermedio entre programar directamente en C (Z88DK+SP1) y la Churrera?

Si ordenásemos todos estos frameworks/engines de desarrollo de mayor a menor complejidad (punto de vista del programador), entiendo que tendríamos:

ASM > C > ZX Basic > FASE > Churrera > Platform Game Designer, etc.

¿Hay algún otro entorno?

Re: FASE, un nuevo engine inspirado en la Churrera

Publicado: Lun Feb 03, 2014 8:17 pm
por antoniovillena
La idea de FASE es mejorar la Churrera en el apartado técnico. La Churrera es un engine basado en sprites de 16x16, mientras que splib2 es una librería de sprites 8x8. La principal limitación es el número de tiles en pantalla, que como mucho puede ser de 48. También tiene otros inconvenientes menores como el número máximo de enemigos por pantalla, que es 3.

El problema es que para conseguir rendimiento he tenido que recurrir a drivers separados (uno que aprovecha el bus flotante en 48K y otro que aprovecha la shadow video en 128K) que lo hace incompatible con el interfaz de splib2. Ahora en lugar de por llamadas a subrutinas se hace escribiendo en una estructura en memoria. Así que el siguiente paso sería completar la parte en alto nivel del engine, sería como reescribir la Churrera o algo parecido a ella en C, para que sea asequible a los principiantes.

Pero sí, tal y como está ahora FASE requiere escribir partes importantes del juego y sería un paso intermedio entre la Churrera y C/Basic compilado. De todas formas no estoy de acuerdo en que ZX Basic sea más complejo que C. Yo pienso que son equivalentes. De hecho FASE también admite ZX Basic y ayer mismo acabé de pasar la demo de FASE a ZX Basic.

En la práctica, al final acabas mezclando distintas tecnologías, lo que necesitas que sea muy rápido como los sprites o lo haces en ensamblador o tiras de una librería (splib2) o de engine (FASE). A medida que necesites menos velocidad tiendes a hacer las cosas mas fáciles (y lentas) tirando de alto nivel o incluso de script (interpretado en lugar de compilado) como es el caso de la Churrera.

Re: FASE, un nuevo engine inspirado en la Churrera

Publicado: Lun Feb 03, 2014 11:56 pm
por Boriel
antoniovillena escribió:Pero sí, tal y como está ahora FASE requiere escribir partes importantes del juego y sería un paso intermedio entre la Churrera y C/Basic compilado. De todas formas no estoy de acuerdo en que ZX Basic sea más complejo que C. Yo pienso que son equivalentes. De hecho FASE también admite ZX Basic y ayer mismo acabé de pasar la demo de FASE a ZX Basic.

Gracias Antonio por la explicación. ;) (hay cosas que se me escapan).

Sólo quería aclarar una cosa (en general, no a tí en particular): ZX BASIC "intenta" ser BASIC, eso significa que algunos comandos son de más alto nivel que C, porque BASIC es un lenguaje de más alto nivel. Por eso el compilador es más complicado en algunas cosas, y es más difícil crear un buen optimizador (C es más cercano a la máquina). He intentado hacer ZX BASIC lo más cercano posible al bajo nivel para poder usarlo como C (a la hora de crear librerías, etc), pero algunas cosas son casi imposibles.

Tuve una discusión similar en el foro de FreeBASIC y al final decidí no colaborar en el proyecto. FreeBASIC tiene punteros, objetos, herencia y hasta templates a lo C++... tanto es así que realmente es C++ con palabras de BASIC. Eso ya no es "BASIC". Para eso me quedo en C++.

De hecho en el WOS hubo gente que crucificó a ZXBASIC por no ser más arcaico y parecido al Sinclair BASIC original (lo que tampoco es posible... si es compilado: VAL, VAL$, o DATA con expresiones...). Nunca llueve a gusto de todos.

Por cierto: La demo que me pasaste me ha dejado flipando... :shock: Es realmente muy rápida y suave.

Re: FASE, un nuevo engine inspirado en la Churrera

Publicado: Mar Feb 04, 2014 1:04 am
por antoniovillena
Ya ves, nunca llueve a gusto de todos. Lo mejor es hacer las cosas como a tí te gusten más, y al que no le guste que se vaya a hacer ... un fork.

Con respecto a la demo, es rápida porque va a 50fps reales y es suave porque el desplazamiento es de pixel y los sprites son siempre exactos porque se pintan de golpe. Normalmente los sprites se pintan poco a poco para evitar el parpadeo, lo que conlleva a que en algunos frames se generen sprites partidos (la mitad de arriba un poco más desplazada que la de abajo).

Re: FASE, un nuevo engine inspirado en la Churrera

Publicado: Mar Feb 04, 2014 1:21 am
por cheveron
Boriel escribió:De hecho en el WOS hubo gente que crucificó a ZXBASIC por no ser más arcaico y parecido al Sinclair BASIC original (lo que tampoco es posible... si es compilado: VAL, VAL$, o DATA con expresiones...). Nunca llueve a gusto de todos.


That's because they are ignorant monkeys who don't know better, to paraphrase Douglas Adams. :)