Bonjour,

Alors avant toute chose je vais expliquer le contexte qui fait que je me pose ces questions. On voit souvent des bugs dans les jeux et on parle aussi beaucoup d'optimisation mais sans forcément comprendre le fonctionnement et leurs mise en place. Par conséquent je viens ici pour essayer d'en apprendre plus. Ce topique n'aura donc pas de lien direct avec Ubisoft mais je me dis qu'ici j'ai une chance d'obtenir une réponse. En espérant qu'un développeur/programmeur de chez Ubisoft (ou tout autre développeur hein ^^) passe par ici et ai la bonté de nous fournir quelque réponse.

Venons en au fait. Tout les jeux plus ou moins récent ont un moteur graphique:
- Frostbite Engine = EA (Battlefield)
- AnvilNext = Ubisoft (Assassin's Creed / Rainbow 6 Siege / Ghost Recon Wildlands)
- SnowDrop = Ubisoft (The Division)
- Unity
- Unreal Engine
- CryEngine
- Dunia Engine = Ubisoft (Far Cry)

Bon je vais pas tous les cités mais je pense qu'on en a nommé pas mal et des biens connus pour le coup. J'ai déjà un peux vue Unity (très rapidement) et j'ai pu constaté qu'a la fin du développement d'un jeu il faut cocher les cases pour convertir le jeu et le rendre compatible avec les différentes plateforme souhaité.

Etant moi-même étudiant en école d'animation 2D/3D, Vidéo Game Art et VFX je me demandais donc comment ce passe le développement d'un jeu bien avant la modélisation etc. J'ai tenter de trouver quelque réponse sur internet mais en vain alors peut-être que je ne cherche pas avec les bons thermes. Cependant j'admet être curieux sur la phase d'optimisation. Comment fait-on pour optimiser un jeu selon la plateforme et le rendre jouable sur des plateformes radicalement différente. Par exemple, en comparant 2 images d'Assassin's Creed une de Unity et une de Origins (ou Odyssey) on remarque que la distance d'affichage est complètement différente avec une configuration équivalente.

Avant de présenter 2 images voici un petit récapitulatif de la configuration PC sur lequel les 2 jeux on été tester:
- Processeur: Intel Core i7 3770k
- Ram: Corsair Dominator 16 Go (4x 4 Go) DDR3 1600 MHz CL9
- Carte mère: MSI Z77A-GD65 Gaming
- Carte Graphique: ASUS Dual-RX480-O4G
- Ecran: iiyama 24" LED - G-MASTER GB2488HSU-B3 Red Eagle

Paramètres ingame: tout est en Ultra (du moins tout les paramètres sont monté au maximum) sur un affichage Full HD FreeSync activé dans les pilotes et sur les paramètres de l'écran.

Ici Assassin's Creed Unity


Et la Assassin's Creed Origins:


On remarque que la distance d'affichage est principalement gérer par une "pixélisation" plus forte sur Unity que sur Origins. La question que je me pose c'est pourquoi on a le sentiment sur Unity que tout est flou et qu'il s'agit de plan texturer pour tout ce qui est situé à plus de 40/50m de la caméra, la ou sur Origins on ressent plus les volumes et tout paraît plus naturel et surtout ou on a le sentiment que c'est la définition de l'écran qui limite la capacité d'affichage de détail à longue distance? Sur quoi repose l'optimisation? J'imagine assez facilement qu'un algorithme est mis en place pour gérer ce qui doit être afficher ou ne doit pas l'être et à quel distance il doit l'être ou ne pas l'être. Mais en réalité la question que je me pose c'est pourquoi Unity est graphiquement si différent de Origins sur le plan affichage longue distance? Pourquoi l'un paraît plus naturel même sur des distances relativement longue et ou les bâtiments reste très bien visible sans pour autant être trop détailler mais juste ce qu'il faut pour ne pas que ça dérange l'oeil et "gaspille" (si on peut dire bien que je ne trouve pas le terme que je cherche) l'expérience de jeux? Est-il possible de rendre le jeux bien mieux optimisé? Si oui, est-ce une contrainte de temps qui pousse les développeurs à ne pas passer trop de temps sur cette aspect?

Une autre question qu'est ce qui créer (principalement) des bugs? On sait (malheureusement) que Unity à été un fiasco à sa sortie et que les bugs ont causé beaucoup de tord à la sortie du jeux. Mais qu'elle en étais la cause? Sans utiliser des termes trop "compliquer" peut-on expliquer les différent problèmes et bug faisant leurs apparition sur les jeux? Cela est-il dû au faite que la PS4 et la One venait de sortir et qu'il s'agissait donc du premier jeux totalement "next-gen" à l'époque développé par Ubisoft, que donc le moteur ayant subis des modifications pour proposé une expérience de jeux plus aboutis, à finalement rencontré autant de bug car les changements étais trop important?

Autre interrogation qui concerne cette fois uniquement Assassin's Creed (puisqu’avant AC ne servait principalement que d'exemple):
Sur la vidéo suivante un joueur nous montre comment les mécaniques ont évolué entre AC Unity et Origins (même si je ne suis pas d'accord avec le titre de sa vidéo c'est pour imager). Certaines d'entre elles paraissent beaucoup plus avancé, évolué et les déplacements beaucoup fluide. Pourquoi ne pas les avoirs gardées? Est-ce une question de motion capture à ré-effectuer ou peuvent-elles être adapté à tout les personnages tout opus confondu? Puisqu'elle sont intégré au moteur graphique pourquoi ne pas les avoir garder et rendu possible sur Origins et Odyssey?



J'imagine que toute les questions ne recevront pas forcément de réponse mais ce que je cherche surtout à savoir c'est comment on optimise un jeu pour le rendre jouable sans qu'il soit trop gourmand en ressource?

Je pense partager se petit topique sur mon discord pour que ceux intéressé puisse en apprendre plus et comprennent les difficulté rencontré par les développeurs et soit donc plus compréhensif sur certain bug ou autre.

J'espère aussi que ce topique apportera à d'autre mais bien évidemment que des potentiel programmeurs/développeur passe par ici pour tenter de répondre à mes questions.

Bien cordialement