Proyecto Aquanoids: el videojuego

Ayuda sobre MT Engine MK2.

Moderador: na_th_an

Avatar de Usuario
NeilParsons
Mensajes: 122
Registrado: Vie, 20 Ago 2010, 23:55

Re: Proyecto Aquanoids: el videojuego

Mensajepor NeilParsons » Dom, 16 Ago 2015, 19:40

Cthonian Godkiller escribió:dile 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:
Tengo una vah-ka leshera
pechis y muy besuquera...
Avatar de Usuario
na_th_an
Mensajes: 26408
Registrado: Vie, 09 Ene 2009, 12:18

Re: Proyecto Aquanoids: el videojuego

Mensajepor na_th_an » Dom, 16 Ago 2015, 21:50

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:
Como diría Rorshach: "Urm..."
Avatar de Usuario
na_th_an
Mensajes: 26408
Registrado: Vie, 09 Ene 2009, 12:18

Re: Proyecto Aquanoids: el videojuego

Mensajepor na_th_an » Lun, 17 Ago 2015, 09:50

Tu problema es que los flags no se inicializan correctamente al empezar el juego por un problema de sintaxis en el script:

Código: Seleccionar todo

   SET FLAG 2, 0
   SET FLAG 3, 0
   SET FLAG 4, 0
   SET FLAG 5, 0
   SET FLAG 6, 0


Debería ser

Código: Seleccionar todo

   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 :)
Como diría Rorshach: "Urm..."
Avatar de Usuario
NeilParsons
Mensajes: 122
Registrado: Vie, 20 Ago 2010, 23:55

Re: Proyecto Aquanoids: el videojuego

Mensajepor NeilParsons » Lun, 17 Ago 2015, 20:02

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.

Código: Seleccionar todo

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?

Código: Seleccionar todo

sp_UpdateNow ();
   espera_activa(900);
   espera_activa(900);
   espera_activa(1000);
   espera_activa(1000);
   espera_activa(1000);
}
Tengo una vah-ka leshera
pechis y muy besuquera...
Avatar de Usuario
na_th_an
Mensajes: 26408
Registrado: Vie, 09 Ene 2009, 12:18

Re: Proyecto Aquanoids: el videojuego

Mensajepor na_th_an » Mar, 18 Ago 2015, 09:54

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.
Como diría Rorshach: "Urm..."
Avatar de Usuario
NeilParsons
Mensajes: 122
Registrado: Vie, 20 Ago 2010, 23:55

Re: Proyecto Aquanoids: el videojuego

Mensajepor NeilParsons » Vie, 21 Ago 2015, 02:05

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:
Tengo una vah-ka leshera
pechis y muy besuquera...
Avatar de Usuario
NeilParsons
Mensajes: 122
Registrado: Vie, 20 Ago 2010, 23:55

Re: Proyecto Aquanoids: el videojuego

Mensajepor NeilParsons » Vie, 21 Ago 2015, 22:47

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 136 veces


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


En breve, me pondré con el beepola. ¿Algún consejo al respecto? ¿Cómo compilar la música generada?
Tengo una vah-ka leshera
pechis y muy besuquera...
Avatar de Usuario
elborra
Mensajes: 209
Registrado: Dom, 12 Ene 2014, 14:37

Re: Proyecto Aquanoids: el videojuego

Mensajepor elborra » Sab, 22 Ago 2015, 00:11

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:

Código: Seleccionar todo

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.
Avatar de Usuario
NeilParsons
Mensajes: 122
Registrado: Vie, 20 Ago 2010, 23:55

Re: Proyecto Aquanoids: el videojuego

Mensajepor NeilParsons » Sab, 22 Ago 2015, 12:04

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í:

Código: Seleccionar todo

   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.
Tengo una vah-ka leshera
pechis y muy besuquera...
Avatar de Usuario
na_th_an
Mensajes: 26408
Registrado: Vie, 09 Ene 2009, 12:18

Re: Proyecto Aquanoids: el videojuego

Mensajepor na_th_an » Sab, 22 Ago 2015, 13:10

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.
Como diría Rorshach: "Urm..."

Volver a “MK2”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 3 invitados