Procesos dedicados a calculo.

Discusión en general sobre Gemix.
User avatar
shao
Posts: 6048
Joined: Wed Jun 17, 2009 4:51 pm

Procesos dedicados a calculo.

Post by shao »

Hola, creo recordar que hace tiempo hice una sugerencia sobre esto, me refiero a procesos que no declaran locales ni ninguna variable que no declares tu, usados simplemente para calcular o realizar operaciones sin mostrar graficos.
Que pensais sobre esto?, se hara? no se hara?.
User avatar
PAMERCO
Posts: 1519
Joined: Wed Feb 04, 2009 11:22 am
Location: palma de mallorca

Re: Procesos dedicados a calculo.

Post by PAMERCO »

pero para eso no estan las function??

o no lo he entendido bien
reto navidad 2011 santa´s nightmare
http://www.hot-ice-enterprise.com
primer juego comercial http://www.gemixstudio.com/forums/viewt ... 128&t=4146http://www.indievania.com/games/zombie-puf
User avatar
shao
Posts: 6048
Joined: Wed Jun 17, 2009 4:51 pm

Re: Procesos dedicados a calculo.

Post by shao »

Las funciones usan las locales predefinidas, a parte que detienen al proceso llamante, yo me refiero a procesos que ocupen únicamente la memoria de las variables que tú declares en ese proceso.

Sí tengo un proceso que tiene que estar controlando el evento donde se encuentra el personaje, ese proceso está ocupando la memoria de sus locales predefinidas aunque yo no vaya a usarlas.

Sí tienes varios procesos haciendo cálculos similares, pues estas ocupando una memoria que no es necesario ocupar.
User avatar
erkosone
Posts: 10656
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.
Contact:

Re: Procesos dedicados a calculo.

Post by erkosone »

Hace tiempo Simulatorone propuso y yo también lo comente, que se puedan crear funciones en gemix.
Ahora mismo las funciones de gemix son como las de div, osea, que no son funciones, son un segundo tipo de proceso, lo que interesa es poder crear funciones de verdad, y threads, con eso lo tienes solucionado.

Aunque eso tiene lagunas, por que sin un sistema de eventos.. de poco valen las funciones, ya que habría que tenerlas funcionando en un thread con un delay por timer para que no colapsen la cpu.
Es un tema delicado, a gemix le hacen falta mas cosas para poder hacer esto Shao.

Una solución bastante elegante y eficiente es tener un único proceso que haga de controlador de todos los eventos del juego, o por lo menos de todos los de cada etapa/parte del juego.
Yo la única forma que he encontrado que funcione rápido es mediante un switch así:

Ten en cuenta que en el programa donde se use hace falta una variable LOCAL llamada estado, entonces lanzas el gameController así: ID_gameController = gameController();
Y para destruirlo así: ID_gameController.estado = -1;

Yo uso siempre códigos como este:
[Codebox=gemix file=Untitled.gemix]process gameController();
// depende de la variable Global gameStatus..
// el programa debe tener una variable LOCAL llamada 'INT estdado'..
begin
SIGNAL_SET_BEHAVIOUR(ID, s_freeze, s_behaviour_ignore);
SIGNAL_SET_BEHAVIOUR(ID, s_kill, s_behaviour_ignore);
SIGNAL_SET_BEHAVIOUR(ID, s_kill_tree, s_behaviour_ignore);
switch(gameStatus)
case onMenu:
//...
end
case onPlaying:
//...
end
case onConfig:
//...
end
case onGameCredits:
//...
end
case onPause:
//...
end
end
// gameController destructor..
if(estado = -1)
break;
end
frame;
end[/Codebox]

cada CASE tiene asignado una constante definida en la cabecera del programa, algo así:
[Codebox=gemix file=Untitled.gemix]const
onMenu = -1000;
onPlaying = -1001;
onConfig = -1002;
onGameCredits = -1003;
onPause = -1004;[/Codebox]

