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 » Sab, 08 Ago 2015, 22:24

Aún no había aplicado el script al código del juego, por lo que el fallo en esa pantalla no tiene que ver con ello. Pero gracias por el apunte.
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 » Dom, 09 Ago 2015, 02:47

NeilParsons escribió:Aún no había aplicado el script al código del juego, por lo que el fallo en esa pantalla no tiene que ver con ello. Pero gracias por el apunte.


Pues entonces tiene que ser el mapa 100%, comprueba por enesima vez que realmente el tile donde te salgan los tiles mal (la roca y el tipo plataforma) es el tile del fondo (chequealo mirando el número de bloque que usa....)

PD: Para lo que iba a tardar, he querido comprobarlo antes XD, efectivamente los bloques que te salen mal son porque no está puesto como tile de fondo 0 (que es el que quieres), sino como 19 (pero como es negro dicho tile, no se nota).

Debido a los cambios que has ido haciendo al reducir el numero de tiles para poner mapas packed el fichero contenedor del mapa, el fmp, tiene actualmente 31 tiles y no 16, a pesar de que todos a partir del 16 sean negro. Esto último no se si realmente afecta a la hora de crear el fichero mapa.h con la utilidad correspondiente, pero por si acaso te lo comento. Esto es un "problema" de mappy al reducir el numero de bloques importando un nuevo set con menos tiles que el anterior, que a pesar de dejarlos en negro no los elimina.
Avatar de Usuario
NeilParsons
Mensajes: 122
Registrado: Vie, 20 Ago 2010, 23:55

Re: Proyecto Aquanoids: el videojuego

Mensajepor NeilParsons » Dom, 09 Ago 2015, 12:11

Luego esta tarde y siguientes dias me dedicaré a repasar nuevamente los archivos del mapa, el del scripting y una cosa que tengo que conseguir todavía, y alguien me lo ha advertido, es que la sensación de que el personaje se mueve dentro del agua sigue sin ser del todo creible. ¿Sugerencias para la dinámica del personaje, en cuanto a la gravedad, inercia y desplazamiento en hor y vrt?
Tengo una vah-ka leshera
pechis y muy besuquera...
Avatar de Usuario
angel
Mensajes: 23212
Registrado: Vie, 09 Ene 2009, 13:04
Ubicación: Torreznolandia
Contactar:

Proyecto Aquanoids: el videojuego

Mensajepor angel » Dom, 09 Ago 2015, 12:31

El problema es que es un robot, hacer que parezca agua con un personaje que bucee como en subacuatic y ninjajar es algo más eficaz.

Puedes plantearte algo como el motor de jet paco, que no salte :-) o un salto muy lento.
(_\_) (_|_) (_/_) (_|_) ILLO KE HEHEHEHEHEHEEEHEHEHEH!

¡Activa tu rainbow pechónico!
Avatar de Usuario
NeilParsons
Mensajes: 122
Registrado: Vie, 20 Ago 2010, 23:55

Re: Proyecto Aquanoids: el videojuego

Mensajepor NeilParsons » Dom, 09 Ago 2015, 21:47

Probablemente, me haya acercado un poco más a lo que tendría que ser el movimiento del robot en el agua (que se mueva algo más lento pero no demasiado, que haya inercia en el movimiento horizontal cuando deje de desplazarse y que la gravedad sea la menor posible) pero probarlo y decirme qué tal. De paso, ya se ha corregido lo de la pantalla 24 y he modificado ligeramente algunos sprites, así como la pantalla de título y el marco.

Todavía no me he decidido a meter el scripting, hasta darle un repaso a fondo al tema. Por otro lado, había probado el cambio de activar la directiva del jetpack en lugar del salto, en config.h; pero me he dado cuenta de que si lo dejara así, haría el juego demasiado fácil, así que lo dejo como estaba antes.

Aquanoids-v1.3-src.rar
(643.55 KiB) Descargado 73 veces
Adjuntos
Aquanoids V1.3 - 08-08-2015.tap
(40.72 KiB) Descargado 92 veces
Tengo una vah-ka leshera
pechis y muy besuquera...
Avatar de Usuario
na_th_an
Mensajes: 26412
Registrado: Vie, 09 Ene 2009, 12:18

