Problemas con el 'size of'

Started by FreeYourMind, October 17, 2009, 10:21:05 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

SplinterGU

a ver... creo que aca hay una mezcla tremenda...

1) dcb (con recursos, parametro -a) incorpora al mismo 1 vez cada recurso... si el recurso tiene distintos paths o alguna letra que lo hace diferente, se considera un recurso diferente.

2) load_map, unload_map y runtime (o en tiempo de ejecucion)... no tiene nada que ver con el dcb...
ahora si vos haces varios load_map, es perfecto (y seria un error grave que asi no sea), que cargue el recurso tantas veces como load hagas... por que? porque uno asi lo esta indicando al hacer load y porque uno puede querer quizas alterar algun contenido de los mismos en memoria... o porque asi quiero hacerlo...

ahora, creo que dicho esto, y con nueva informacion que procesar... deberias organizar un poco las ideas de todo esto y replantear las dudas si es que sigues con ellas...

gracias por las preguntas... yo creo que muchos se topan con estas dudas y no se animan a preguntar...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

FreeYourMind

A ver, te resumo tus puntos para no liarnos más :):

1)

Exacto, pero esto no esta ocurriendo, te he puesto el ejempo de varias cargas seguidas del mismo recurso con la misma ruta, el recurso 'Nivel.map' sólo deberia incluirlo una vez en el .dcb y lo esta incluyendo tantas veces como cargas hago de el.

2)

Si ya se que no tiene nada que ver, no volvamos a mezclar este punto con los demás, este lo cerramos.

3)

Ya se porque carga el mismo recurso con 3 variables distintas, en realidad es un mapa vacio, lo que hace dinamicamente es construir su contenido a traves de un engine de tiles, que se divide en 3 secciones, scroll y 2 más. Y utiliza cada variable para su respectiva sección de la fase que estan en memoria al mismo tiempo.

Esto esta bien, pero no por ello tendia que repetir el mapa en el .dcb, que lo haga en memória al hacer más loads del mismo recurso todo bien, pero no fisicamente en el .dcb.

Tienen la misma ruta y como dices no deberia repetirse pero si lo hace, prueba cargar un recurso seguido de unload, varias veces, y lo verás por ti mismo.

Gracias.

Windgate

Curioso lo del punto 1...

Y me asalta una duda relacionada con el tema, Splinter dice que el .dcb con -a incluye los recursos...

¿Esto quiere decir que compilando con -a los FPGs, OGGs, etc. Pasan a formar parte del .dcb y no es necesario mantenerlos en subdirectorios? Me ha dado por probar la invocación de bgdc sin parámetros y veo la lista de opciones, hasta hoy no le había hecho mucho caso porque siempre compilo con el mismo .bat

También veo algo sobre automatic declare... ¿Eso es para poder usar variables sin necesidad de declararlas primero o algo así?

Siento mezclar aún más el tema, pero siendo tan puntual no merece la pena abrir nuevo hilo.
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

FreeYourMind

#18
Si claro, yo lo hago siempre con esta opción por comodidad en la distribución y por seguridad tambien, pero no me habia enterado de este pequeño problema de repetición de ficheros, ya que las otras veces sólo los cargaba una vez durante el juego, ahora por casualidad como cargaba el mismo recurso más veces, al copiar el dcb quede petrificado, ya que en total los recursos ocupan poco más de 6 megas y actualmente el dcb ocupa mas de 11 megas por repetir la carga del mismo fichero 3 veces en variables distintas.

Lo de mezclar temas es inevitable, lo mejor es no darle mucha importancia, al fin y al cabo el tema es siempre Bennu :)

SplinterGU

ahhh... wait... wait... creo que se lo que te pasa... los recursos .map, .fpg y cualquier otro de formato propio de bennu, cuando estan solos (no en el dcb) van comprimidos... cuando van en el dcb, ya no llevan compresion... por eso es que crees que el archivo se incluye 3 veces... pues no, no se incluye 3 veces... solo estas viendo el tamaño real que este ocupa...

