Proyecto CarWars!

Ayuda sobre MT Engine MK2.

Moderador: na_th_an

Avatar de Usuario
salvaKantero
Mensajes: 8
Registrado: Vie, 08 Ene 2016, 20:00
Contactar:

Proyecto CarWars!

Mensajepor salvaKantero » Sab, 09 Ene 2016, 11:58

Hola Compañeros. He abierto este hilo para exponer algunas dudas que me han surgido haciendo este juego. Comenzó como un pequeño mapa para experimentar todo lo que no hice en "Planeta Rojo", pero al final como era de esperar es probable que se convierta en juego.

Se trata de un proyecto MK2 0.89 en vista genital para 128k con tres niveles tipo COMPRESSED_LEVELS (como en Goku-mal). El prota es un bólido tipo kart que debe superar los tres niveles consiguiendo monedas para comprar armas (un nuevo HITTER en genital), tarjetas de peaje, o dinero para sobornar y superar controles policiales, etc.

La duda viene cuando uso el comando TILE_GET para conseguir las monedas.

Código: Seleccionar todo

#define TILE_GET            18      // If defined, player can "get" tile #
#define TILE_GET_FLAG       6      // And this increments flag #
#define TILE_GET_SCRIPT            // Run PLAYER_GETS_COIN when player gets tile TILE_GET


Las monedas vienen impresas ya desde MAPPY, no desde script. El prota se traga las monedas y aumenta el flag, pero cuando regreso a la misma pantalla las monedas reaparecen de nuevo, cosa que no me interesa para este juego.

He localizado el código en playermove.h pero no veo claro si actualiza el mapa o se limita a cambiar el tile de la moneda por el tile cero. Puede ser que no esté implementado en MK2 0.89 ??

Código: Seleccionar todo

#ifdef TILE_GET
   // Tile get
   gpxx = (gpx + 8) >> 4;
   gpyy = (gpy + 8) >> 4;
   if (qtile (gpxx, gpyy) == TILE_GET) {
      gpaux = gpxx + (gpyy << 4) - gpyy;
      map_buff [gpaux] = 0;
      map_attr [gpaux] = 0;
      draw_coloured_tile_gamearea (gpxx, gpyy, 0);
      flags [TILE_GET_FLAG] ++;
#ifdef MODE_128K
         _AY_PL_SND (5);
#else
         peta_el_beeper (4);
#endif

#ifdef TILE_GET_SCRIPT
      run_script (2 * MAP_W * MAP_H + 4);
#endif

Recuerdo perfectamente que en NINJAJAR o SIR ABABOL 2 las monedas consumidas no volvían a aparecer. Entonces?? El código de estos juegos es diferente? O sí que está implementado y me falta por hacer algo?

Saludosssss
:alien: 53h41h4Ch56h41h
Avatar de Usuario
na_th_an
Mensajes: 26412
Registrado: Vie, 09 Ene 2009, 12:18

Re: Proyecto CarWars!

Mensajepor na_th_an » Lun, 11 Ene 2016, 09:40

¡Bienvenido!

Sir Ababol no lo podemos tomar como referente porque usa su propio motor. En Ninjajar tampoco tenemos la misma situación pues las monedas se imprimían al vuelo sobre la pantalla por lo que no existía persistencia.

Sin embargo podemos aplicar la solución de Sir Ababol 2 en tu caso: modificar el mapa. Esto solo sería viable si estás usando mapas comprimidos (o sea, si tu juego es multi nivel). Si no es multi nivel, aún podemos guardar una copia comprimida del mapa para restaurarlo antes de cada partida mediante el librarian.

Ahora leo bien y veo que tienes múltiples niveles ¡bien! Entonces no hay problema.

Junto con los cambios a map_attr y a map_buff habría que tocar la estructura que tiene la copia descomprimida del mapa sobre la que se está jugando. La forma de hacerlo depende del formato de tu mapa, ¿estás usando unpacked o packed?

Si miras en la rutina que maneja los bloques destructibles del mapa (breakable-s.h), verás esto:

Código: Seleccionar todo

#ifdef UNPACKED_MAP
   map [n_pant * 150 + gpaux] = 0;
#else
   map_pointer = map + n_pant * 75 + (gpaux >> 1);
   *map_pointer = (gpaux & 1) ? ((*map_pointer) & 0xf0) : ((*map_pointer) & 0x0f);
#endif


Ese código coloca un tile 0, si necesitas otro habría que modificarlo levemente. Creo que con que coloques eso en el trozo de código que has pegado lo tendrías.

Ahora mismo tengo la versión actual 0.90 de MK2 bastante patas arriba (además, el juego no lo toco desde hace meses) pero creo que esta es una opción que debería incluír. ¡Gracias por la idea!
Como diría Rorshach: "Urm..."
Avatar de Usuario
salvaKantero
Mensajes: 8
Registrado: Vie, 08 Ene 2016, 20:00
Contactar:

Re: Proyecto CarWars!

Mensajepor salvaKantero » Lun, 11 Ene 2016, 23:26

Fenomenal nathan. Funciona perfectamente (+67 bytes). Así me quedaría el código para la recogida persistente de monedas en config.h y playermove.h...

Código: Seleccionar todo

#define TILE_GET  9  // If defined, player can "get" tile #
#define TILE_GET_FLAG  6  // And this increments flag #
#define TILE_GET_SCRIPT   // Run PLAYER_GETS_COIN when player gets tile TILE_GET
#define PERSISTENT_TILE_GET  // Only works with compressed levels/128K games.


Código: Seleccionar todo

#ifdef TILE_GET
   // Tile get
   gpxx = (gpx + 8) >> 4;
   gpyy = (gpy + 8) >> 4;
   if (qtile (gpxx, gpyy) == TILE_GET) {
      gpaux = gpxx + (gpyy << 4) - gpyy;
      map_buff [gpaux] = 0;
      map_attr [gpaux] = 0;
      draw_coloured_tile_gamearea (gpxx, gpyy, 0);
      flags [TILE_GET_FLAG] ++;
#ifdef PERSISTENT_TILE_GET
      map_pointer = map + n_pant * 75 + (gpaux >> 1);
      *map_pointer = (gpaux & 1) ? ((*map_pointer) & 0xf0) : ((*map_pointer) & 0x0f);
#endif      
#ifdef MODE_128K
         _AY_PL_SND (5);
#else
         peta_el_beeper (4);
#endif

#ifdef TILE_GET_SCRIPT
      run_script (2 * MAP_W * MAP_H + 4);
#endif
   }
#endif


Gracias por la ayuda!
:alien: 53h41h4Ch56h41h
Avatar de Usuario
na_th_an
Mensajes: 26412
Registrado: Vie, 09 Ene 2009, 12:18

Re: Proyecto CarWars!

Mensajepor na_th_an » Mar, 12 Ene 2016, 10:42

¡Genial! Me gusta tu estilo :D
Como diría Rorshach: "Urm..."
Avatar de Usuario
angel
Mensajes: 23212
Registrado: Vie, 09 Ene 2009, 13:04
Ubicación: Torreznolandia
Contactar:

Re: Proyecto CarWars!

Mensajepor angel » Mar, 12 Ene 2016, 13:45

He visto alguna cosilla por twitter y tiene muy buena pinta tu proyecto! me recuerda al Motorheart, un churrera de coches que empezamos hace por lo menos 3 años y que al final no hemos terminado :-)
Adjuntos
mock.png
mock.png (4.48 KiB) Visto 11625 veces
(_\_) (_|_) (_/_) (_|_) ILLO KE HEHEHEHEHEHEEEHEHEHEH!

