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 !

lundi 4 mars 2013

Annexe DF : les fichiers raw et les mods


Aujourd'hui nous allons rapidement nous pencher sur les fichiers modifiables de Dwarf Fortress, sur lesquels quelques petites modifications peuvent vous faciliter la vie et celle de vos nains.

Les deux fichiers les plus importantes sont init et d_init. Ils sont trouvables dans [votre fichier DF]/data/init.

Ces deux .txt sont clairs et facilement éditables, vous avez même les indications du grand Toady pour chaque ligne.

init.txt

[SOUND:YES]

YES/NO ; permet d'activer la magnifique musique ou non en jeu.

[VOLUME:0]

0-255 ; règle le volume par défaut de la musique. Vous pouvez aussi le modifier dans le menu ESC du jeu.

[INTRO:NO]

YES/NO ; laisse ou passe le générique d'introduction.

[WINDOWED:YES]

YES/NO/PROMPT ; démarre le jeu en fenêtré ou non.

[WINDOWEDX:80]
[WINDOWEDY:25]
[FONT:curses_640x300.png]

C'est la taille du mode fenêtré, se modifie plus simplement en jeu en réglant la taille à la fenêtre et en utilisant la molette de la souris.

[RESIZABLE:YES]

YES/NO ; permet de modifier la taille de la fenêtre en jeu, ou pas.

[FULLSCREENX:0]
[FULLSCREENY:0]
[FULLFONT:curses_800x600.png]

Caractéristiques du mode plein-écran. Laisser 0 laisse le jeu choisir une résolution pour vous.

[BLACK_SPACE:YES]

YES/NO ; si "NO", les caractères du jeu seront étirés pour remplir votre écran si il y a une incohérence de résolution.

[GRAPHICS:NO]
[GRAPHICS_WINDOWEDX:0]
[GRAPHICS_WINDOWEDY:0]
[GRAPHICS_FONT:curses_square_16x16.png]
[GRAPHICS_FULLSCREENX:0]
[GRAPHICS_FULLSCREENY:0]
[GRAPHICS_FULLFONT:curses_square_16x16.png]
[GRAPHICS_BLACK_SPACE:YES]

Informations graphiques comme précédent ; je vous laisse vous renseigner sur internet si vous voulez modifier quoi que ce soit.

[PRINT_MODE:2D]
Mode examples:
PRINT_MODE:2D
PRINT_MODE:TEXT
PRINT_MODE:FRAME_BUFFER
PRINT_MODE:PARTIAL:0
[SINGLE_BUFFER:NO]

2D/2DSW/2DASYNC/STANDARD/PARTIAL/ACUUM_BUFFER/FRAME_BUFFER/VBO ; réglages concernant le framerate, pour parfois l'améliorer. ATTENTION, 99,9% du temps, si vous avec un ralentissement au fur et à mesure du jeu, c'est juste que votre machine n'est pas assez puissante.

[TRUETYPE:24]

Réglage graphique concernant la taille des caractères. Peu important.

[TOPMOST:NO]

YES/NO ; pour que votre fenêtre DF soit toujours au-dessus de toutes les autres.

[FPS:YES]

YES/NO ; très utile, met un petit indicateur de vos fps en jeu.

[FPS_CAP:100]

Fixe le framerate maximal en jeu (ici, la vitesse des créatures). Indication de Toady : un paysan non encombré et en bonne santé gagne un pas de plus tous les 10 frames. Si la valeur est de 0, il n'y a pas de limitation.

[G_FPS_CAP:50]

Fixe le taux de rafraîchissement graphique durant le jeu.

[ARB_SYNC:NO]

YES/NO ; peut améliorer les performances dans des conditions du surcharge du CPU pour les cartes qui supportent l'extension OPENGL ARB_sync. Evidemment.

[VSYNC:NO]

YES/NO ; fixe le comportement des applications de synchronisation verticale. Mettre "YES" peut avoir un (mauvais ?) impact sur vos fps si vos G_FPS sont hauts.

[TEXTURE_PARAM:LINEAR]

NEAREST/LINEAR ; réglage concernant les textures (?!).

[PRIORITY:NORMAL]

REALTIME/HIGH/ABOVE_NORMAL/NORMAL/BELOW_NORMAL/IDLE ; du plus haut au plus bas, fixe le niveau de priorité de dwartfort.exe pour l'ordinateur.

