Avances, Diario de...

Started by SplinterGU, April 17, 2008, 03:00:51 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

SplinterGU

Bien gente, muchas visitas y pocos comentarios...
Necesito que por favor le dediquen unos minutos a probar esta version... que yo diria ya empieza a ser "Release Candidate"... pero tambien necesito un poco de feedback de Uds., para dejarla lista para liberarla como Release...
Gracias...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

kim-elet-o

Hola SplinterGU, he cazado un bug en la wip15b, es poco importante pero es un bug de todas formas, cuando compilo un programa en el bgdc, en el resultado de la compilacion hay omision de etiquetas en los datos sacados a la consola de los comando, para que se entienda:


BGDC 0.93 (Oct 18 2008 18:33:02)
Copyright ® 2006-2008 SplinterGU (Fenix/Bennugd)
Copyright ® 2002-2006 Fenix Team (Fenix)
Copyright ® 1999-2002 JosÚ Luis Cebrißn Pag³e (Fenix)
Fenix comes with ABSOLUTELY NO WARRANTY; see COPYING for details

librender:1: warning: Variable redeclared ("ALPHA_STEPS")

File AirWars_0v06.dcb compiled (145153 bytes):

  Processes                    26
  Global data               1592      bytes
  Local data                  204      bytes
  Private data              2512      bytes
  Public data                   24      bytes
  Code                      54060      bytes
  System processes        238
  Globals vars                  72
  Locals vars                   28
  Private vars                  93
  Publics vars                    6
  Identifiers                   994
  Structs                        11
  Strings                         41      (407 bytes)

|/
|\im-elet-o el yayo programador.

SplinterGU

omision de etiquetas? a que te referis?
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

si te referis al texto que iba detras de los totalizadores, si te referis a eso, lo elimine... era redundante, poner:

"Processes 123 processes"
etc
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

kim-elet-o

Otro posible error, digo posible error por que puede ser un comportamiento del fenix, es el caso siguiente, tengo una serie de procesos los cuales han reservado memoria dinamica, y los cuales cuando son destruidos liberan la memoria dinamica que han reservado mediante la clausula ONEXIT, el proceso principal tambien reserva memoria dinamica, liberando igualmente la memoria dinamica cuando este es destruido, usando de nuevo un ONEXIT, pero antes de liberar su correspondiente memoria, el proceso principal mata a todos los procesos con un Let_Me_alone().

[code language="bennu"]
BEGIN  // Proceso principal.

...   // Codigo
...

ONEXIT
Let_Me_Alone();  // Matamos todos los procesos menos el principal
FinalizaGeneral(); // Liberamos recursos y memoria dinamica
END
[/code]

ejecuto el juego, finalizo el juego saliendome del bucle principal del proceso principal y dejando terminar el proceso principal, si entre los procesos que Let_Me_Alone a muerto hay Procesos que han reservado memoria dinamica, se produce un error tipo de windows "DGDI.EXE ha detectado un problema y debe cerrarse, bla bla, bla" con los tres clasicos botones, pero si entre Let_Me_alone() y FinalizaGeneral(), añadimos un FRAME tal que asi: 

[code language="bennu"]
BEGIN  // Proceso principal.

...   // Codigo
...

ONEXIT
Let_Me_Alone();  // Matamos todos los procesos menos el principal
FRAME;              // Con esto me libro del BUG.
FinalizaGeneral(); // Liberamos recursos y memoria dinamica
END
[/code]

El bug desaparece, dandole asi tiempo a los procesos a liberar su memoria dinamica, antes que lo haga el proceso principal.


P.D: El post es un poco "tocho" pero es la mejor forma que he encontrado para explicarme.

|/
|\im-elet-o el yayo programador.

kim-elet-o

#350
Quote from: SplinterGU on October 30, 2008, 10:05:10 AM
si te referis al texto que iba detras de los totalizadores, si te referis a eso, lo elimine... era redundante, poner:

"Processes 123 processes"
etc

Aaaah ok, entendido.

|/
|\im-elet-o el yayo programador.

SplinterGU

Quote from: kim-elet-o on October 30, 2008, 10:20:47 AM
Otro posible error, digo posible error por que puede ser un comportamiento del fenix, es el caso siguiente, tengo una serie de procesos los cuales han reservado memoria dinamica, y los cuales cuando son destruidos liberan la memoria dinamica que han reservado mediante la clausula ONEXIT, el proceso principal tambien reserva memoria dinamica, liberando igualmente la memoria dinamica cuando este es destruido, usando de nuevo un ONEXIT, pero antes de liberar su correspondiente memoria, el proceso principal mata a todos los procesos con un Let_Me_alone().