¡Activa tu rainbow pechónico!
Avatar de Usuario
salvaKantero
Mensajes: 8
Registrado: Vie, 08 Ene 2016, 20:00
Contactar:

Re: Proyecto CarWars!

Mensajepor salvaKantero » Mar, 12 Ene 2016, 15:32

Ala, pues sí que se parece. No tenía noticias de este juego.
Esperemos que tarde o temprano terminemos los dos. ;)
:alien: 53h41h4Ch56h41h
Avatar de Usuario
na_th_an
Mensajes: 26412
Registrado: Vie, 09 Ene 2009, 12:18

Re: Proyecto CarWars!

Mensajepor na_th_an » Mié, 13 Ene 2016, 13:10

El Motorheart lleva en "estado mockup" desde que íbamos por la Churrera 2.1, si mal no recuerdo. Hace un año y pico se nos ocurrió meter en MK2 un nuevo motor para poder girar y avanzar usando 16 ángulos (aunque sólo hubiese 8 direcciones para el sprites) y usarlo para relanzar la idea de Motorheart (si mal no recuerdo se nos había ocurrido una hidea para una historia chulísima) pero no sé qué paso. Seguramente nos entraría otra cosa :D
Como diría Rorshach: "Urm..."
Avatar de Usuario
angel
Mensajes: 23212
Registrado: Vie, 09 Ene 2009, 13:04
Ubicación: Torreznolandia
Contactar:

Re: Proyecto CarWars!

Mensajepor angel » Jue, 14 Ene 2016, 09:45

No no, de mockup nada :lol:

Hay demo jugable, con gráficos cambiados :D

El tema es que lleva como 3 años parado :lol:
(_\_) (_|_) (_/_) (_|_) ILLO KE HEHEHEHEHEHEEEHEHEHEH!

¡Activa tu rainbow pechónico!
Avatar de Usuario
na_th_an
Mensajes: 26412
Registrado: Vie, 09 Ene 2009, 12:18

Re: Proyecto CarWars!

Mensajepor na_th_an » Jue, 14 Ene 2016, 11:53

No lo recordaba :lol:

Sí sé que cuando dijimos el años pasado de rehacerlo con el motor nuevo no llegué a hacer nada, sólo cábalas.
Como diría Rorshach: "Urm..."
Avatar de Usuario
salvaKantero
Mensajes: 8
Registrado: Vie, 08 Ene 2016, 20:00
Contactar:

Re: Proyecto CarWars!

Mensajepor salvaKantero » Dom, 24 Ene 2016, 21:22

Tengo otro problemilla. :roll:
Los enemigos perseguidores o de tipo 3 no me hacen caso y en vez de ir a velocidad 1,2 ó 4 van siempre a toda leche. Muy muy rápido. Es curioso porque si pongo tres perseguidores en una misma pantalla, el tercero sí que se mueve a velocidad normal.
He revisado por encima el código de move_pursuers.h pero no lo entiendo muy bien. Alguna idea de por donde puedo ir mirando ???
:alien: 53h41h4Ch56h41h

Volver a “MK2”

¿Quién está conectado?

Usuarios navegando por este Foro: Bing [Bot] y 1 invitado