[ZOOM_SPEED:10]

Vitesse d'augmentation ou de réduction des caractères lorsque vous faites un zoom. 10 veut dire que la grille des caractères augmente de 10 fois par zoom.

[MOUSE:YES]

YES/NO ; permet de désactiver totalement la souris (qui ne sert déjà  pas grand chose et qui a une maniabilité dégueulasse).

[MOUSE_PICTURE:NO]

YES/NO ; met une image BMP pour le curseur de la souris.

[KEY_HOLD_MS:250]

Le nombre de millisecondes qui doivent s'écouler avant qu'une touche enfoncée puisse se répéter.

[KEY_REPEAT_MS:150]

La même chose, mais après que le processus de répétition ait commencé.

[KEY_REPEAT_ACCEL_LIMIT:8]
[KEY_REPEAT_ACCEL_START:10]

Histoires de délais de répétition et de décélération de la vitesse de répétition. Si vous voulez vraiment chercher des trucs tordus, espionnez vos voisins ou fouettez vous avec une vieille serpillière toute rêche.

[MACRO_MS:15]

Nombre de millisecondes entre les instruction de macro (lorsqu'on les joue).

[RECENTER_INTERFACE_SHUTDOWN_MS:0]

Nombre de millisecondes qui doivent s'écouler avant que les touches ne fonctionnent, lors d'une pause d’évènement (fey mood, caravane qui arrive etc..).

[COMPRESSED_SAVES:YES]

YES/NO ; changez pour "NO" si vous avez des problème de sauvegarde corrompues.


d_init.txt


[AUTOSAVE:NONE]
[AUTOBACKUP:NO]
[AUTOSAVE_PAUSE:NO]

NONE/SEASONAL/YEARLY ; pour autosave, et YES/NO ; pour les deux autres. Règle la fréquence des sauvegardes automatiques, ainsi que la création automatique ou non d'un dossier de secours à différents temps de jeu. La dernière ligne indique si le jeu se met en pause lors de la sauvegarde automatique.

[INITIAL_SAVE:NO]

YES/NO ; détermine s'il y a une sauvegarde lors de la création de la forteresse.

[PAUSE_ON_LOAD:YES]

YES/NO ; pour que le jeu soit en pause lorsque vous chargez une partie.

[EMBARK_WARNING_ALWAYS:NO]

YES/NO ; pour activer ou désactiver le message de confirmation lors du choix du site d'embark.

[SHOW_EMBARK_TUNNEL:FINDER]

ALWAYS/FINDER/NO ; vous laisse voir les caractéristiques du site d'embarquement au niveau local, seulement par le finder ou pas du tout. Interdit également l'utilisation du finder.

[TEMPERATURE:YES]
[WEATHER:NO]
[ECONOMY:YES]
[INVADERS:YES]
[CAVEINS:YES]
[ARTIFACTS:YES]
[ZERO_RENT:NO]
[TESTING_ARENA:YES]
[WALKING_SPREADS_SPATTER_DWF:NO]
[WALKING_SPREADS_SPATTER_ADV:YES]

YES/NO ; active ou désactive certains mécanismes et aspects du jeu. Très utile, si vous avez des ralentissements les deux premiers sont à fusiller en premier (mais vous ne pourrez plus brûler vos gobelins, dommage).

[LOG_MAP_REJECTS:NO]

YES/NO ; permet d'avoir les raisons des rejets de monde lors des créations de carte dans un fichier.

[EMBARK_RECTANGLE:4:4]

Règle la largeur et la hauteur du rectangle d'embark par défaut.

[PATH_COST:1:2:5:25]

Règle les valeurs de priorités si vous utilisez les routes de trafic dans votre forteresse.

[STORE_DIST_ITEM_DECREASE:20]
[STORE_DIST_SEED_COMBINE:1000]
[STORE_DIST_BUCKET_COMBINE:1000]
[STORE_DIST_BARREL_COMBINE:1000]
[STORE_DIST_BIN_COMBINE:1000]

Ces valeurs contrôlent le comportement des nains quand il s'agit de placer des objets dans des conteneurs. Elles vont de 2 à 1000, il y a des facteurs de décision dépendant de la distance séparant le nain des conteneurs.

[COFFIN_NO_PETS_DEFAULT:YES]

YES/NO ; permet de changer la valeur de défaut concernant l'enterrement des familiers, quand vous placez un cercueil.

[WOUND_COLOR_NONE:7:0:1]  No recorded active wounds on the part.  Default = white
[WOUND_COLOR_MINOR:6:0:0]  Any damage that doesn't have functional/structural consequences (might be heavy bleeding though).  Default = brown
[WOUND_COLOR_INHIBITED:6:0:1]  Any muscular, structural or functional damage without total loss.  Default = yellow
[WOUND_COLOR_FUNCTION_LOSS:3:0:1]  An important function of the part is completely lost, but the part is structurally sound (or at least partially intact).  Default = bright cyan
[WOUND_COLOR_BROKEN:4:0:1]  The part has lost all structural integrity or muscular ability.  Default = bright red
[WOUND_COLOR_MISSING:0:0:1]  The part is completely gone.  Default = dark gray

Permet de changer les couleurs du texte d'état des parties blessées des créatures (rose, c'est une fracture ! youpi !).

