mardi 5 mars 2013

Annexe DF: les FPS (frames per second)

Salutations joueurs et joueuses barbu(e)s, aujourd'hui un court billet sur un sujet important de Dwarf Fortress, j'ai nommé les FPS ou frames per second.

Nous n'allons pas parler de nains informaticiens mais bien d'un peu de technique. Si vous jouez à DF et que vous possédez un ordinateur "moyen", vous avez certainement remarqué que la vitesse de déroulement du jeu chutait parfois après plus de cinq, six, sept ou plus d'heures de jeu, et surtout lorsque vous commencez à avoir plus d'une centaine de nains avec des chaussettes en soies qui traînent partout et des tonneaux de bières par camions.

Les FPS sont un moyen de mesurer et d'apprécier la vitesse à laquelle le jeu tourne. Nous pouvons distinguer les FPS des GFPS (graphical frame per second) qui eux sont la vitesse d'affichage du jeu. Si vous avez activé l'affichage des FPS en jeu, vous devez avec un format de type [FPS (GFPS)].

Alors, vous me direz, pourquoi les FPS se barrent au fur et à mesure du jeu comme des nabots qui courent à une fête dans votre meeting hall ? Etant donné l'aspect visuel de DF, vous vous douterez bien que ce n'est pas votre carte graphique qui galère pour faire tourner le bazar. Ceci est dû au fait que tout ce qui est dans votre écran de jeu est constamment géré par des calculs et des algorithmes. Chaque objets a sa température, chaque créatures vivante voit sa trajectoire calculée parmi des centaines d'autres pour aller au plus rapide.

Et que se passe t-il lorsque vous accumulez des milliers d'objets et des centaines de bestioles qui cherchent leur chemin ? Il se passe que votre machine galère un maximum pour tout calculer, pour peu qu'elle ne soit pas équipée de processeurs/carte mère/ RAM et j'en passe de grosse capacité. Et c'est un peu une patte d'ours au visage quand on voit la gueule de DF "Ha ha, c'est encore ton jeu d'autiste ?! Je comprends rien à ce qui se passe, c'est un peu un Tetris non ?".

Heureusement, il existe des astuces pour atténuer le phénomène, vous pourrez attendre la sortie de The Witcher 3 avant de claquer des fortunes pour changer de PC. Je tire la plupart de ces informations du wiki anglais qui a une page consacrée à l'optimisation des FPS, et de mes connaissances personnelles. Pour les modifications techniques je vous invite à jeter un oeil sur le précédent billet qui détaille un peu les fichiers raws du jeu. Je précise que je ne cite ici que les méthodes qui ont un effet significatif et pour tout le monde, si vous voulez fouiner près des compatibilités cartes graphiques, synchronisation et j'en passe, je ne saurais pas vous aider.

Sans altération de l'expérience et des mécanismes du jeu

paramètres et configuration du jeu :

- vous pouvez modifier les G_FPS dans le fichier init.txt du jeu. En le réduisant, cela peut accélerer le reste. La plupart des gens peuvent le réduire à 20, mais attention, une réduction trop importante peut rendre le jeu impossible à jouer.

- cela peut paraître évident, mais si vous avez des problèmes de FPS ne laissez pas tourner d'applications en fond ou en fenêtré. Des logiciels comme GameBooster peuvent optimiser les performances CPU en désactivant les programmes de fond indésirables pendant le jeu. Dans le fichier init.txt, vous avez également une option vous permettant d'indiquer quelle priorité DF.exe a sur le reste de vos applications.

design de forteresse et gameplay :

L'idée est ici de changer sa façon de creuser ses forteresses et de gérer ses nains pour réduire les calculs demandés à l'ordinateur : ces techniques peuvent être très efficaces, je vous conseille de les essayer en premier (sauf si vous le faisiez déjà avant, évidemment).

- la taille de l'embark a un impact plutôt énorme sur les performances. En 3*3 voir en 2*2, vous disposez encore bien assez de surface pour jouer au lancer de javelot avec les gobelins, tout en optimisant le bazar.

- les couches de cavernes mangent pas mal de ressources, surtout lorsque vous les avez percées. Vous pouvez réduire leur nombre à 1 grâce à l'outil de génération avancée de monde (dans le menu principal). La couche présentera toutes les ressources en végétaux/créatures souterrains disponibles, vous ne loupez donc rien.

