p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Membre éprouvé

    Inscrit en
    janvier 2008
    Messages
    711
    Détails du profil
    Informations forums :
    Inscription : janvier 2008
    Messages : 711
    Points : 420
    Points
    420

    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.

  2. #2
    Membre Expert

    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    février 2006
    Messages
    855
    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 : 855
    Points : 2 011
    Points
    2 011

    Par défaut

    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 !!

  3. #3
    Membre éprouvé

    Inscrit en
    janvier 2008
    Messages
    711
    Détails du profil
    Informations forums :
    Inscription : janvier 2008
    Messages : 711
    Points : 420
    Points
    420

    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.

  4. #4
    Membre Expert

    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    février 2006
    Messages
    855
    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 : 855
    Points : 2 011
    Points
    2 011

    Par défaut

    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

  5. #5
    Membre éprouvé

    Inscrit en
    janvier 2008
    Messages
    711
    Détails du profil
    Informations forums :
    Inscription : janvier 2008
    Messages : 711
    Points : 420
    Points
    420

    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?

  6. #6
    Membre Expert

    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    février 2006
    Messages
    855
    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 : 855
    Points : 2 011
    Points
    2 011

    Par défaut

    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é !

  7. #7
    Membre éprouvé

    Inscrit en
    janvier 2008
    Messages
    711
    Détails du profil
    Informations forums :
    Inscription : janvier 2008
    Messages : 711
    Points : 420
    Points
    420

    Par défaut

    Ok merci je vais tester ca!

  8. #8
    Membre éprouvé

    Inscrit en
    janvier 2008
    Messages
    711
    Détails du profil
    Informations forums :
    Inscription : janvier 2008
    Messages : 711
    Points : 420
    Points
    420

    Par défaut re

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

    (merci pour le nom du tools MoDDiB)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. XNA : Reseaux non Xbox live
    Par invoceusse dans le forum XNA/Monogame
    Réponses: 5
    Dernier message: 05/12/2013, 14h03
  2. Xna scripting et xbox
    Par saturn1 dans le forum XNA/Monogame
    Réponses: 9
    Dernier message: 21/12/2011, 17h55
  3. Réponses: 3
    Dernier message: 19/03/2011, 18h29
  4. XNA pour Xbox payant ?
    Par bleuerouge dans le forum XNA/Monogame
    Réponses: 7
    Dernier message: 13/08/2010, 14h05
  5. Projet jeu XNA(Xbox 360): KellAndSam Complication
    Par Remizkn dans le forum Projets
    Réponses: 9
    Dernier message: 08/05/2009, 11h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo