Página 14 de 37

Re: Proyecto Churrero: AVORCHA - Dudas y sugerencias

Publicado: Lun, 17 Mar 2014, 12:56
por na_th_an
Lo más que puedo hacer, por ejemplo, es un conversor que pille spriteset.png y saque dos binarios, prota.bin y enems.bin, y luego orientarte sobre cómo usarlo.

Re: Proyecto Churrero: AVORCHA - Dudas y sugerencias

Publicado: Lun, 17 Mar 2014, 13:01
por Nightwolf
$this->bbcode_second_pass_quote('na_th_an', 'L')o más que puedo hacer, por ejemplo, es un conversor que pille spriteset.png y saque dos binarios, prota.bin y enems.bin, y luego orientarte sobre cómo usarlo.


Cualquier cosa que hagas es de agradecer (¡¡¡¡como poner huevos y reproducirte para que haya más como usted!!!) :_)

Re: Proyecto Churrero: AVORCHA - Dudas y sugerencias

Publicado: Lun, 17 Mar 2014, 13:13
por na_th_an
Mira, este sirve para esto. Coge tu png y saca dos binarios. La idea es cargar esos binarios en el librarian y ver qué número de recursos se le asignan.

Luego debería ser tan sencillo como descomprimir esos recursos con get_resource en el sitio correcto... Podrías tener todo esto en tu función EXTERN y codificarlo de alguna forma.

Los pasos serían:

1.- Hacer los spritesets que necesites. Sabiendo que el conversor saca los 8 primeros frames en un archivo y los 8 siguientes en otro, organízate como quieras.
2.- Cuando tengas todos los binarios de enemigos y protas que necesites, los comprimes con apack uno a uno.
3.- Añades todos en la lista de recursos de librarian (list.txt). Ejecuta librarian y abre librarian.h para ver qué IDs tiene cada set de sprites.
4.- Luego te codificas do_extern_action para que descomprima lo que quieras en el sitio correcto.

Por ejemplo, imaginate que tenemos tres sets de enemigos y dos sets para el prota en los recursos 10, 11, 12, 13 y 14, en ese orden.

Podemos usar n = 1, 2 y 3 para poner los enemigos y 4 y 5 para poner al prota.

$this->bbcode_second_pass_code('', 'void do_extern_action (unsigned char n) {
switch (n) {
// Cambiar enemigos:
case 1:
get_resource (10, sprite_1_a + 144 * 8);
break;
case 2:
get_resource (11, sprite_1_a + 144 * 8);
break;
case 3:
get_resource (12, sprite_1_a + 144 * 8);
break;
// Cambiar prota:
case 4:
get_resource (13, sprite_1_a);
break;
case 5:
get_resource (14, sprite_1_a);
break;
}
}
')

Desde el script, para poner el segundo set de enemigos haríamos un EXTERN 2. Para poner el segundo set del prota, EXTERN 5.... Y así.

Re: Proyecto Churrero: AVORCHA - Dudas y sugerencias

Publicado: Lun, 17 Mar 2014, 13:52
por elborra
Uhhh churumbel en breve! Enhorabuena na_th_an. Jejeje me ha hecho gracia lo de que tu tiempo libre tiende a 0 vertiginósamente :P no hay verdad más grande. Yo de ti dormiría todo lo que puedas mientras puedas.

Y sobre la duda de Nightwolf, depués de lo que te ha dicho na_th_an, no hay mucho más que añadir, salvo recordarte que EXTERN n como tal depende del script y por tanto si el concepto de "al vuelo" implica que no vaya a través del script si o si tendrás que tocar C para crear la condición que llame a get_resource - eso si que quedaría igual- (aunque hay bastantes funciones dentro de la churrera que podrán ayudarte)

Re: Proyecto Churrero: AVORCHA - Dudas y sugerencias

Publicado: Lun, 17 Mar 2014, 13:59
por Nightwolf
Erm, me he perdido :cabesa:

¿Pero la función get_resource no existe ya? ¿A qué te refieres elborra?

Re: Proyecto Churrero: AVORCHA - Dudas y sugerencias

Publicado: Lun, 17 Mar 2014, 14:43
por na_th_an
Se refiere a que para usar lo que te propongo (y tal y como te lo propongo) necesitas estar usando el scripting.

Re: Proyecto Churrero: AVORCHA - Dudas y sugerencias

Publicado: Lun, 17 Mar 2014, 15:29
por elborra
Exacto, lo que digo es que tienes que tener en cuenta que el scripting se ejecuta en momentos específicos:

- Cuando se entra en una pantalla
- Cuando se pulsa disparo
- Cuando se mueve un bloque empujable ( si se define)
- y no se si con el tema de temporizador y/o la nueva funcionalidad de "inventario"...