- ne fabriquez pas des objets inutiles à la pelle, et dés que vous en avez trop ou qu'ils sont inutiles, donnez les aux caravanes ou détruisez-les (magma, dwarven atom smasher). J'ai également vu pas mal de sujets sur le forum anglais de Bay12Games concernant l'optimisation des stockpiles et des ouvertures pour le cheminements de nains. Gardons à l'esprit que ce n'est, à la base, pas le nombre d’objets ne lui -même qui sucre beaucoup de calculs à l'ordinateur mais plutôt le port d'objets et la recherche dans les stockpiles par les nains. Essayez de retrouver votre bloc-notes situé quelque part dans votre chambre. Maintenant, retrouvez le dans la plateforme de stockage d'Amazon à Paris. HA.

- les fluides ralentissent le jeu, surtout l'eau lorsqu'elle est en mouvement. N'embarquez pas près d'un océan, ne percez pas les aquifères et ne jouez pas avec les rivières. Votre docteur, en plus de bien soigner, saura super bien esquiver les flèches gobelines quand il devra aller chercher de l'eau au ruisseau pour ses patients.

- une option mal connue du jeu est la mise en place du trafic (accessible à partir du menu du jeu, je ne sais plus quelle lettre). Elle vous permet de mettre certaines zones en priorité maximale pour le pathfinder de vos nains, ainsi que d'autres en priorité minimale, voire nulle. Il est une bonne idée de mettre ses couloirs principaux en high traffic, et certains recoins peu visités en low. L'algorithme cherchera d'abord dans ces zones prioritaires et ira plus vite.

- cloisonnez l'espace disponible pour vos nains. Le pathfinder analyse toutes les surfaces qui leur sont accessibles, alors fermez à clé quelques portes et interdisez l'accès aux cavernes lorsque vous n'avez pas besoin d'y aller. Notez également que des chemins plus courts optimisent les performances, mais il est parfois galère de faire une forteresse sur pleins de niveaux verticaux sous prétexte que les nains ont moins de pas à faire.

Avec altérations des mécanismes du jeu

- désactivation de la température et du temps (weather) avec le fichier d_init.txt. Marche souvent très bien, mais les effets sont parfois variables (et ce n'est pas miraculeux). Influe sur l'utilisation du magma, ainsi que sur l'eau si vous êtes dans un biome froid ou très chaud.

- limiter la population de nains avec d_init.txt.

- laisser les animaux en pâture, en cage ou les transformer en steak.

- les sièges sont parfois très importants. Vous pouvez les désactiver avec d_init.txt, ou massacrer tous ces impudents qui osent vous défier (cette idée m'emplie de joie et de bonheur).

- il existe des mods et utilitaires qui sont censés réduire les FPS, leur utilité n'est à ma connaissance pas confirmée et il y a parfois des bugs

J'espère que certaines de ces astuces vous aideront à avoir une expérience de jeu plus plaisante et à faire des forteresses immenses !

6 commentaires:

@skaradams a dit…

Bien utile comme billet. Pour les gens comme moi qui jouent principalement quand ils sont sur leur netbook dans le train, c'est cool.

Merci pour les tips

Anonyme a dit…

Nice one !

Anonyme a dit…

Merci beaucoup.
Lecture agreable et utile. :)

draque a dit…

Merci de centraliser les infos, c'est toujours utile !

Concernant le pathFinder, j'aimerais dire qu'il est très utile ! surtout si comme moi votre forteresse ressemble beaucoup à un labyrinthe. Lors d'une partie ou je ramé beaucoup, j'ai pus doubler le nombre de frames ! (je suis passé de 10 à 20 environ)

Carlos a dit…

Merci pour ces informations, j'ai compris pourquoi mon pc "lagué" ^^

Anonyme a dit…

Une chose que j'ai remarqué : Le jeu chez moi ne bouffe qu'un de mes 4 CPU à 100%, les autres glandent. C'est très dommage, et j'espère que les créateurs du jeu optimiserons tout ça dans les prochaines versions.
Dans le même ordre d'idée : il n'existe pour l'instant que des binaires 32bits. Je suis pas super calé en processeurs, mais je pese que c'est un peu sous-exploiter les CPUs majoritairement 64bits actuels...