Migración de juegos Fenix a Bennu - Apuntes de diferencias y resoluciones.

Started by FreeYourMind, September 30, 2009, 05:20:12 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

SplinterGU

no, no siempre sera asi... o mejor dicho, eso no asegura que a lo largo de la vida de los mismos esto se mantenga... pero por otro lado (actualmente) en todo caso seria al revez, si ejecutas primero protagonista y luego gancho, entonces luego de la primera ejecucion gancho se ejecutar antes que protagonista (o incluso en la primera ejecucion, depende de muchos factores)... pero esto no siempre puede ser asi... y el orden puede cambiar en cualquier momento o constantemente... no hay que asumir nunca nada, en ningun caso... asumir es el mas grande error de un programador...

hay que hablar de muchas cosas para explicar los porque de esto, y escapa de la consulta... pero como bien dice el help de DIV, en procesos con igual prioridad el orden de ejecucion de los mismos es indeterminado... hay que usar priority...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Drumpi

Para entendernos: en teoría, dos procesos de identica prioridad deberían ejecutarse a la vez, pero no es posible. Existe otro proceso, creado por el sistema, que decide quien se ejecuta antes. Este proceso tiene un código y siempre actúa igual, obviamente.
Pero si, por ejemplo, un proceso ejecuta "frame(0)", este se volverá a ejecutar al final (no ha llegado al 100% del frame) y puede cambiar el orden.
Ahora no se me ocurren otros factores que afecten, pero decir que "siempre se ejecutará en el mismo orden" es como pensar que los ID de los FPG "valen lo mismo que en el orden en que se cargaron".
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)

SplinterGU

...
no me agrada repetir temas... pero vamos de nuevo...

1) bennu/fenix/div/etc... no tienen multithread para la ejecucion de procesos... no ejecutan procesos concurrentemente... la filosofia multiproceso de la vm, no es mas que una secuenciacion en la ejecucion de los mismos...
2) frame(0) y otras yerbas, no tiene nada que ver con el orden de los procesos que estamos hablando... veamos... la creacion/destruccion de procesos representa la manipulacion de varias listas enlazadas y hasheadas por varias caracteristicas... cuando un proceso se borra o se crea uno nuevo, estas listas se ven afectadas en cuanto a orden, por cuestiones de rendimiento y optimizaciones... pero si (como dice drumpi) hay que entender que por estas caracteristicas yh otras no siempre se ejecutan en el mismo orden... lo unico que define la ejecucion de uno antes que otro es la prioridad (variable local priority)
Download Lastest BennuGD Release: http://www.bennugd.org/node/2


Drumpi

¿Y quien ha dicho nada de procesamiento paralelo? ;D
Cómo se nota que la última asignatura que me quedaba de la carrera iba sobre SO y sistemas en tiempo real :D :D :D

Respecto al uso de frame(0), pensaba que al terminar su estado de "ejecutando", al no competar un frame al 100%, este volvía a la lista de procesos "ready", colocándose detrás del último proceso en dicha lista con la misma prioridad, con lo cual, si luego todos esos procesos terminan de ejecutarse, se habrán añadido a la lista de "ejecutados" en distinto orden al original. Si no es así, pido disculpas por mi error (a base de ellos se aprende).
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

Vale vale chicos. Lo que pasa realmente es que no estoy para mirar el código interno de Bennu para salir de mis dudas. Para eso estais vosotros  ;D

FreeYourMind

Ahora me entero que el fullscreen = true; de Fenix no funciona en Bennu !!!
Please help  :o

DCelso

¿Como que no funciona? ¿Has probado a hacer el set_mode después?
http://wiki.bennugd.org/index.php?title=Fullscreen
Creo que no llegaste a usarlo en fenix :D.
Monstruos Diabólicos

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

FreeYourMind

Si, antes y despues y no va. Si lo mire de un juego de fenix  ::)

FreeYourMind

Que raro! ahora ejecute de nuevo y ha funcionado (con el mismo prg).

Bueno, hay alguna forma de obtener la resolucion que tenemos en nuestro desktop ??
Esto seria muy util ya que quisiera ponerlo a fullscreen pero sketch, o sea a pantalla completa sin margenes negras.

DCelso

pues algo anda mal, yo en casi todos mis ejemplos pongo

If (key(_f))
 full_screen=!full_screen;
 set_mode(SCREEN_WIDTH,SCREEN_HEIGHT,SCREEN_DEPTH);
end

Y va de perlas.
¿donde lo pruebas?
Monstruos Diabólicos

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

DCelso

ok, ya decia yop. ;)
Supongo que esta get_desktop_size(), no se, no está documentada la mod_wm aún en la wiki, meavisó osk, en cuanto saque un hueco inserto la info.
Monstruos Diabólicos

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

SplinterGU

Quote from: Drumpi on November 02, 2009, 06:20:35 PM
¿Y quien ha dicho nada de procesamiento paralelo? ;D
Cómo se nota que la última asignatura que me quedaba de la carrera iba sobre SO y sistemas en tiempo real :D :D :D

Respecto al uso de frame(0), pensaba que al terminar su estado de "ejecutando", al no competar un frame al 100%, este volvía a la lista de procesos "ready", colocándose detrás del último proceso en dicha lista con la misma prioridad, con lo cual, si luego todos esos procesos terminan de ejecutarse, se habrán añadido a la lista de "ejecutados" en distinto orden al original. Si no es así, pido disculpas por mi error (a base de ellos se aprende).

frame(0)... lo manda al final de toda la lista, no importa la prioridad... o sea, lo manda a la cola...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

FreeYourMind

Si existe get_desktop_size() entonces Bennu esta cojonudo, con la opcion de rescalar de bajas resoluciones a mayores resoluciones, implementada recientemente, esa opción va venir de maravilla, ya que permitiria rescalar un juego en fullscreen siempre al tamaño de la resolución de nuestro ordenador.
Lamentablemente hasta que no arregle el portatil no voy poder probarlo.

FreeYourMind

Bueno despues de 2 semanas parado, estoy intentando seguir con mi proyecto de Bennu (lo que cuesta volver ;)).

Como puedo utilizar el INT GET_DESKTOP_SIZE(POINTER, POINTER) ??

No se que poner como parametros de entrada, antes de probar pensando que no tendria parametros, seria algo así:

scale_resolution = get_desktop_size();


Más cosillas:

1 - Si se ejecuta sobre DOS, como no tenemos Desktop tendriamos problemas ?
2 - Puede que Bennu no admita la resolución obtenida de nuestro Desktop ? en caso afirmativo como contornariamos el error para asignar una resolución admitida ?

Grácias.