Así te despreocupas de recordar valores numéricos, solo usas los nombres en todo el programa, quizá te sirva la idea..
User avatar
PAMERCO
Posts: 1519
Joined: Wed Feb 04, 2009 11:22 am
Location: palma de mallorca

Re: Procesos dedicados a calculo.

Post by PAMERCO »

creo que shao lo dice mas que nada por el tema de los recursos que consumen las variables locales predefinidas, las utilice o no, verdad??
reto navidad 2011 santa´s nightmare
http://www.hot-ice-enterprise.com
primer juego comercial http://www.gemixstudio.com/forums/viewt ... 128&t=4146http://www.indievania.com/games/zombie-puf
User avatar
shao
Posts: 6048
Joined: Wed Jun 17, 2009 4:51 pm

Re: Procesos dedicados a calculo.

Post by shao »

Sí, más que nada lo digo por eso, me pregunto por que tienen que ocupar esa memoria sí no se va a utilizar, que no es que sea mucha pero sería menos carga.
User avatar
erkosone
Posts: 10656
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.
Contact:

Re: Procesos dedicados a calculo.

Post by erkosone »

Creeme, un proceso en memoria es mucho mas que unas cuantas variables.. las variables es el menor de los problemas, los procesos tienen ID, prioridad, variables como graph y file, ahora física, entran en las listas de objetos del core... un sinfin de cosas mas además de las variables, Simu pidió "y con mas razón que un santo" que existan las clásicas funciones como en cualquier lenguaje, eso es una solución a medias por lo de los threads que te comentaba en este lenguaje.. pero un nuevo tipo de proceso "a pelo" la verdad es que no estaría mal, osea, lo que tenemos es:
- PROCESS
- FUNCTION

Y lo que molaría mucho tener es:
- PROCESS2
- FUNCTION2

O algo así XD.. la verdad es que llevamos tiempo pidiendolo jeje.. Simu y yo nos unimos a la solicitud. :)
Ya somos 3, haber que dice CicTec.
User avatar
CicTec
Posts: 16590
Joined: Thu Jul 31, 2008 10:18 pm

Re: Procesos dedicados a calculo.

Post by CicTec »

Hola shao,

Si bien sea interesante poder personalizar los procesos, es algo bastante mas complejo, porque habria que cambiar y tener en cuenta de muchas cosas en la implementacion interna tanto del core como de los modulos.

La solucion mas simple es una nueva opcion de compilacion que indique a los bloque FUNCTION de comportarse como funcion normales de otros lenguajes, de aqui sera imposible llamar FRAME (dara error de compilacion) pero es lo de menos, porque realmente llamar FRAME en FUNCTION tiene muy pocas utilidades respecto a la ventaja de ocupar menos memoria y ser mas rapida en la llamada/retorno.

Una solucion intermedia se habra con el nuevo update en cuanto saldran los metodos.

Sobre aplicar threads a cada proceso, olvidadlo, es una muy pero muy pesima idea.
User avatar
shao
Posts: 6048
Joined: Wed Jun 17, 2009 4:51 pm

Re: Procesos dedicados a calculo.

Post by shao »

Entonces esas funciones que describes no pueden ser utilizadas como bucle durante una partida, por que si entiendo bien, gemix daria error al no llegar nunca esas funciones a frame.

Asi que si, serian funciones como en otros lenguajes pero no al no poder usar frame, solo serian para llamarlas, hacer cierto calculo y que estas mueran, es decir, no podrian mantenerse en bucle indefinidamente por que daria error.
Por lo tanto los procesos sin locales y solo para calculos (y con la posibilidad de hacer frame y mantenerse indefinidamente) no son posibles.

Bueno, habra que usar los procesos de toda la vida para estas cosas.
User avatar
CicTec
Posts: 16590
Joined: Thu Jul 31, 2008 10:18 pm

Re: Procesos dedicados a calculo.

Post by CicTec »

Exacto, pero esto del FRAME es cosa de DIV, nigun lenguaje normal hace eso en las funciones cuya utilidad es propior entrar, ejecutar y salir.
Post Reply

Return to “General”