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.
$this->bbcode_second_pass_code('', '#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 ??
$this->bbcode_second_pass_code('', '#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
Proyecto CarWars!
Moderador: na_th_an
- salvaKantero
- Mensajes: 8
- Registrado: Vie, 08 Ene 2016, 20:00
- Contactar:
Proyecto CarWars!
53h41h4Ch56h41h
Re: Proyecto CarWars!
¡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:
$this->bbcode_second_pass_code('', '#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!
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:
$this->bbcode_second_pass_code('', '#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..."
- salvaKantero
- Mensajes: 8
- Registrado: Vie, 08 Ene 2016, 20:00
- Contactar:
Re: Proyecto CarWars!
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...
$this->bbcode_second_pass_code('', '
#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.')
$this->bbcode_second_pass_code('', '#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!
$this->bbcode_second_pass_code('', '
#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.')
$this->bbcode_second_pass_code('', '#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!
53h41h4Ch56h41h
Re: Proyecto CarWars!
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 (4.48 KiB) Visto 31809 veces
(_\_) (_|_) (_/_) (_|_) ILLO KE HEHEHEHEHEHEEEHEHEHEH!
¡Activa tu rainbow pechónico!
¡Activa tu rainbow pechónico!
- salvaKantero
- Mensajes: 8
- Registrado: Vie, 08 Ene 2016, 20:00
- Contactar:
Re: Proyecto CarWars!
Ala, pues sí que se parece. No tenía noticias de este juego.
Esperemos que tarde o temprano terminemos los dos.
Esperemos que tarde o temprano terminemos los dos.
53h41h4Ch56h41h
Re: Proyecto CarWars!
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
Como diría Rorshach: "Urm..."
Re: Proyecto CarWars!
No no, de mockup nada
Hay demo jugable, con gráficos cambiados
El tema es que lleva como 3 años parado
Hay demo jugable, con gráficos cambiados
El tema es que lleva como 3 años parado
(_\_) (_|_) (_/_) (_|_) ILLO KE HEHEHEHEHEHEEEHEHEHEH!
¡Activa tu rainbow pechónico!
¡Activa tu rainbow pechónico!
Re: Proyecto CarWars!
No lo recordaba
Sí sé que cuando dijimos el años pasado de rehacerlo con el motor nuevo no llegué a hacer nada, sólo cábalas.
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..."
- salvaKantero
- Mensajes: 8
- Registrado: Vie, 08 Ene 2016, 20:00
- Contactar:
Re: Proyecto CarWars!
Tengo otro problemilla.
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 ???
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 ???
53h41h4Ch56h41h
¿Quién está conectado?
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 7 invitados