Dansarticles récents ici sur MP1st, il semble y avoir beaucoup de controverses sur ce qui constitue ou non un nouveau moteur de jeu. Le moteur de Call of Duty : Ghosts est-il nouveau, ou s'agit-il d'un travail de copier/coller de la dernière génération de matériel de console ? Au sens très strict, non. Ce n'est pas un moteur tout neuf. Mais ce n’est pas une mauvaise chose en soi. La vraie réponse est, comme d’habitude, beaucoup plus nuancée.
Avant de pouvoir juger si un moteur mérite d’être qualifié de « nouvelle génération », vous devez savoir ce que fait un moteur de jeu. Un moteur de jeu ne se contente pas de dessiner l'image sur l'écran. Un moteur de jeu fait littéralement tout. Je n'ai probablement pas été assez clair.Tout.
Tout?
Alors, qu’est-ce que tout cela signifie exactement ? Je ne peux pas entrer dans les détails ni même simplement mentionner tout ce qui se passe, mais je peux donner une vision simplifiée. Tout d'abord, un moteur vérifie le matériel disponible. Cela va de la vitesse du processeur à la RAM disponible, en passant par la connexion Internet, la connexion d'accessoires USB, etc. Il s'agit d'un processus assez complexe sur PC, mais même sur consoles, cela se produit dans une moindre mesure. Une fois cela fait vous pouvez lancer votre interface graphique. Mais ce n’est pas la fin du processus. Un jeu doit également charger des données et toutes ces données doivent être représentées d’une manière ou d’une autre dans la mémoire. La manière de charger, stocker et récupérer de grandes quantités de données est une science en soi. Le moteur utilise constamment des caches, des dizaines de structures de données différentes, gère et garde une trace de l'emplacement de tout et s'assure que vous ne manquez pas de mémoire. Ce n’est pas quelque chose auquel vous pensez lorsque vous lancez un jeu, mais c’est extrêmement critique et très complexe pour les jeux modernes, même sur les consoles de la génération actuelle.
Mais encore une fois, cela ne s'arrête pas là. Si tout cela fonctionne comme prévu, vous pouvez maintenant commencer à charger vos vidéos d'introduction. Alors, quelle est la prochaine étape ? Vous devez afficher le menu principal. Les menus sont une autre structure de données que vous devez pouvoir afficher à différentes profondeurs. Ce n'est pas aussi compliqué que la plupart des autres parties d'un jeu, mais un jeu doit disposer d'un système qui permet aux concepteurs de modifier facilement la structure et l'apparence du menu sans avoir à toucher trop souvent au code sous-jacent. Un jeu doit également intercepter les commandes de l'utilisateur. Cela peut être votre contrôleur, mais de plus en plus souvent, des commandes vocales et des gestes également. Quel bouton ou quelle commande fait quoi, à quelle heure est un autre système qui doit s'exécuter. Selon l'endroit où vous vous trouvez dans le menu ou dans le jeu, les boutons peuvent faire différentes choses, ce n'est donc pas aussi simple que de lier un bouton à une seule action. Le gestionnaire d'entrée doit être conscient du contexte. De plus, les gens aiment le son. Grâce au code de détection exécuté par le jeu avant son lancement, il sait à quel périphérique audio envoyer l'audio. Pour l'instant, il s'agira simplement d'un simple fichier .mp3 ou d'un autre format.
Oh, avant d'oublier : si vous branchez vos écouteurs ou si votre manette perd la connexion, un jeu doit également gérer cela. Il existe un système qui écoute constamment les messages du système d'exploitation sous-jacent concernant les modifications apportées au matériel. Il doit s’assurer qu’à tout moment ces changements soient résolus de la manière la plus élégante possible. Ce n’est pas une tâche simple.
Le menu principal
Donc, avec tous ces systèmes opérationnels, nous sommes arrivés au menu principal ! Génial. Vous lisez ceci sur MP1st, donc je suppose que vous voudriez ensuite lancer le multijoueur. Pour cela, vous avez besoin d’une connexion Internet. Ceci est généralement géré par le système d’exploitation, mais vous avez toujours besoin d’un système capable de gérer toutes les différentes requêtes qu’un jeu peut effectuer. Encore une fois, transférer efficacement et correctement des données sur un réseau est une science en soi, donc ce qui suit est très simplifié : le jeu enverra une requête à un serveur maître, demandant les serveurs ou lobbys disponibles. Dans un format lobby, le jeu tente généralement de déterminer quel résultat offrira la meilleure latence. Pour les serveurs dédiés, il vous montre généralement simplement la liste et vous permet de décider. Lorsque vous vous connectez à un serveur (dédié ou non), de nombreuses données circulent afin que les deux parties sachent qui est qui et ce qui se passe.
Le serveur accepte votre connexion et vous êtes enfin prêt à jouer… après l'écran de chargement. Chaque élément du jeu doit maintenant être chargé en utilisant le système de gestion de mémoire que j'ai décrit ci-dessus. Cela représentera plusieurs gigaoctets et dizaines, voire centaines de milliers de fichiers différents qui devront être stockés dans des structures de données. Une fois tout chargé, il est temps de commencer le rendu. Mais que devons-nous restituer ? Et comment ? Que vous soyez en solo ou non, sur un serveur dédié ou en P2P, votre jeu a besoin d'une représentation de l'univers du jeu à tout moment. Ce n'est pas l'image que vous voyez à l'écran, mais c'est une représentation abstraite de l'état actuel du jeu. Il comprend des objets avec leur état actuel, leur emplacement, leur rotation et leurs propriétés spéciales, mais aussi des zones où différents sons doivent jouer, des particules comme des balles éjectées, des endroits où vous pouvez effectuer des actions spéciales comme sauter un mur et bien plus encore. Dans une session multijoueur, chaque joueur possède sa propre version unique du monde du jeu. Garder ces éléments synchronisés est un problème très difficile à résoudre et c'est là que la redoutable « compensation du décalage » entre en jeu, comme solution. Chaque image, le temps avance et le tout est mis à jour. Physique, mises à jour du serveur, actions du joueur… tout cela est appliqué dans cette représentation abstraite du monde du jeu.
Enfin la 3D !
Ce n'est que maintenant que le moteur de rendu 3D entre en jeu. L'une des premières choses qu'il fait est de décider quels objets sont visibles dans la vue actuelle et quelles parties. Il s'agit d'une partie très fondamentale du moteur de rendu, car si c'est bien fait, vous ne restituez que exactement ce dont vous avez besoin. Si c'est mal fait, vous gâchez beaucoup de performances sur des choses que le joueur ne voit pas. Une fois qu'il sait quoi restituer, il dessine tous les objets sous l'angle et la position corrects. Mais cela ne fait pas que cela. Il représente également les angles de chaque surface pour chaque pixel, sa distance par rapport à la caméra, son degré de réflexion et bien plus encore. Une fois ces données obtenues, il peut commencer à appliquer des effets d’éclairage. Une fois l'éclairage terminé (entre autres choses), tout passe par un post-traitement, l'interface utilisateur est dessinée dessus, et c'est ce qui arrive à l'écran.
La plupart des systèmes de rendu font exactement ce qu’on leur dit de faire. Si vous voulez savoir à quelle distance se trouvent les pixels de la caméra et que vous disposez d'un bon algorithme pour cela, c'est tout ce dont vous aurez besoin pour résoudre ce problème. Il ne sert à rien de jeter des systèmes fonctionnels, il suffit de les réécrire pour faire exactement la même chose. En général, jeter un moteur entier est une mauvaise idée, à moins que de gros obstacles technologiques ne vous empêchent de l'améliorer. Si un développeur souhaite améliorer l’éclairage de son jeu, il lui suffit d’améliorer l’étape d’éclairage du moteur de rendu. La plupart des nouvelles fonctionnalités que vous trouvez dans les moteurs modernes sont des éléments de base qui se connectent directement au pipeline de rendu, comme ils l'appellent. De nombreuses techniques de rendu sophistiquées présentent de nombreux défis techniques et mathématiques.
Call of Duty : Ghosts : next-gen ou pas ?
En utilisant la puissance supplémentaire, le moteur CoD:Ghosts a considérablement amélioré de nombreuses parties du moteur de rendu et en a ajouté bien d’autres. Ce ne sera probablement pas aussi joli que Battlefield 4, mais là encore, il fonctionnera à deux fois le framerate. Frostbite 3 et le nouveau moteur CoD sont tous deux de « nouvelle génération », même si ni l’un ni l’autre n’est complètement nouveau. Les deux s’amélioreront avec le temps. À titre d'exemple, comparez CoD2 avec BO2, ou la Bad Company originale avec Battlefield 3. Ce n'est que la première vague de jeux pour les nouvelles consoles. Le meilleur reste à venir. Jeter des moteurs qui fonctionnent parfaitement au lieu de les améliorer ne fera que ralentir ce processus.
Ainsi, la prochaine fois, un moteur sera « juste » une version améliorée de la version précédente. N'allumez pas vos torches et ne sortez pas vos fourches. Donnez-lui une bonne chance. Un bon logiciel est comme un bon vin. Cela prend du temps. Deux années d’amélioration auront un effet bien plus important que deux années passées à tout refaire à partir de zéro.
En fin de compte, nous sommes tous gagnants car nous obtiendrons tous de meilleurs jeux construits sur de meilleurs moteurs. En tant que joueur sur PC, je peux certainement apprécier de bons graphismes, mais en fin de compte, la seule chose qui compte pour moi lorsque je joue à des jeux est de m'amuser. Jouez au jeu auquel vous voulez jouer et laissez les autres faire de même. Les bons moments arrivent, alors profitons-en au lieu de nous disputer sur Internet !