[SKY:178:3:0:0]

Ce sont les cases qui apparaissent quand on voit un espace qui est bien en dessous de nous à l'extérieur (par défaut, c'est bleu il me semble).

[CHASM:250:0:0:1]

La même chose, mais dans les lieux clos.

[PILLAR_TILE:'O']

Caractère pour les piliers.

[TRACK_N:208I]
[TRACK_S:210I]
[TRACK_E:198I]
[TRACK_W:181I]
[TRACK_NS:186I]
[TRACK_NE:200I]
[TRACK_NW:188I]
[TRACK_SE:201I]
[TRACK_SW:187I]
[TRACK_EW:205I]
[TRACK_NSE:204I]
[TRACK_NSW:185I]
[TRACK_NEW:202I]
[TRACK_SEW:203I]
[TRACK_NSEW:206I]
[TRACK_RAMP_N:30I]
[TRACK_RAMP_S:30I]
[TRACK_RAMP_E:30I]
[TRACK_RAMP_W:30I]
[TRACK_RAMP_NS:30I]
[TRACK_RAMP_NE:30I]
[TRACK_RAMP_NW:30I]
[TRACK_RAMP_SE:30I]
[TRACK_RAMP_SW:30I]
[TRACK_RAMP_EW:30I]
[TRACK_RAMP_NSE:30I]
[TRACK_RAMP_NSW:30I]
[TRACK_RAMP_NEW:30I]
[TRACK_RAMP_SEW:30I]
[TRACK_RAMP_NSEW:30I]

Définition des caractères de sol et de pentes il me semble. "I" à la fin inverse la couleur des matériaux (?).

[IDLERS:TOP]

TOP/BOTTOM/OFF ; affiche un petit indicateur des "idlers" (= glandeurs dans la forteresse).

[SET_LABOR_LISTS:SKILLS]

NO/SKILLS/BY_UNIT_TYPE ; vous pouvez faire en sorte que vos immigrés arrivent sans aucun job activé, qu'ils soient activés par compétences (mode par défaut) ou par le type d'unité global. Par exemple, un nain arrive avec une compétence "skilled" dans carpentry. Avec NO, il n'aura aucun job activé. Avec SKILLS il aura le job carpenter activé. Avec BY_UNIT_TYPE, je suppose qu'il aura tous les jobs des woodworkers activés, c'est à dire carpenter, bowyer et wood cutter.

[POPULATION_CAP:80]

