Bonjour à tous,

Comme certain le savent déjà, je travail sur un générateur de terrains à
la volé depuis un bon moment mais par manque le temps j'ai mis ce module
en standby. En l'état, il peut déjà gérer quelques types de terrains
avec remplissage d'une texture, placement d'objets. Mais le meilleur
reste a venir car il sera bientot ajouté un sous module de création de
la surface du terrain par courbe de bezier (merci à Renaud pour son aide
au passage :) ). Une fois que ca sera bien robuste je mettrai ca sur le
cvs. 
Neanmoins il se peut que ca prenne un certain temps car je ne sais pas
pour vous mais moralement je me sent pas d'integrer à Wormux une usine a
gaz comme ce futur générateur dans l'état dans lequel est le jeu.
J'entends par là, l'usage memoire plus que démesuré que prend Wormux dès
son démarrage.
J'ai donc commencé a régler ce gros probleme (a coup de nettoyage) car
pour vous donner un exemple, au lancement de Wormux sur mon pc qui
possede 512 Mo de RAM voilà ce que ca donne :

Lance Wormux ...jusqu'au menu principal = 18% d'occupation
Demarre un partie = 18% + petit au fil du temps, fuite memoire.
Retour au menu principal = 18%++ (encore !!)

La constation est donc pour ceux qui ne le savait pas, que Wormux fait
l'allocation en memoire de pratiquement tout le necessaire pour jouer
dès le depart ;). 
C'est horrible et j'ai donc pris la régle suivante, a chaque etapes du
deroulement du jeu il ne doit y avoir en memoire QUE ce qui est
necessaire a cette étape.
On arrive pour la premiere fois au menu principal par exemple : pas
question d'avoir déja en memoire un PixelBuffer du terrain. De meme
qu'au demarrage d'un partie : pas question de garder l'image du menu
principal en memoire...

J'ai essayé de faire pour le mieux mais la tache reste enorme car il y a
beaucoup de defaults de conception qui freine la moindre opération de
nettoyage. A terme il faudra revoir l'architecture des liaisons entre
les classes pour faire disparaitre les "extern ..." au profit d'une
conception plus claire (agrégation, composition, pattern
sujet/objservateur pourquoi pas !).

Pour le moment voilà ce que j'ai pu faire :

Au lancement de Wormux = Passer de 18% à 8.5% d'occupation.
Au lancement d'une partie = Passer de 18% à 16.8% d'occupation.
Retour au menu = Passer de 16.8% à 12.7%

Biensur ca peut encore etre améliorer (ce que je compte bien faire ;p)
Il reste par exemple a eviter de charger dès le depart la liste des
images preview de terrain, liste entiere des skins...
A noter aussi que les valeurs que je donne sont relatives, relatives aux
fuites memoire... plus vous utilisez le jeu longtemps et/ou de maniere
intensive, plus la fuite va vous innonder ;).


Enfin bref voilà, vous voilà au courant :
- Bientot un generateur
- Bientot un Wormux bien moins morfale en RAM.

N'hetiser pas à signaler les bugs dû a ces nettoyages violents, car il
est évident que ce genre d'opérations fait les miettes et donc attirent
les bugs.

-- 
lami <[EMAIL PROTECTED]>



Répondre à