Précédent   Forum du club des développeurs et IT Pro > Applications > Développement 2D, 3D et Jeux > Moteurs de jeux vidéo > XNA
XNA Forum d'entraide sur le développement avec XNA
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 22/01/2012, 12h15   #1
saturn1
Membre confirmé
 
Inscription : janvier 2008
Messages : 576
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 576
Points : 258
Points : 258
Par défaut Xna GC.GetTotalMemory xbox vs PC

Bonjour, je rencontre un petit soucis avec la memoire de mon jeu.

Quand je suis sur PC et que j'affiche la memoire avec GC.GetTotalMemory(false) ca ne bouge quasiment pas dans le jeu(au loading ca fuse).


Mais quand je teste sur xbox ca augmente super vite pendant le jeu, j'ai meme un passage de GC toutes les 5 secondes environ.

Avez vous une idee d'ou cela peut venir? Sachant que les tests sur xbox et pc sont les memes ...

Merci.
saturn1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2012, 13h05   #2
MoDDiB
Membre chevronné
 
Homme
Développeur de jeux vidéo
Inscription : février 2006
Messages : 449
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Développeur de jeux vidéo
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2006
Messages : 449
Points : 695
Points : 695
C'est tout à fait normal.
Le framework .net de la xbox est le micro framework .net qui ne dispose pas d'un garbage collector aussi efficace.
Concrètement si tu veux que ton jeu tourne correctement sur xbox il ne faut JAMAIS allouer de mémoire durant la boucle principale de jeu.
Cela signifie :
- Allouer une taille suffisante pour les listes à la création
- Avoir un système de pooling pour réutiliser les objets déjà crées plutôt que les instancier.
- Eviter le boxing qui alloue de la mémoire
- Faire attention avec les strings qui alloue de la mémoire à chaque concaténation.

Bon courage !!
MoDDiB est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 22/01/2012, 15h31   #3
saturn1
Membre confirmé
 
Inscription : janvier 2008
Messages : 576
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 576
Points : 258
Points : 258
Par défaut Yop

Je comprend bien ce que tu me dis puisque j'ai lu pas mal de doc sur le garbage .net

Mais lorsque je profile j'obtiens cela :




Soit Game.Run qui prend quasiment 100% des allocations et donc je ne peux rien modifier dans ce code puisque apres il appelle ses propres fonctions.

Mais lorsque j'affiche le GC.GetTotalMemory sur pc il ne grandit pas in game... et sur xbox si.


Au depart j'avais des events des ToString et des new List(0);

Du coup j'ai change tout ca pour faire disparaitre mon garbage, mais la je ne peux plus rien faire car c'est .Net qui fait ca tambouille .

En faite si il n'alloues pas de memoire sur PC (GC.GetTotalMemory constant) je ne vois pas pourqu'oi il en allouerait sur Xbox.

Bref , merci.
saturn1 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 22/01/2012, 19h39   #4
MoDDiB
Membre chevronné
 
Homme
Développeur de jeux vidéo
Inscription : février 2006
Messages : 449
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Développeur de jeux vidéo
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2006
Messages : 449
Points : 695
Points : 695
Citation:
Envoyé par saturn1 Voir le message
Soit Game.Run qui prend quasiment 100% des allocations et donc je ne peux rien modifier dans ce code puisque apres il appelle ses propres fonctions.
Game.Run appelle l'update de game, ça vient donc de ton code.
J'ai eu un problème similaire je ne me souviens plus du problème exacte mais je l'ai trouvé en commentant toute l'update et en dé-commentant petit à petit.
Tu vas t'amuser
MoDDiB est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 22/01/2012, 20h56   #5
saturn1
Membre confirmé
 
Inscription : janvier 2008
Messages : 576
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 576
Points : 258
Points : 258
Par défaut re

Hum...

Toi quand tu profiles in game la courbe a un Y de 0?^^

Donc ce serait un bug du profiler de visual xD?
saturn1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/01/2012, 20h59   #6
MoDDiB
Membre chevronné
 
Homme
Développeur de jeux vidéo
Inscription : février 2006
Messages : 449
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Développeur de jeux vidéo
Secteur : High Tech - Multimédia et Internet

Informations forums :
Inscription : février 2006
Messages : 449
Points : 695
Points : 695
Si tu as un freeze parce que le GC passe il n'y a pas de bug d'affichage, tu as bien un soucis.
J'utilise Xna framework remote performance monitor et quand je n'ai plus de soucis je vois bien que rien n'est alloué !
MoDDiB est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 23/01/2012, 10h23   #7
saturn1
Membre confirmé
 
Inscription : janvier 2008
Messages : 576
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 576
Points : 258
Points : 258
Ok merci je vais tester ca!
saturn1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 22h42   #8
saturn1
Membre confirmé
 
Inscription : janvier 2008
Messages : 576
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 576
Points : 258
Points : 258
Par défaut re

C'est bon j'ai un defi => 30 Gc.Collect en 30 secondes^^

(merci pour le nom du tools MoDDiB)
saturn1 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 16h59.


 
 
 
 
Partenaires

Hébergement Web