Europa Universalis IV - Carnet de développement du 19 Février 2019



Bonjour tout le monde, ici Lorenzo aka Duplo aka Le Battlepape aka Le Croisé encapé, je suis programmeur pour Europa Universalis IV. Vous m'avez peut-être vu dans le Dev Clash de Dharma, luttant pour propager le Catholicisme et accessoirement me faisant trahir par mes camarades italiens pour finir vaincu par une Venise contrôlée par l'IA.

Ces dernières semaines, nous avons annoncé que la version 1.28.3 serait la dernière version d'Europa Universalis IV à supporter le 32-bits, puisque nous nous dirigeons vers le 64-bits. J'ai pensé qu'il serait bien de vous donner une idée de ce que cela signifie, et de ce que vous pouvez ou non vous attendre dans un futur proche.

Il y a eu beaucoup d'histoires dernièrement au sujet des applications 32/64-bits ; mais de quoi s'agit-il exactement ?

Dans sa mise à jour pour MacOS 10.14, Apple a commencé à déprécier les applications 32-bits, afin de pouvoir abandonner complètement leur support à l'avenir : un fait qu'ils nous rappellent à chaque fois que nous lançons Steam ou notre EU IV bien aimé.

Ce qui est moins connu, c'est que si les applications 32-bits peuvent toujours être lancées avec la dernière mise à jour, tout le support pour cette architecture a été retiré, ce qui complique la tâche des développeurs pour ne serait-ce que simplement compiler le jeu. Apple fait donc du forcing pour que tout le monde passe au 64-bits ; mais pourquoi ?

Si j'ai réussi à garder votre attention jusqu'à présent, nous pouvons enfin aller au cœur du sujet. Cela promet d'être intéressant.

Quand on parle du 64-bits, il s'agit du x86-64, une architecture pour processeur conçue par AMD et donc les spécifications ont été publiées en l'an 2000.

En 2001, le noyau Linux a commencé à supporter cette nouvelle architecture, même si il n'y avait alors aucun processeur sur le marché.

En 2003, le premier processeur x86-64 sort : l'AMD64 Opteron. Plusieurs distributions Linux supportent déjà le x86-64.

En 2005, Microsoft supprime la version IA-64 (une autre architecture 64-bits ; mais de Intel) de Windows XP et publie Windows XP Professional x64 Edition.

En 2009, la version la plus récente des systèmes Apple, Mac OS X 10.6 "Snow Leopard", est publiée avec un support total du 64-bits sur les plate-formes x86-64. Windows 7 commence aussi à être installé par défaut en version 64-bits sur la plupart des nouveaux ordinateurs.

En 2011, avec la version Mac OS X 10.7 "Lion", Apple abandonne le support des processeurs 32-bits, entamant ainsi la modernisation de leur plate-forme qui a conduit l'année dernière à la dépréciation des applications 32-bits.

Tout ceci est bien joli ; mais en quoi cela nous concerne-t-il ?

En fait, il y a plusieurs raisons pour lesquelles basculer vers du 64-bits. Le risque de dépréciation sur les systèmes Mac OS est la plus évidente ; mais il y a plus que ça. L'architecture x86-64 est supérieure à sa sœur aînée, et de loin.

Sans aller trop loin dans les détails techniques, les avantages du full 64-bits peuvent être résumés en trois points :

Une extension de la RAM utilisable

Les applications 64-bits peuvent dépasser la limite des 4 Go de RAM. Vous aimez blob dans EU IV ? Imaginez à quel point vos processeurs seraient ravis s'ils pouvaient faire pareil avec la RAM.

Augmentation de la capacité

Les registres 64-bits et le 64-bits permettent au processeur de réaliser facilement des opérations qui étaient laborieuses sous les architectures 32-bits.

Un plus grand nombre de registres

Lors de grosses opérations de calcul, le compilateur 64-bits utilise ces registres supplémentaires pour mieux optimiser le programme généré. La Russia pourra recruter ses Streltsy encore plus rapidement !

Il y a également un autre avantage, non-technique : le support. Bien que Microsoft ne soit pas aussi zélé qu'Apple dans sa croisade contre le 32-bits, ils concentrent évidemment le plus gros de leurs efforts dans cette nouvelle (et plus répandue) architecture. Bien entendu, les outils 32-bits remplissent toujours leur rôle ; mais saisir cette chance pour migrer vers du 64-bits nous permettra de bénéficier des fonctionnalités du nouveau matériel informatique, réduisant les bugs et améliorant les performances.

Ceci étant dit, migrer vers le 64-bits ne rendra pas le jeu deux fois plus rapide comme par magie, ni ne fera apparaître de nouveau contenu. La migration vers cette nouvelle architecture aura d'abord un impact mineur sur Europa Universalis IV ; mais posera les bases pour un développement futur, nous permettant (à nous, développeurs) de tirer le meilleur parti des processeurs.

Et le multithreading c'est pour quand ?

Sérieusement ? L'absence de multithreading dans EU IV fait l'objet d'une idée reçue depuis longtemps.

De quoi s'agit-il ? Le multithreading implique d'exécuter en même temps des parties d'opérations, exploitant ainsi les cœurs multiples des processeurs modernes. L'avantage du multithreading est qu'il permet d'utiliser le processeur au maximum et réalise des opérations plus rapidement, puisque celles-ci sont exécutées en même temps. Le principal problème tient au fait qu'il est impossible de prévoir quand le système d'exploitation va permettre leur exécution, puisque cette opération est totalement hors de contrôle des applications. Travailler avec le multithreading consiste en fait à trouver un juste milieu entre des performances potentiellement meilleures du fait de l'exécution simultanée des tâches, et les pertes de performances liées à la synchronisation.

Ce compromis est particulièrement visible dans le cas d'EU IV, puisque le jeu a énormément de choses à calculer, et que chacune d'entre-elle influence énormément le comportement de l'IA.

Il est des choses qui peuvent être calculées séparément sans problème, comme le chargement des données, la plupart des comportements de l'IA, le calcul du cache, ... Mais il y a aussi des choses qui ne peuvent pas l'être : les parties du jeu qui dépendent d'autres parties par exemple. Forcer ces opérations interdépendantes à être calculées en parallèle donnerait des résultats non-déterminés (c'est à dire qu'un même état initial pourrait produire des résultats différents) et des données inconsistantes. Cela pourrait aussi conduire à des crash du jeu.

Un de nos rôles en tant que programmeur est d'essayer d'obtenir les meilleures performances possible, tout en ajoutant des fonctionnalités sympas. Le multithreading est un outil très pratique à notre disposition, il est déjà présent dans EU IV et est ici pour rester.

Vous pouvez discuter de cet article sur le forum en cliquant ici