La cuestión es que no siempre se está ejecutando los scripts y por tanto el concepto de "al vuelo" no es del todo real, ya que sólo cuando ocurra alguna de las anteriores condiciones se ejecutará el script de la pantalla específica (que es donde tendrás el EXTERN n que ejecute el get_resource (10, sprite_1_a + 144 * 8) (por ejemplo).

Así, para poder hacer algo totalmente al vuelo ya sería cosa de programar en c (dentro de engine.h probablemente) el "comportamiento" para el cambio de los sprites.

¿Qué puedo hacer y que no sin meterme a modificar el motor (usando EXTERN n y get_resource)?. Te pongo una serie de ejemplos
- Quiero cambiar los sprites de los enemigos que hay en ciertas pantallas. OK
- Cambiar los sprites del personaje cuando coje un objeto (usando fire zone) OK
- Cada vez que disparo (o pulso la tecla de acción) cambiar los sprites del personaje OK
- Cambiar los sprites del personaje cuando lleva mucho tiempo sin moverse (tipo batman) NOP - no estoy muy seguro de esta afirmación por el tema del cambio que se hizo a TIMER desde el scripting - lo que está claro es que no se animaría puesto que no estamos moviendo al personaje xD)
- Digamos que a mitad de la vida de un enemigo quiero cambiarle el sprite por uno en el que se le vea agonizando NOP

Son unos pocos ejemplos para que te hagas una idea de que se puede y que no se puede hacer sin modificar el motor de la churrera; modificándolo "TODO" es posible :D (Churrera Power!!)

Re: Proyecto Churrero: AVORCHA - Dudas y sugerencias

Publicado: Lun, 17 Mar 2014, 16:07
por Nightwolf
Ah vale Elborra, que no te había entendido muy bien a lo que te referías jeje.

Sí, el efecto "lanzador" para lo que tengo en mente, sucedería al cambio de pantalla por ejemplo, o recoger un objeto :P (lo de animar al personaje cuando está mucho tiempo parado sería una cucada jeje)

De esta forma, se pueden tener gráficos para decorar con más detalles y/o animadas. Antorchas encendidas (¡y animadas siiii) en una cueva tiene mucho sentido. Pero en una zona de agua, pues quizás no tanto. Si se pueden tener grupos de tiles específicos por zonas, pues mayor riqueza aunque solo sea para el ojo, que siempre se agradece :P

Re: Proyecto Churrero: AVORCHA - Dudas y sugerencias

Publicado: Lun, 17 Mar 2014, 17:18
por elborra
$this->bbcode_second_pass_quote('Nightwolf', 'D')e esta forma, se pueden tener gráficos para decorar con más detalles y/o animadas. Antorchas encendidas (¡y animadas siiii) en una cueva tiene mucho sentido. Pero en una zona de agua, pues quizás no tanto. Si se pueden tener grupos de tiles específicos por zonas, pues mayor riqueza aunque solo sea para el ojo, que siempre se agradece :P
Por supuesto, para tiles lo mismo (sin tocar el motor -con extern y get_resource(pagina, recurso, destino) donde el destino sería la estructura (ya definida en la churrera) tileset[] - , pero no tienen nada que ver con los sprites, de hecho los sprites no tienen "color", toman los de los atributos de los tiles, por si te habías planteado dibujar al personaje con una antorcha en la mano).

Importante en este punto que si se trata del mismo nivel per se donde vas a cambiar el tileset según la pantalla tendrás también que cambiar el comportamiento de los tiles (traspasable, que haga daño, pared, etc...) a no ser que cada comportamiento de cada tile de cada set (misma posición dentro del tileset) sea igual entre sets. Usease que el tile 0 de los set 1,2,3... sea siempre el mismo, por ejemplo "no traspasable" y así con los 48 tiles; algo poco probable. Aún así, esto también es muy facil de solventar (en el hilo sobre dudas de mi juego na_th_an ya explicó una forma sencilla y elegante de implementarlo.

Re: Proyecto Churrero: AVORCHA - Dudas y sugerencias

Publicado: Lun, 17 Mar 2014, 22:35
por Jarlaxe
Entonces para iluminar a este pobre zoquete que se defiende con los gráficos, pero que de programación "ná de ná",
eso de tener más de 48 tiles en un juego sin ser multi carga, como que es imposible.

Porque aunque fuera posible vaciar la memoría en determinada pantalla para cargar otro set gráfico, el problema es que los dos o tres sets gráficos deberían cargarse de una tacada, y ahí está el problema. La falta de memoria, ¿no?

Es de perogrullo, verdad? ¬_¬ u

:loco: :porro: