1. Le forum de Minecraft-France va définitivement fermer ses portes. Celui-ci restera en lecture seule mais vous ne pourrez plus y apporter de nouveaux topics. Nous vous invitons à nous rejoindre sur le Discord de Minecraft-France qui permet de présenter vos projets, discuter avec la communauté etc.. Merci à tous d'avoir fait vivre ce forum de nombreuses années. Pour nous rejoindre sur Discord, Cliquez ici

Minecraft 1.8 prend trop de performances

Discussion dans 'Autres' créé par supermatis, 24 Jan 2015.

  1. supermatis

    supermatis Explorateur

    Inscrit:
    26 Fev 2014
    Messages:
    76
    Points:
    41
    Sexe:
    Homme
    Bonjour, Bonsoir.

    Je crée ce post pour vous faire part d'un problème qui est le suivant :

    Quand je record un jeu (garry's mod, the escapist ect...) je film, je joue ect...
    Jusque la aucun problème.
    Ensuite, je tourne une partie de minecraft 1.7.10, jusque la pareil, la vidéo est nickel.
    Par contre, quand je tourne minecraft en 1.8.x, la vidéo plante a mort, faisant comme si elle était accélérée.
    Du coup, avec tout ça, j'ai apprit que le problème venait de minecraft 1.8, et j'en ai déduit qu'il bouffait trop de performances.
    Je tient aussi a dire que je n'ai pas un ordi de compèt' mais cela me suffit largement
    Si vous savez comment régler ce problème très chiant, dites-le moi. Si vous avez besoin de savoir un truc, je vous le ferai parvenir.

    Merci d'avance, super_matis
     
  2. robin4002

    robin4002 Support Technique
    Staff

    Inscrit:
    17 Août 2012
    Messages:
    5 478
    Points:
    229
    Sexe:
    Homme
    Salut,
    Voici trois solutions possibles :
    - Installer Optifine
    - Attendre une version qui retire la merde qu'a fait Mojang avec la 1.8 (notamment les BlockPos qui sont la pire idée pour un jeu codé en Java)
    - Prendre un processeur capable de faire tourner un jeu mal optimisé au niveau de l'utilisation cpu et filmer en même temps.
     
    • J'approuve J'approuve x 3
  3. supermatis

    supermatis Explorateur

    Inscrit:
    26 Fev 2014
    Messages:
    76
    Points:
    41
    Sexe:
    Homme
    Déjà merci de ta réponse robin4002
    Du coup je pense attendre, car j'ai pas la thune pour m'acheter un processeur x)
    Ah et dernière info : La vidéo ne bug que si tout les chunks ne sont pas chargés autour de moi
     
  4. Aerosmite

    Aerosmite Mineur de Fer

    Inscrit:
    18 Nov 2014
    Messages:
    611
    Points:
    86
    Sexe:
    Homme
    Sais-tu dans combien de temps environ cette nouvelle version sortira ?
     
  5. Nocturne123

    Nocturne123 Mineur de Fer

    Inscrit:
    24 Déc 2012
    Messages:
    678
    Points:
    148
    Sexe:
    Homme
    CapitainObvious@robin4002 , explique moi, qu'est-que le "BlockPos" ?
     
  6. robin4002

    robin4002 Support Technique
    Staff

    Inscrit:
    17 Août 2012
    Messages:
    5 478
    Points:
    229
    Sexe:
    Homme
    Logique, puisque le chargement des chunks utilisent plus de ressource cpu, une fois les chunks chargés Minecraft demande moins de ressource donc ton processeur a plus de ressource pour ton logiciel pour filmer.

    Non, aucune idée.

    Ça :
    [​IMG]
    Pour coder c'est plutôt pratique, mais concernant l'optimisation c'est une très mauvaise idée.

    Pour les blocs, items, enfin pour tout ce qui passe par des coordonnées avec des nombres naturel (donc pas de virgule) Minecraft utilise depuis la 1.8 ces BlockPos.
    Par exemple la fonction updateTick des blocs :
    Code (cpp):
        public void updateTick(World worldIn, BlockPos pos, IBlockState state, Random rand) {}
    Avant la 1.8 la fonction étant comme ça :
    Code (cpp):
        public void updateTick(World worldIn, int x, int y, int z, int metadata, Random rand) {}
    La différence c'est donc qu'avant il y avait 3 simple int, alors que maintenant il y a un BlockPos qui est un objet.
    Or tous les objets sont stockés en ram. Quand on sait que le jeu appelle cette fonction 20 fois par secondes pour certains blocs et que pleins d'autres fonctions utilisent aussi les BlockPos, ça parait logique que la ram se remplit très vite.
    Il suffit juste de lancer le jeu en 1.8, appuyer sur f3 et regarder la ram utilisé puis de faire la même chose en 1.7.
    Tu verra que la ram monte bien plus vite en 1.8.

    Le problème c'est que la ram à une limite, la plupart des ordinateurs actuels ont 4 go de ram. Et puis il faut bien enlever de la ram tous ces objets qui ne servent plus à rien. Dans certains langage bas-niveau comme le C, ce nettoyage de la ram doit être fait manuellement. Après l'utilisation d'un objet, il faut le supprimer de la ram. Sinon ça fait des fuites de mémoire. En Java, c'est le ramasse miette qui est chargé de ce travail. Ça rend le travail du programmeur plus simple puisqu'il n'a pas à se soucier des objets en ram. Le problème c'est que pour savoir si il peut supprimer de la mémoire ram l'objet ou pas, le ramasse miette doit vérifier que l'objet n'est plus utilisé. Et cette opération utilise beaucoup de ressource cpu.
    En 1.7 et dans les versions inférieur le problème ne se voit pas trop car le ramasse miette passe à une fréquence assez faible (je viens de lancer mon jeu et regarder vite fait, sans bouger sur un monde la ram monte assez doucement et elle se vide toutes les 15 secondes environ)
    En 1.8 l'utilisation de la ram monte tellement vite que même sans bouger le ramasse miette est obligé de faire son travail tous les 3 secondes.

    La 1.8 est donc beaucoup plus gourmande en utilisation cpu, et comme filmer avec un logiciel de screencast demande aussi pas mal de ressource cpu, le problème s'explique. Surtout que charger des chunks est aussi une opération gourmande en cpu.

    Personnellement j'ai deux pc, un pc portable et un fixe. Sur le fixe j'ai une vielle carte graphique (7600 GT) environ deux fois moins puissante que sur mon portable (GT 240M). Par contre j'ai un processeur 4 cœurs overclocké à 2.8 gHz (2.13 de base, c'est un vieux Xeon X3210 récupéré sur un serveur datant de 2006) alors que sur mon portable j'ai un processeur 2 cœurs à 2,23 gHz (core 2 P8400). Et Minecraft 1.8 fonctionne de façon bien plus fluide sur le fixe malgré sa mauvaise carte graphique.
     
    • Informatif Informatif x 3
  7. supermatis

    supermatis Explorateur

    Inscrit:
    26 Fev 2014
    Messages:
    76
    Points:
    41
    Sexe:
    Homme
    Merci robin4002 pour cette explication ! Bon bah y'a plus qu'a attendre que Mojang se sorte les doigts du c*l et optimise le jeu !
     
    • J'approuve J'approuve x 1
  8. licks92

    licks92 Explorateur

    Inscrit:
    24 Nov 2014
    Messages:
    52
    Points:
    24
    Sexe:
    Homme
    @robin4002 N'y a-t-il pas une bonne raison pour que Mojang ait fait ceci?
    On peut les accuser d'avoir voulu se simplifier la tâche au détriment des performances mémoire, c'est sûr, mais je me demande si cette manière de faire ne présente pas un autre intérêt.
    Les valeurs x,y,z qui étaient auparavant calculées à chaque updateTick() sont peut être désormais calculées pas BlockPos qui les garde en mémoire. J'y vois une technique pour gagner en perf cpu au détriment de la mémoire. Sachant qu'on reproche plus souvent à minecraft d'être absolument nul en performances cpu qu'en performances mémoire, je crois que c'est une bonne idée.

    Cela dit, je ne connais pas le code sur le bout des doigts, qu'est-ce que t'en penses?

    A leur place, ce serait la seule raison pour laquelle j'aurais fait ça...
     
  9. robin4002

    robin4002 Support Technique
    Staff

    Inscrit:
    17 Août 2012
    Messages:
    5 478
    Points:
    229
    Sexe:
    Homme
    Non, rester sur l'ancien système aurait été plus performant. La 1.8 apporte pas mal d'optimisation au niveau de l'utilisation de la carte graphique, mais côté cpu ils ont fait n'importe quoi :/

    Le développeur d'optifine a dénoncé pas mal de problème avec la 1.8 dont celui des BlockPos, et un des dev de Mojang a dit quelque chose du genre "je ne sais même pas pourquoi les BlockPos ont été mit en place, c'est une horreur", il me semble que c'était grum ou dinnerbone.
     
    • J'approuve J'approuve x 1
    • Informatif Informatif x 1
  10. NeatMonster

    NeatMonster Mineur

    Inscrit:
    7 Déc 2014
    Messages:
    387
    Points:
    59
    Sexe:
    Homme
    Ce à quoi j'ajouterai qu'en passant par un objet, stocké dans la heap (le tas), plutôt que par des primitives, stockées dans la stack (la pile), le programme ne peut plus passer les valeurs via les différents caches du CPU, ce qui multiplie les accès mémoire et dégrade la performance.
     
    • Informatif Informatif x 2

Partager cette page