Página 11 de 15

Re: Proyecto Aquanoids: el videojuego

Publicado: Dom, 16 Ago 2015, 19:40
por NeilParsons
$this->bbcode_second_pass_quote('Cthonian Godkiller', 'd')ile a na_than q te pase el hilo a la sección de MK2 que ahora estás "powereado by MK2" :corchoneta: :corchoneta:


O abrir yo el hilo allí y decir que se continúa desde este mismo hilo. :mrgreen:

Re: Proyecto Aquanoids: el videojuego

Publicado: Dom, 16 Ago 2015, 21:50
por na_th_an
Nosotros no nos vamos a poner especiales :lol: haz como mejor te parezca. Como si quieres dejarlo aquí.

Asín es esto :lol:

Mañana os echare un ojete a todos, que me os amontonáis :lol:

Re: Proyecto Aquanoids: el videojuego

Publicado: Lun, 17 Ago 2015, 09:50
por na_th_an
Tu problema es que los flags no se inicializan correctamente al empezar el juego por un problema de sintaxis en el script:

$this->bbcode_second_pass_code('', ' SET FLAG 2, 0
SET FLAG 3, 0
SET FLAG 4, 0
SET FLAG 5, 0
SET FLAG 6, 0')

Debería ser

$this->bbcode_second_pass_code('', ' IF TRUE
THEN
SET FLAG 2, 0
SET FLAG 3, 0
SET FLAG 4, 0
SET FLAG 5, 0
SET FLAG 6, 0
END')

No puede haber comandos fuera de una cláusula, hay que usar IF TRUE...THEN en todo caso, ya que el compilador *solo* detecta cláusulas. Creo que voy a plantearme modificar el compilador para que "entienda" grupos de comandos aislados sin IF TRUE, pero hasta entonces hay que ponerlo.

Revisa eso (y asegúrate de que inicializas TODAS las flags) y debería funcionar correctamente :)

Re: Proyecto Aquanoids: el videojuego

Publicado: Lun, 17 Ago 2015, 20:02
por NeilParsons
Corregido.

Voy a ir tomándomelo con calma, a poco que me falte solamente más que ajustar un poco más el movimiento del personaje (también corregido en el dia de hoy) y empezar a componer la música para la pantalla de título.

Entretanto, una cosa que me mantendrá ocupado también es la de conseguir que se impriman unos textos cuando ya has cogido los tres objetos y pueda ocurrir una de dos:

- Que hayas conseguido también las 15 baterías
- Que aún te quede por encontrar las que faltan.

En cada caso, el diálogo final varía. Por eso, hay varios comandos EXTERN que invoca a la impresión de estos textos.

Todo eso debería ocurrir justo después de coger el último de los tres "cacharros", en cualquiera de las tres pantallas donde esto ocurre, sin embargo, hasta ahora no he conseguido que eso ocurra y he probado hasta cambiando de ubicación las rutinas (metiéndolas en ENTERING SCREEN tal y PRESS_FIRE AT SCREEN tal). Estos items los puedes coger en cualquier orden, ya que puedes ir a cualquier localización del mapa en cuanto has avanzado las primeras pantallas.

Éstas son las últimas modificaciones que he hecho, aún sin probar pues es cuando he dicho hace un momento de descansar hasta otro dia. Es lo mismo que he usado para las pantallas 30 y 31. También investigaré en el código fuente de otros juegos, a ver si en ellos encuentro la manera.

$this->bbcode_second_pass_code('', 'ENTERING SCREEN 17
# Lata de fuel = Obj1
IF FLAG 2 = 0
THEN
SET TILE (13, 5) = 29
SET_FIRE_ZONE 177, 95, 193, 95
END

IF FLAG 2 = 1
IF FLAG 5 = 3
IF OBJECT_COUNT <> 15
THEN
EXTERN 2
EXTERN 3
REDRAW
SOUND 7
INC FLAG 2, 1 --- Lo hago así, incrementando una vez más el flag 2 (con valor = 2, en este caso) para que no se tenga que repetir ad infinitum esta cláusula. Que se haga una vez y pueda continuar todo.
END

IF FLAG 2 = 1
IF FLAG 5 = 3
IF OBJECT_COUNT = 15
THEN
EXTERN 2
EXTERN 4
REDRAW
SOUND 7
INC FLAG 2, 1 --- Igual
END
END
END

PRESS_FIRE AT SCREEN 17
# Si lo cojemos, añadirlo a lista
IF PLAYER_TOUCHES 13, 5
IF FLAG 2 = 0
THEN
PRINT_TILE_AT (2, 21) = 29
SOUND 6
SET TILE (13, 5) = 0
SET FLAG 2, 1
INC FLAG 5, 1
END
END')

Por cierto, en el fichero extern.h, ¿cuál es la medida del tiempo para que un texto se muestre en pantalla? Yo he ajustado cada cuadro entre 900 y 1000 ciclos, pero, ¿a cuánto equivale en segundos?

$this->bbcode_second_pass_code('', 'sp_UpdateNow ();
espera_activa(900);
espera_activa(900);
espera_activa(1000);
espera_activa(1000);
espera_activa(1000);
}')

Re: Proyecto Aquanoids: el videojuego

Publicado: Mar, 18 Ago 2015, 09:54
por na_th_an
Es difícil decirlo :lol: en modo 48K no hay interrupciones habilitadas, por lo que no hay una forma fidedigna de contar el tiempo. Espera activa se llama así porque no es más que un bucle que pierde tiempo. Cuánto tiempo, la verdad es que no lo he medido.

Sobre lo otro, te recomiendo que eches un vistazo a los scripts de Leovigildo. Si mal no recuerdo, están todos profusamente comentados. El de la tercera carga es especialmente interesante.

Ah, y ahora que le das a MK2 a lo mejor te interesa leerte esto -> viewtopic.php?f=17&t=1967

Ahora mismo es la referencia más completa que hay del sistema de scripting. Ahora que no eres un novato no tendrás problemas en seguirlo.

Re: Proyecto Aquanoids: el videojuego

Publicado: Vie, 21 Ago 2015, 02:05
por NeilParsons
Le daré más de una vuelta al tema del scripting. Y de paso me haré una copia impresa de lo que se puede hacer con el MK2 en cuanto a este tema se refiere. Tenía un problema con ciertas cláusulas y algunos comandos, y creo entender que si hasta ahora no conseguía que funcionen es porque no estaba aplicando los comandos del scripting en modo MK2, no Churrera.

¿Dónde tendré la cabeza últimamente? :cabesa:

Re: Proyecto Aquanoids: el videojuego

Publicado: Vie, 21 Ago 2015, 22:47
por NeilParsons
Nueva beta, pero no hay apenas variaciones en lo hecho hasta ahora. Tan solo que en el tema del scripting para unas determinadas pantallas del juego (17, 30 y 31 del mapeado) hay algunas cosas que no terminan de cuajar. Os paso también en un archivo de texto todas las combinaciones probadas y fallidas, a ver si alguien puede descubrir por qué no terminan de cumplirse algunas cláusulas. Tengo en extern.h los textos que quiero se impriman en cuanto se han conseguido los tres objetos y se cumpla otra condición (de si hemos conseguido también todas las baterías o si por el contrario aun nos queda alguna por ahí). Eso es lo que se ejecuta tras los comandos EXTERN, pero no terminan de visualizarse en pantalla en cuanto he conseguido los tres objetos.

He repasado el archivo de texto scripting.txt incluido con el motor MK2, pero no creo que haya nada raro en lo que había propuesto hasta ahora. ¿Alguna sugerencia?

Aquanoids-beta2.6.rar
(37.7 KiB) Descargado 786 veces


Cláusulas mierdosas.txt
(10.68 KiB) Descargado 786 veces


En breve, me pondré con el beepola. ¿Algún consejo al respecto? ¿Cómo compilar la música generada?

Re: Proyecto Aquanoids: el videojuego

Publicado: Sab, 22 Ago 2015, 00:11
por elborra
Mañana le hecho un vistazo y te comento soluciones. Mientras tanto me suena a mi que tal y como está la churrera/MK2, no puedes hacer más de un EXTERN por condición, ya que da por finalizadoel scripting. Al menos a mi me suena haberme parecido cosas del estilo.
Si estoy en lo cierto, cosas como:
$this->bbcode_second_pass_code('', '
IF FLAG 5 = 3
IF OBJECT_COUNT <> 15
THEN
EXTERN 2 ;<---- hasta aquí se ejecutaria si es cierta mi corazonada
EXTERN 3
REDRAW
SOUND 7 ;<--- ¿llega a sonar? Si lo hace estoy equivocado XD
END')no llegarian a funcionar tal y como se espera.

Re: Proyecto Aquanoids: el videojuego

Publicado: Sab, 22 Ago 2015, 12:04
por NeilParsons
Pues, por ejemplo, en la pantalla de comienzo del juego es posible incluir más de un comando EXTERN y aquí sí funciona perfectamente esta cláusula que escribí:

$this->bbcode_second_pass_code('', ' IF FLAG 6 = 0
THEN
# Imprimir texto de inicio del juego
SET FLAG 6 = 1 -- Pongo otro valor para que no se tenga que repetir todo de nuevo
EXTERN 0
EXTERN 1
REDRAW
END')

Quizás por lo que comentas tendría que reescribir las líneas de otra manera. En cualquier caso, te he dejado un privado, elborra.

Re: Proyecto Aquanoids: el videojuego

Publicado: Sab, 22 Ago 2015, 13:10
por na_th_an
No, se pueden poner todos los EXTERNs que queráis. El EXTERN siempre vuelve al siguiente comando del script, no interrumpe. Sólo interrumpen BREAK, REENTER, REHASH, WARP_TO y WARP_TO_LEVEL. Si miráis los scripts de leovigildo veréis millones de EXTERNs encadenados.

El lunes podré ponerme a mirar los scripts. Me ayudaría (no sé si lo has hecho ya; en ese caso enlázame) que me explicases en palabras qué quieres conseguir hacer.