[code language="bennu"]
BEGIN  // Proceso principal.

...   // Codigo
...

ONEXIT
Let_Me_Alone();  // Matamos todos los procesos menos el principal
FinalizaGeneral(); // Liberamos recursos y memoria dinamica
END
[/code]

ejecuto el juego, finalizo el juego saliendome del bucle principal del proceso principal y dejando terminar el proceso principal, si entre los procesos que Let_Me_Alone a muerto hay Procesos que han reservado memoria dinamica, se produce un error tipo de windows "DGDI.EXE ha detectado un problema y debe cerrarse, bla bla, bla" con los tres clasicos botones, pero si entre Let_Me_alone() y FinalizaGeneral(), añadimos un FRAME tal que asi: 

[code language="bennu"]
BEGIN  // Proceso principal.

...   // Codigo
...

ONEXIT
Let_Me_Alone();  // Matamos todos los procesos menos el principal
FRAME;              // Con esto me libro del BUG.
FinalizaGeneral(); // Liberamos recursos y memoria dinamica
END
[/code]

El bug desaparece, dandole asi tiempo a los procesos a liberar su memoria dinamica, antes que lo haga el proceso principal.


P.D: El post es un poco "tocho" pero es la mejor forma que he encontrado para explicarme.



no sera que los demas procesos acceden en el onexit a datos alocados por el principal o datos que libera el principal? o estaras desalocando varias veces lo mismo (llamando a la misma funcion de desalocar en todos los procesos, sin hacer chequeos de que si estos ya fueron liberados)?
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

kim-elet-o

No, los procesos "hijos" acceden a los datos dinamicos del proceso principal fuera de su ONEXIT, el codigo de ONEXIT de los procesos "hijos" solo elimina los datos dinamicos de los procesos "hijo" .
No, uso una funcion comun, cada uno tiene su codigo propio para eliminar sus datos dinamicos propios.


te paso mi directorio de trabajo por si le quieres hechar una ojeada:

http://rapidshare.com/files/158960023/airwars.zip.html

P.D: Y aunque suene contradictorio despues de haberte dado mas trabajo: Leñe! descansa un poquito que no queremos que te pongas pachucho, que te queremos mucho.  ;D ;D ;D
|/
|\im-elet-o el yayo programador.

SplinterGU

Ya tengo que salir, por la noche lo bajo y lo miro, gracias...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

kim-elet-o

No te preocupes, como viene siendo habitual, es un error mio, resulta al morir estos procesos "hijos", generaban otros procesos hijos que intentaban utilizar los recursos ya borrados del proceso principal, solucion: he añadido una funcionalidad a mi "engine" de enemigos, un sistema de señales especificas para evitar estos casos y otros casos futuros que ya ire desarrollando en un futuro cercano, gracias por las molestias tomadas.

|/
|\im-elet-o el yayo programador.

SplinterGU

puf, me da error la descarga... no lo puedo chequear...

ahhh, ok, no era problema de bennu, fantastico...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

Corregido tremendo bug al procesar comandos de preprocesamiento:

#if <expresion>

dejaba el codigo generado por la expresion en el codigo del dcb... :P
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

blostec

Quote from: SplinterGU on October 31, 2008, 03:08:03 AM
Corregido tremendo bug al procesar comandos de preprocesamiento:

#if <expresion>

dejaba el codigo generado por la expresion en el codigo del dcb... :P

ufff suerte que lo has detectado, buen trabajo!  :)

SplinterGU

Me volvi loco preguntandome que tenia mal dentro de las funciones nuevas que habia hecho en la GUI y no era la GUI, era el compilador...
Tambien detecte otros bugs o mejor dicho comportamiento que no es el deseado, pero bueno, ya lo arreglare, aunque no es nada tan grave...
gracias...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

Version Wip15c (solo windows por ahora, luego subo la version linux y actualizo las noticias en la seccion ingles, ahora mismo no tengo tiempo de hacerlo)

Incluye, Core:

- Fix copyright text in bgdc and bgdi
- Add project basename path to includes paths
- Add project basename path in messages errors
- #if preprocesor fix
- English message fixed

Modules:

- Get graphic library fix when lib == 0 and map-> is > 0 and < 999
- NEXTPROC fix in mod_debug
- Mouse x and y now setting with value 99999 on startup

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