por otro lado, no uses la barra "\", usa esta barra "/"... eso puede tambien hacer que se dupliquen...

cuidado con este modo, si lo adjuntas al ejecutable, eso puede afectar a la memoria consumida... ya que el ejecutable puede ser cargado por el sistema operativo completamente en memoria.

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

FreeYourMind

1)

No splinter y sabes porque, porque si incluyes el mismo recurso más veces (con load's y unload's seguidos por ejemplo), el tamaño del dcb sigue aumentando, y este tendria que ser siempre igual porque ya lo tenias incluido en el primer load (si ya he dicho esto varias veces :))  ;D


2)

Voy a probar lo de las barras, a ver si es esto que hace que se duplique....

3)

Lo del tamaño no es problema, porque en este juego no tengo problemas de memória ya que ocupa muy poco.

FreeYourMind

Más cosas para que te aclares en la resolución:

1 - Rescursos sueltos:  6,67 Mb

2 - Tamaño del .dcb con todos los recursos incluidos y Nivel.map cargado sólo una vez: 6,89 Mb

Como ves la diferencia es miníma, aparte que el dcb tiene tambien el código del prg incluido, con esto no me parece que los FPG cuando estan dentro del .dcb esten descompactados, apostaba que siguen comprimidos dentro del .dcb (o sea, en el mismo formato), pero si tu dices que no, tampoco lo questiono :)

3 - Nivel.map ocupa 2,28 Mb, cargando 3 veces este mismo recurso, el .dcb se queda con tamaño de 11,6 Mb, o sea,  2,28 * 3 = 6,84 Mb, así tendriamos que sumar 2 ficheros de 2,28 Mb (4,56 Mb) a los 6,89 Mb del dcb (el cual ya tiene un Nivel.map dentro), seria: 11,45 Mb, como puedes ver y salvando redondeos en los calculos ya que estamos sumando bits, parece que los calculos me dan la razón :)
Se estan duplicando ficheros 'Nivel.map' dentro del .dcb


SplinterGU

bien, eso de comprimido y no, es real... puede que en tu caso estes con fpg/map sin compresion... pero normalmente estan comprimidos con gzip... o que la compresion este muy cercana al descomprimido... como sea, hay que tener en encuenta que puede pasarte eso...

caramba que a veces eres un poco duro... creeme cuando digo que hay compresion en los recursos y no en los dcb...

mas alla de eso, acabo de resolver el tema de las barras... por ahora usa la barra adecuada, no hare un nuevo ejecutable por esto... pero ya esta corregido, gracias por el reporte...

para datos adicionales, lo que se incluye en el dcb son todo aquello que esta en una string y se puede abrir como fichero al procesar dicha string... no tiene nada que ver los load/unload... olvidate de los load/unload.

gracias

karma por el reporte
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

aclaracion adicional, solo si usas el paremetro de stub (-s) junto al de mochila dcb (-a) puede que consuma mas memoria... la que ocupe el exe.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

FreeYourMind

Ya me habia dado cuenta que con la barra al reves no ocurre. Gracias por corregirlo, de todos modos voy a poner las barras bien en todos los load's, me apunto lo de la correccion en futuras versiones.

Gracias.

SplinterGU

:)

saludos...

vamos depurando y aclarando cosas a full... gracias...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Windgate

Gracias por resolver el problema Splinter, karma++ para tí, no es mi caso pero sé por experiencia que al principio usamos \ y / indistintamente con mucha alegría.
Iván García Subero. Programador, profesor de informática, monitor de actividades culturales y presidente de TRINIT Asociación de Informáticos de Zaragoza. http://trinit.es

FreeYourMind

La culpa la tiene Microsoft, sus barras son del tipo '\' y claro como yo programo en Vista y vosotros la mayoria en Linux... y Wiz tb se basa en Linux...

SplinterGU

por suerte gracias al gcc se interpreta indistintamente las barras al momento de cargar/ejecutar...
Download Lastest BennuGD Release: http://www.bennugd.org/node/2