Re: Proyecto Aquanoids: el videojuego

Mensajepor na_th_an » Lun, 10 Ago 2015, 10:34

elborra escribió:
NeilParsons escribió:Aún no había aplicado el script al código del juego, por lo que el fallo en esa pantalla no tiene que ver con ello. Pero gracias por el apunte.


Pues entonces tiene que ser el mapa 100%, comprueba por enesima vez que realmente el tile donde te salgan los tiles mal (la roca y el tipo plataforma) es el tile del fondo (chequealo mirando el número de bloque que usa....)

PD: Para lo que iba a tardar, he querido comprobarlo antes XD, efectivamente los bloques que te salen mal son porque no está puesto como tile de fondo 0 (que es el que quieres), sino como 19 (pero como es negro dicho tile, no se nota).

Debido a los cambios que has ido haciendo al reducir el numero de tiles para poner mapas packed el fichero contenedor del mapa, el fmp, tiene actualmente 31 tiles y no 16, a pesar de que todos a partir del 16 sean negro. Esto último no se si realmente afecta a la hora de crear el fichero mapa.h con la utilidad correspondiente, pero por si acaso te lo comento. Esto es un "problema" de mappy al reducir el numero de bloques importando un nuevo set con menos tiles que el anterior, que a pesar de dejarlos en negro no los elimina.


Aunque ya está resuelto (lamento no poder estar más al quite durante los fines de semana, pero es que el churumbel está a tope de power), aclaro las cosas.

En efecto el problema tiene que ver con lo que comenta elborra. Hay que fijarse muy bien en lo que va a consumir mapcnv porque es bastante tontaco. Si le dices que es packed, entonces asume packed, o sea, que sólo se va a encontrar valores de 0 a 15.

mapcnv, en modo packed, coge 4 bits de cada tile del mapa y los junta de 2 en 2 en un byte. Y cuando digo "coge 4 bits" se refiere a eso: coge los 4 bits menos significativos del valor que sale en el archivo .map. Si el valor es de 0 a 15, cogiendo 4 bits obtiene un número correcto (porque 4 bits representan valores de 0 a 15). Si el valor es mayor que 15, pues cogerá los 4 bits menos significativos y el número resultante se parecerá poco al original.

Por ejemplo, si encuentra un 19, en binario 00010011, al coger los 4 bits menos significativos se queda con 0011, que es 3. O sea, un tile 19 se convierte en un tile 3.

Hay que tener cuidado con estas cosas :)

En la versión actual de MK2 el caso hubiese sido aún más sangrante :D el conversor es más inteligente y hace más cosas. Al encontrar el 19 y haberle forzado a "packed" hubiese cogido ese tile y lo hubiese añadido automáticamente al script como decoración de esa pantalla :lol:
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 » Mar, 11 Ago 2015, 15:04

Dudas de última hora. He modificado el archivo make.bat para que pueda por fin incluir en la compilación las cláusulas del scripting del juego (las que creo pueden funcionar en el juego), pero al general el alchivo con el juego y empezal a plobal.lo para vel si todo iba bien, :loco: resulta que no veo cambio significativo alguno. Todo lo veo igual que como estaba en las últimas betas lanzadas. ¿Está todo bien, o hay algo que me falta aquí? :cabesa:

Código: Seleccionar todo

@echo off
cd ..\script
msc aquanoid.spt msc.h 32
copy *.h ..\dev
cd ..\dev
cd ..\map
..\utils\mapcnv mapa.map 8 4 15 10 15 packed
copy mapa.h ..\dev
cd ..\dev
zcc +zx -vn aquanoid.c -o aquanoid.bin -lndos -lsplib2 -zorg=25000
..\utils\bas2tap -a10 -sAQUANOIDS loader.bas loader.tap
..\utils\bin2tap -o screen.tap -a 16384 loading.bin
..\utils\bin2tap -o main.tap -a 25000 aquanoid.bin
copy /b loader.tap + screen.tap + main.tap aquanoid.tap
del loader.tap
del screen.tap
del main.tap
del aquanoid.bin
echo DONE


