Procesos dedicados a calculo.

Discusión en general sobre Gemix.

Procesos dedicados a calculo.

Postby shao » Fri Aug 23, 2013 6:08 pm

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
shao
 
Posts: 6034
Joined: Wed Jun 17, 2009 4:51 pm

Re: Procesos dedicados a calculo.

Postby PAMERCO » Fri Aug 23, 2013 7:19 pm

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/viewtopic.php?f=128&t=4146http://www.indievania.com/games/zombie-puf
User avatar
PAMERCO
 
Posts: 1519
Joined: Wed Feb 04, 2009 11:22 am
Location: palma de mallorca

Re: Procesos dedicados a calculo.

Postby shao » Fri Aug 23, 2013 7:32 pm

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
shao
 
Posts: 6034
Joined: Wed Jun 17, 2009 4:51 pm

Re: Procesos dedicados a calculo.

Postby erkosone » Fri Aug 23, 2013 7:55 pm

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:
Source Code (Gemix) [ Download ] [ Hide ]
  • 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


cada CASE tiene asignado una constante definida en la cabecera del programa, algo así:
Source Code (Gemix) [ Download ] [ Hide ]
  • const
  •         onMenu = -1000;
  •         onPlaying = -1001;
  •         onConfig = -1002;
  •         onGameCredits = -1003;
  •         onPause = -1004;


Así te despreocupas de recordar valores numéricos, solo usas los nombres en todo el programa, quizá te sirva la idea..
User avatar
erkosone
 
Posts: 10654
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: Procesos dedicados a calculo.

Postby PAMERCO » Fri Aug 23, 2013 8:13 pm

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/viewtopic.php?f=128&t=4146http://www.indievania.com/games/zombie-puf
User avatar
PAMERCO
 
Posts: 1519
Joined: Wed Feb 04, 2009 11:22 am
Location: palma de mallorca

Re: Procesos dedicados a calculo.

Postby shao » Fri Aug 23, 2013 8:51 pm

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
shao
 
Posts: 6034
Joined: Wed Jun 17, 2009 4:51 pm

Re: Procesos dedicados a calculo.

Postby erkosone » Fri Aug 23, 2013 9:41 pm

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
erkosone
 
Posts: 10654
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: Procesos dedicados a calculo.

Postby CicTec » Fri Aug 23, 2013 9:57 pm

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
CicTec
 
Posts: 16553
Joined: Thu Jul 31, 2008 10:18 pm

Re: Procesos dedicados a calculo.

Postby shao » Sun Aug 25, 2013 12:40 pm

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
shao
 
Posts: 6034
Joined: Wed Jun 17, 2009 4:51 pm

Re: Procesos dedicados a calculo.

Postby CicTec » Sun Aug 25, 2013 3:27 pm

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.
User avatar
CicTec
 
Posts: 16553
Joined: Thu Jul 31, 2008 10:18 pm

Next

Return to General

Who is online

Users browsing this forum: No registered users and 8 guests