Repeticiones (no es urgente, pero conversemos xD)

Started by HenBanKeN, June 11, 2011, 09:04:46 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

HenBanKeN

Suena funcional aunque muy engorroso como dicen.

Gracias JaViS por tu respuesta.

Pero me surge una duda. Qué pasa con los procesos que mueren en algun momento? Cómo lo haría para, en la repetición, "revivir" esos procesos?
Aún aprendiendo a manejar mis herramientas...

JaViS

no vas a usar los mismos procesos, vas a usar 'copias' del tipo 'repeticion' como te puse en el ejemplo mas arriba. son copias sin logica, solamente reproducen el resultado de guardar las variables locales de los procesos originales.
Working on Anarkade. A couch multiplayer 2D shooter.

HenBanKeN

Aaaah toda la razón =O... no comprendí mucho al principio, pero justamente como explicas, las variables locales son las que determinan todo lo que se va viendo por pantalla... Así que si, una vez terminada la partida, le pasas todas sus variables locales predefinidas (guardadas previamente) a este nuevo proceso en cada frame, sería capaz de animarse tal cual lo hace el proceso original...
aha!

Ya lo he pillado xD disculpad lo lento pero es que me ha quebrao  un poquito la cabeza. Sí, creo que usare listas enlazadas.

La idea de JaViS es genial! Karma++;!

Gracias a todos por sus respuestas, es bueno que la comunidad sea tan ingeniosa, y tan cooperativa. Trataré de ayudar en lo que pueda también.

Saludos!
Aún aprendiendo a manejar mis herramientas...

SplinterGU

vas a tener que agregar una variable tipo a los procesos y setear en cada una el tipo de proceso, o hacer whiles get_id por tipo... e ir guardando listas separadas.

bastante engorroso.

EDIT: realmente no importa el tipo, con su grafico y las coordenadas y luego ir metiendo procesos dummy de los mismos ya esta.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

JaViS

Working on Anarkade. A couch multiplayer 2D shooter.

HenBanKeN

Aún aprendiendo a manejar mis herramientas...

SplinterGU

Download Lastest BennuGD Release: http://www.bennugd.org/node/2

JaViS

#22


jaja, la verdad es que es un lindo problemita. La parte de los procesos ya esta mas o menos resuelta con eso, ahora tenes que ver como y que vas a guardar del resto de la info, como dice Splinter, posiciones de Scroll, paletas, tablas de blend, lo que estes usando.

Tambien estoy pensando en que quizas necesites guardar en que momento de tu grabacion nace un nuevo proceso (como por ejemplo, una explosion)

cuando muere es facil, es cuando no tenes mas nada para reproducir XD

suerte con eso! :D
Working on Anarkade. A couch multiplayer 2D shooter.

HenBanKeN

Quote from: JaViS on June 15, 2011, 12:09:25 PM
Tambien estoy pensando en que quizas necesites guardar en que momento de tu grabacion nace un nuevo proceso (como por ejemplo, una explosion)

También pensaba en eso, ya que en mi juego hay unos dos procesos que siempre están apareciendo y desapareciendo... jum jum... habrá que meter las manos en la masa, y en el camino ir viendo qué cosillas pasan.
Aún aprendiendo a manejar mis herramientas...

Drumpi

Eso es fácil de hacer: antes de escribir las estructuras de ese frame, indica con una variable cuantas de estas van a existir. Después lees tantas como indiquen y asignas los valores a los procesos. El orden te va a dar igual, y al proceso que se lo asignes, pues vas a cambiar la posición, gráfico y todos los estados de todos los procesos.
Si usas listas enlazadas sólo te tendrás que preocupar de añadir unos pocos procesos nuevos, o eliminar algunos que no se usen. Al fin y al cabo, todos los procesos de la repetición tendrán un código tal que así:

process obj_repeticion ()
begin
    signal(id,s_freeze);
    frame;
end


Y sus variables se escriben desde fuera, y te sirven para el prota, para los disparos, para el decorado o incluso para los datos en pantalla como la energía y todo eso.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

HenBanKeN

A ver, no sé si entendí.

Lo que entendí, es que en cada frame, debería comprobar cuántos procesos existen, y guardar ese valor en una variable. Después, leo tantas variables locales de procesos, como esa variable me diga, para ese frame. Y más adelante, por cada frame, vuelco todas las variables locales sobre una cantidad de procesos obj_repeticion dada por la cantidad de procesos existentes en ese frame. ¿algo así? xD

Nuevamente, siento un poco preguntar tanto, pero teniendo aproximadamente una semana de experiencia en Bennu, me cuesta seguir un poco el ritmo de la conversación xD jeje.

saludos!
Aún aprendiendo a manejar mis herramientas...

Drumpi

Más o menos.
Supon que tenemos un tipo de datos propio (o una estructura) donde se almacena la info importante de cada proceso (X,Y,FILE,GRAPH...). Llamémosle estructura PERSO.
Luego tenemos un fichero donde hemos guardado cientos de estructuras de este tipo.

Empezamos a leer el fichero. El primer dato que leemos es un entero con valor 3, eso significa que a continuación leeremos tres PERSO y le asignaremos sus valores a tres procesos como el que te puse en mi último mensaje del hilo (obj_repeticion). Hacemos FRAME.
Leemos otro entero del fichero, por ejemplo 5, por lo que leeremos cinco estructuras PERSO. Aquí podemos hacer dos cosas:
-Eliminar todos los procesos obj_repeticion, crear cinco nuevos y asignarle los valores.
-Asignar valores a los tres procesos existentes y crear dos nuevos.
Lo suyo es hacer lo segundo, pero entonces debes controlar cuándo crear nuevos procesos obj_repeticion y cuando eliminar los restantes (aquí vendría bien tener una lista enlazada de procesos).
Y haces FRAME.

Y repites mientras haya datos en el fichero.


Puedes añadir más cosas, por ejemplo, estructuras sobre paletas, inicio de scrolls, o cosas así, y tener un entero que te diga cuantas estructuras de esas hay en cada frame. Por ejemplo, en lugar de leer un entero a cada frame, puedes leer tres que te digan el número de estructuras PERSO, el número de estructuras MIS_PALETAS y el numero de estructuras MI_SCROLL respectivamente (y si no se usa en ese frame, pues se pone 0 y no se lee nada).

Suena más complicado de lo que realmente es. Yo hago algo parecido en mi motor de tiles (en el proceso control). Pero vamos, empieza por algo sencillo y lo vas mejorando con el paso del tiempo.
Hala, como con 1001 procesos sólo va a 9 FPS, vamos a meterle 32 veces más, a ver si revienta.
(Drumpi epic moment)

HenBanKeN

Lo he pillao =) muchas gracias por tu respuesta!
Aún aprendiendo a manejar mis herramientas...