Así he dejado el contenido del archivo aquanoid.spt, después de darle vueltas al tema. Otra cosa, si voy a coger durante el juego 15 objetos que, en definitiva, va a estar predeterminado por la directiva #define PLAYER_NUM_OBJETOS en config.h, no tengo por qué definir un flag (SET FLAG 1, 1) para ellos. Ya me diréis qué tengo que cambiar o modificar aquí para ir empezando a ver resultados:

Código: Seleccionar todo

# Aquanoids
# Copyleft 2015 Neil Parsons
# Churrera 3.99b

# flags:
# 1   = cuenta de baterías (hasta 15)
# 2 = cuenta de objeto 1
# 3 = cuenta de objeto 2
# 4 = cuenta de objeto 3
# 5 = control objetos

# SET FLAG 1, 1 - ¿Innecesario?
SET FLAG 2, 0
SET FLAG 3, 0
SET FLAG 4, 0
SET FLAG 5, 0

ENTERING SCREEN 0
   # Superficie, ordenadores, lámparas, contenedor.
   IF TRUE
   THEN
      SET TILE (0, 0) = 20
      SET TILE (1, 0) = 20
      SET TILE (2, 0) = 20
      SET TILE (3, 0) = 20
      SET TILE (4, 0) = 20
      SET TILE (5, 0) = 20
      SET TILE (6, 0) = 20
      SET TILE (7, 0) = 20
      SET TILE (8, 0) = 20
      SET TILE (9, 0) = 20
      SET TILE (10, 0) = 20
      SET TILE (11, 0) = 20
      SET TILE (12, 0) = 20
      SET TILE (13, 0) = 20
      SET TILE (14, 0) = 20
      # Lámparas
      SET TILE (2, 4) = 22
      SET TILE (3, 4) = 23
      SET TILE (5, 4) = 22
      SET TILE (6, 4) = 23
      # Contenedor
      SET TILE (2, 7) = 25
      SET TILE (2, 8) = 26
      SET TILE (3, 7) = 27
      SET TILE (3, 8) = 28
      # Vigas
      SET TILE (6, 5) = 21
      SET TILE (7, 5) = 21
      SET TILE (8, 5) = 21
      # Ordenadores
      SET TILE (1, 8) = 24
      SET TILE (5, 8) = 24
      SET TILE (6, 8) = 24
      # Fire zone (x1, y1, x2, y2)
      SET_FIRE_ZONE 17, 111, 49, 143
   END
END

ENTERING SCREEN 1
   # Superficie
   IF TRUE
   THEN
      SET TILE (0, 0) = 20
      SET TILE (1, 0) = 20
      SET TILE (2, 0) = 20
      SET TILE (3, 0) = 20
      SET TILE (4, 0) = 20
      SET TILE (5, 0) = 20
      SET TILE (6, 0) = 20
      SET TILE (7, 0) = 20
      SET TILE (8, 0) = 20
      SET TILE (9, 0) = 20
      SET TILE (10, 0) = 20
      SET TILE (11, 0) = 20
      SET TILE (12, 0) = 20
      SET TILE (13, 0) = 20
      SET TILE (14, 0) = 20
   END
END

ENTERING SCREEN 2
   # Superficie
   IF TRUE
   THEN
      SET TILE (0, 0) = 20
      SET TILE (1, 0) = 20
      SET TILE (2, 0) = 20
      SET TILE (3, 0) = 20
      SET TILE (4, 0) = 20
      SET TILE (5, 0) = 20
      SET TILE (6, 0) = 20
      SET TILE (7, 0) = 20
      SET TILE (8, 0) = 20
      SET TILE (9, 0) = 20
      SET TILE (10, 0) = 20
      SET TILE (11, 0) = 20
      SET TILE (12, 0) = 20
      SET TILE (13, 0) = 20
      SET TILE (14, 0) = 20
   END
END