Très utile, vous permet de fixer la population maximale de votre forteresse (avec certaines fluctuations, je ne sais par contre pas si les changements prennent effet sur une forteresse en cours ou s'il faut en recommencer une). Toady One vous précise qu'il faut au moins 80 nains pour avoir un roi, et 100 pour avoir accéder à toutes les fonctionnalités du jeu (je pense par là qu'il veut dire qu'il vous faut 100 nains pour qu'un dragon vienne vous cramer la gueule ou qu'une horde gobeline vous assiège).

[BABY_CHILD_CAP:100:1000]

Permet de contrôler la population en enfants et en bébés de votre forteresse (chez les nains, il n'y a que la contraception divine qui marche, eh oui !). Le premier nombre est le maximum total d'enfants et de bébés admis. Le second est la même chose, mais exprimé en pourcentage de la population adulte. Le jeu va prendre automatiquement le cap le plus bas, c'est pour cela qu'ici, le nombre par défaut 1000% ne veut rien dire.
A noter que cela n'affecte que les futures grosses de vos naines, et non les immigrations et les grossesses en cours. Mettre un de ces chiffres à 0 empêche toute grossesse.

[VARIED_GROUND_TILES:YES]

YES/NO ; si vous n'aimez pas les symboles ,.'` qui représentent le sol, vous pouvez les désactiver ("the ground will turn into periods only" je vous laisse essayer).

[ENGRAVINGS_START_OBSCURED:NO]

YES/NO ; switchez si vous en avez marre que vos murs gravés ressemblent à des fouillis de symboles différents (modification visuelle, ça ne change pas le contenu des gravures en elles-mêmes).

[SHOW_IMP_QUALITY:YES]

YES/NO ; permet d'enlever les marqueurs de qualités dans les menus contextuels, comme par exemple enlever les astérisques *sword*.

[SHOW_FLOW_AMOUNTS:NO]

YES/NO ; les tiles des fluides comme l'eau et le magma sont directement marqués du chiffre indiquant leur profondeur, c'est très pratique dés que vous voulez faire joue-joue avec les rivières et éviter de noyer tout le monde.

[SHOW_ALL_HISTORY_IN_DWARF_MODE:YES]

YES/NO ; YES permet d'avoir une description historique un peu détaillée en inspectant les gravures et les artefacts.

[MORE:YES]

YES/NO ; en mode Adventure, toutes les annonces seront passées si cette option est sur NO.

[DISPLAY_LENGTH:23]

Définit, toujours en mode Adventure, combien de lignes sont annoncées avant le jeu n'affiche "more" (quand vous vous prenez triple backstab dans des grottes comme moi, il n'y a pas la place nécessaire à la longue et très détaillée description de votre mort atroce).

[ADVENTURER_TRAPS:YES]

YES/NO ; choisis si les pièges vous affectent dans le mode adventure. Les pièges à cage sont TOUJOURS désactivés.

[ADVENTURER_ALWAYS_CENTER:YES]

YES/NO ; si vous choisissez NO, en mode adventure, la caméra ne se recentrera sur votre personnage que lorsque vous serez au bord de l'écran.

[ADVENTURER_Z_VIEWS:UNHIDDEN:9]

Contrôle la vue en dessous et au dessus du mode adventure. Le premier paramètre peut être OFF/UNHIDDEN/CREATURE/ON. UNHIDDEN fait apparaître la vue seulement si il y a des cases "visibles" en bas ou au-dessus de vous. CREATURE ne la fait apparaître que s'il y a une créature sur l'une de ces cases. Le second paramètre définit la taille de la vue, qui peut être de 3, 5, 7 ou 9.

[NICKNAME_DWARF:REPLACE_FIRST]
[NICKNAME_ADVENTURE:REPLACE_FIRST]
[NICKNAME_LEGENDS:REPLACE_FIRST]

Lorsque vous, ou le jeu, surnommez une créature, cette option définit comment son nouveau nom remplace l'ancien. Les options sont REPLACE_FIRST/CENTRALIZE/REPLACE_ALL.

Comme vous l'avez peut être remarqué en fouillant les fichiers du jeu, toutes les entités, créatures et objets ont leur fichiers raws. Une fois que vous avez compris le fonctionnement des lignes de texte, vous pouvez potentiellement modifier tout ce que vous souhaitez. Notez également que ces fichiers existent en deux exemplaires : il y a les fichiers généraux de votre jeu, et ceux de vos sauvegardes. Vous pouvez donc réaliser des modifications sur une carte sans pourrir votre dossier DF. Certaines modifications dans init et d_init ne prennent cependant effet qu'à la création d'un nouveau monde (mais je ne sais pas lesquelles, trololol).

Si vous speakez un peu la langue anglaise, une page du wiki est réservée à la triche par modification des raws.

Une autre, si vous êtes un dingue dans votre encéphale, vous introduit à la notion de modding. Il est évident que laisser toutes ces lignes disponibles à tous les fous qui constituent la communauté DF ne pouvait qu'entraîner l'apparition de versions "enrichies" et détournées du jeu. Si vous vous ennuyez, je vous invite à visiter le guide du moddeur en herbe ainsi que la page des mods créés à ce jour. Cette dernière contient également des liens vers des utilitaires et logiciels bien pratiques.

Je vous souhaite bon jeu et bonne exploration des fichiers DF !