Pinball Action Remake

Started by FreeYourMind, May 28, 2010, 09:48:10 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

FreeYourMind

Grácias. De todos modos ya he descubierto el error :)
Poder saber el numero de procesos sin esa variable auxiliar seria muy util, ya que poner esa variable al crear un proceso no es muy comodo la verdad.

SplinterGU

Quote from: FreeYourMind on July 09, 2010, 10:40:31 PM
...
Poder saber el numero de procesos sin esa variable auxiliar seria muy util, ya que poner esa variable al crear un proceso no es muy comodo la verdad.

podria preguntar de que estas hablando? "sin esa variable auxiliar" suena que estas pensando en alto.

como sea, para saber el numero de procesos, haces un while( get_id(...)) y los contas.

no es lo mejor, pero es una opcion a tener un contador, aunque mejor es tener un contador.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Drumpi

Pues desde la consola de debug (ctrl+c, compilando con -g y usando la mod_debug), yo suelo usar F2 para localizar todos los procesos, así sé cuándo al salir de una ejecución se me ha quedado algún proceso por ahí.
Otra cosa es que uses decenas de procesos iguales, ahí si que vendría bien el truco de Splinter ^^U
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)

FreeYourMind

Drumpi, que era posible con el Debug ya lo habia dicho, pero estaba para no usarlo  ;D

Me podeis poner el truco de splinter que sea sólo hacer copy/paste en mi codigo ?

Si hay que escribir el nombre de los procesos usados, no hace falta, eso es volver a lo incomodo que me referia.

No seria muy complicado una variable interna en Bennu que te diga sencillamente el numero de procesos activos en el instante tal como la variable fps te dice los frames ?

Drumpi

temp=get_id(type nombre_proceso);
while (temp)
contador++;
temp=get_id(type nombre_proceso);
end

Y repites lo mismo para todos los procesos que tengas en activo.
Este código tan simple también es MUY potente, porque si sustituyes contador++ por SIGNAL, te permite hacer PAUSAS en cualquier juego (si tienes un cierto orden entre procesos pre-congelados y los que no, puedes incluso usar _tree y ahorrarte código).
De hecho, metido en una función, con la señal en cuestión como parámetro de entrada, te sirve para congelar, despertar y matar todos los procesos en activo en una sola línea.
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)

FreeYourMind

Grácias, aunque no es comodo poner eso en todos los procesos.
Karma...

SplinterGU

Quote from: FreeYourMind on July 10, 2010, 07:54:32 AM
Drumpi, que era posible con el Debug ya lo habia dicho, pero estaba para no usarlo  ;D

Me podeis poner el truco de splinter que sea sólo hacer copy/paste en mi codigo ?

Si hay que escribir el nombre de los procesos usados, no hace falta, eso es volver a lo incomodo que me referia.

No seria muy complicado una variable interna en Bennu que te diga sencillamente el numero de procesos activos en el instante tal como la variable fps te dice los frames ?

claro que podria ser posible.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

Quote from: FreeYourMind on July 10, 2010, 01:20:02 PM
Grácias, aunque no es comodo poner eso en todos los procesos.
Karma...

no, no necesitas ponerlo en cada proceso, puedes hacerlo solo en un proceso controlador, aunque tendrias el estado con respecto al ultimo frame o al momento donde el controlador se ejecuto dentro de ese frame.

otra opcion es que esto sea una funcion y lo ejecutes solamente en los procesos que necesitas saber el numero de procesos.

aunque yo imagino que lo mas probable es que necesites saber cuantos procesos de cierto tipo existen, no creo que quieras saber todos, no le veo un sentido practico en un pinball.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

FreeYourMind

El saber el numero de procesos, es practico porque puedes estar creando procesos fantasma en un loop por error de programación, y esto te permite saberlo facilmente, ya que en un dado momento sabes que tienes que tener x procesos no variables, y si los ves variar sabes que algo esta mal. Esto te evita esperar minutos para saber si esta ocurriendo, al esperar que el rendimiento del programa empeoré. Por suerte he descubierto el error, pero fue porque estuve mucho tiempo ejecutando el programa.
Con esto uno corre el riesgo de publicar un juego y que despúes cuando alguien lo juegue mucho tiempo este se vuelva lento. Obviamente no puedes ser un betatester que llegue a ese extremo, de tener que mirar todo al milimetro y pasar horas para ver si las cosas estan funcionando correctamente.
Esto facilita mucho la vida, te ayuda a saber el rendimiento del juego, ya que son los procesos uno de los motivos principales de queda de rendimiento, y poner esta variable interna es una cosa muy fácil y para nosotros es muy practica y util.

gecko

sumando un contador global al iniciar cada proceso, y restarlo con un on_exit puede ser una alternativa, eso si, bastante simplista creo.

No jugué al Pinball original, pero veo que te esta quedando muy bueno!
Torres Baldi Studio
http://torresbaldi.com

SplinterGU

Quote from: FreeYourMind on July 10, 2010, 05:53:31 PM
El saber el numero de procesos, es practico porque puedes estar creando procesos fantasma en un loop por error de programación, y esto te permite saberlo facilmente, ya que en un dado momento sabes que tienes que tener x procesos no variables, y si los ves variar sabes que algo esta mal. Esto te evita esperar minutos para saber si esta ocurriendo, al esperar que el rendimiento del programa empeoré. Por suerte he descubierto el error, pero fue porque estuve mucho tiempo ejecutando el programa.
Con esto uno corre el riesgo de publicar un juego y que despúes cuando alguien lo juegue mucho tiempo este se vuelva lento. Obviamente no puedes ser un betatester que llegue a ese extremo, de tener que mirar todo al milimetro y pasar horas para ver si las cosas estan funcionando correctamente.
Esto facilita mucho la vida, te ayuda a saber el rendimiento del juego, ya que son los procesos uno de los motivos principales de queda de rendimiento, y poner esta variable interna es una cosa muy fácil y para nosotros es muy practica y util.

muchacho, eso es en tiempo de desarrollo, no vas a tener la animalada del contador de procesos en el release, ademas si no vas a discriminar por procesos, solo estas viendo a groso modo si se generan infinidad de procesos, en ese caso, el debug+f2 como excelentemente te suguirio drumpi lo tenes sobrado, sino pones un proceso controlador que haga un loop de todos los procesos y los cuente, es lo mas simple, para detectar este problema no necesitas precision al instante, con 1 vez por frame esta sobrado tambien.
hacer el sistema de incrementar una variable y decrementarla es ridiculo.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

FreeYourMind

Primeras pruebas en la Wiz.

Menuda sorpresa desagradable, despúes de esperimentar con exito resoluciones inferiores que la maxima permitida, como 320x200, resulta que el rescalado a 196x240 parece no funcionar con Bennu en la consola.
Lo curioso es que el Mame si hace el rescalado perfectamente del original en la misma.

De momento lo pongo a 320x240 con la dimensión horizontal que eso conlleva...




DCelso

Y no puedes poner un fondo negro en 320x200 y reescalar solo las imágenes?
Monstruos Diabólicos

"A PAck of classic GAMEs For BennuGD" en desarrollo
http://code.google.com/p/apagame4be/

FreeYourMind

No porque la logica de movimientos, etc depende de la posición en proporción a la resolución. El rescalado evita que no tengas que tocar una sola linea de código.


Por cierto, la mejor noticia sin duda es volverte a ver por aqui. Te echabamos de menos, donde coño has andado ?! ;D

SplinterGU

funciona perfecto


import "mod_video";
import "mod_screen";
import "mod_map";
import "mod_debug";

begin

    scale_resolution=3200240;
    set_mode(224,256);

    put_screen(0,load_png("fondo.png"));

    loop
        frame;
    end

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