ENTERING SCREEN 3
   # Superficie
   IF TRUE
   THEN
      SET TILE (0, 0) = 20
      SET TILE (1, 0) = 20
      SET TILE (2, 0) = 20
      SET TILE (3, 0) = 20
      SET TILE (4, 0) = 20
      SET TILE (5, 0) = 20
      SET TILE (6, 0) = 20
      SET TILE (7, 0) = 20
      SET TILE (8, 0) = 20
      SET TILE (9, 0) = 20
      SET TILE (10, 0) = 20
      SET TILE (11, 0) = 20
      SET TILE (12, 0) = 20
      SET TILE (13, 0) = 20
      SET TILE (14, 0) = 20
   END
END

ENTERING SCREEN 4
   # Superficie
   IF TRUE
   THEN
      SET TILE (0, 0) = 20
      SET TILE (1, 0) = 20
      SET TILE (2, 0) = 20
      SET TILE (3, 0) = 20
      SET TILE (4, 0) = 20
      SET TILE (5, 0) = 20
      SET TILE (6, 0) = 20
      SET TILE (7, 0) = 20
      SET TILE (8, 0) = 20
      SET TILE (9, 0) = 20
      SET TILE (10, 0) = 20
      SET TILE (11, 0) = 20
      SET TILE (12, 0) = 20
      SET TILE (13, 0) = 20
      SET TILE (14, 0) = 20
   END
END

ENTERING SCREEN 5
   # Superficie
   IF TRUE
   THEN
      SET TILE (0, 0) = 20
      SET TILE (1, 0) = 20
      SET TILE (2, 0) = 20
      SET TILE (3, 0) = 20
      SET TILE (4, 0) = 20
      SET TILE (5, 0) = 20
      SET TILE (7, 0) = 20
      SET TILE (8, 0) = 20
      SET TILE (9, 0) = 20
      SET TILE (10, 0) = 20
      SET TILE (11, 0) = 20
      SET TILE (12, 0) = 20
      SET TILE (13, 0) = 20
      SET TILE (14, 0) = 20
   END
END

ENTERING SCREEN 6
   # Superficie
   IF TRUE
   THEN
      SET TILE (0, 0) = 20
      SET TILE (1, 0) = 20
      SET TILE (2, 0) = 20
      SET TILE (3, 0) = 20
      SET TILE (4, 0) = 20
      SET TILE (5, 0) = 20
      SET TILE (6, 0) = 20
      SET TILE (7, 0) = 20
      SET TILE (8, 0) = 20
      SET TILE (9, 0) = 20
      SET TILE (10, 0) = 20
      SET TILE (11, 0) = 20
      SET TILE (12, 0) = 20
      SET TILE (13, 0) = 20
      SET TILE (14, 0) = 20
   END
END

ENTERING SCREEN 7
   # Superficie
   IF TRUE
   THEN
      SET TILE (0, 0) = 20
      SET TILE (1, 0) = 20
      SET TILE (2, 0) = 20
      SET TILE (3, 0) = 20
      SET TILE (4, 0) = 20
      SET TILE (6, 0) = 20
      SET TILE (7, 0) = 20
      SET TILE (8, 0) = 20
      SET TILE (9, 0) = 20
      SET TILE (10, 0) = 20
      SET TILE (11, 0) = 20
      SET TILE (12, 0) = 20
      SET TILE (13, 0) = 20
      SET TILE (14, 0) = 20
   END
END

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
END

PRESS_FIRE AT SCREEN 17
   # Si lo cojemos, añadirlo a lista
   IF PLAYER_TOUCHES 13, 5
   THEN
      INC FLAG 2, 1
      PRINT_TILE_AT (2, 21) = 29
      SOUND 6
      SET TILE (13, 5) = 0 // Borrar tile y poner fondo en su lugar
   END
END

ENTERING SCREEN 30
   # Barril de cerveza = Obj2
   IF FLAG 3 = 0
   THEN
      SET TILE (1, 2) = 30
      SET_FIRE_ZONE 1, 31, 17, 47
   END
END

PRESS_FIRE AT SCREEN 30
   # Si lo cojemos, añadirlo a lista
   IF PLAYER_TOUCHES 1, 2
   THEN
      INC FLAG 3, 1
      PRINT_TILE_AT (4, 21) = 30
      SOUND 6
      SET TILE (1, 2) = 0
   END
END

ENTERING SCREEN 31
   # Cartera comprometedora = Obj3
   IF FLAG 4 = 0
   THEN
      SET TILE (13, 3) = 31
      SET_FIRE_ZONE 193, 47, 193, 63
   END
END

PRESS_FIRE AT SCREEN 31
   # Si lo cojemos, añadirlo a lista
   IF PLAYER_TOUCHES 13, 3
   THEN
      INC FLAG 4, 1
      PRINT_TILE_AT (6, 21) = 31
      SOUND 6
      SET TILE (13, 3) = 0
   END
END

# Comprobación si se han cogido los tres objetos especiales
# y final de juego.

ENTERING ANY
     IF FLAG 2 = 1
   THEN
         IF FLAG 3 = 1
         THEN
                IF FLAG 4 = 1
                     THEN
                     TEXT DONE!_COME_BACK_TO_BASE
           INC FLAG 5, 1
           SOUND 6
            SOUND 7
              END
           END
   END
END
      
PRESS_FIRE AT SCREEN 0
     # Detectar el contenedor al entrar en la cámara
     # Comprobar si el jugador lleva todo
   IF PLAYER_IN_X 17,49
   IF PLAYER_IN_Y 111,143
   IF OBJECT_COUNT = 15
        THEN
             IF FLAG 5 = 1
             THEN
              WIN GAME
             END
       END
END
Última edición por NeilParsons el Mar, 11 Ago 2015, 17:30, editado 1 vez en total.
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 » Mar, 11 Ago 2015, 15:08

Vaya mareo... :cabesa: :cabesa: :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 » Mar, 11 Ago 2015, 15:10

Por cierto, estaba viendo una de las últimas versiones de la Churrera y me han hablado de que tiene más chicha que la versión que estaba usando y me llamó la atención lo de los tiles animados, entre otras cosas. Si acaso, preferiría utilizarlo en otro juego, si acaso me diese por hacer otro posteriormente.
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 » Mar, 11 Ago 2015, 21:22

Buenas Neil, ya se que puede ser un poco chorra, pero, ¿activaste en config.h el script?, como no haces referencia a ello en el post.

EDITO: En cuanto al script , como te comente no puedes poner IFs anidados, y tienes que tener cuidado con algunas de las condiciones porque se van a repetir continuamente porque la condición siempre se va a cumplir (esto con la práctica te darás cuenta en seguida).

SET_FIRE_ZONE lo que crea es un area en la zona de juego que automáticamente lanza el script cuando el personaje se encuentre sobre ella. mientras siga estando sobre la zona va a estar continuamente llamando al script. Por otro lado "IF PLAYER_TOUCHES " implica que si alguien está sobre el tile indicado y pulsa la tecla de disparo el script tambié se ejecutara tantas veces como pulsemos la tecla de acción. Por tanto , normalmente al usar estas dos instrucciones, tenemos que controlar con una flag (para que no se repita el proceso continuamente) el IF PLAYER_TOUCHES, tal y como lo haces en la parte de ENTERING

En el caso de la pantalla 17:

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
END

PRESS_FIRE AT SCREEN 17
   # Si lo cojemos, añadirlo a lista
   IF PLAYER_TOUCHES 13, 5
   IF FLAG 2 = 0              <------------------ Indispensable esta condición, sino cada vez que estemos tocando el tile 13,5 se ejecutaria todo el código.
   THEN
      INC FLAG 2, 1          <--------- Sigo pensando que es mejor que uses SET FLAG 2, 1 en lugar de incrementar la flag, pero esto es trivial y no afecta al código en este caso
      PRINT_TILE_AT (2, 21) = 29
      SOUND 6
      SET TILE (13, 5) = 0 // Borrar tile y poner fondo en su lugar
   END
END

Volver a “MK2”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado