Patchnote 0.914.418 - 443
Note importante avant de plonger dans la lecture du journal de mise à jour : nous devons annoncer que la nouvelle mise à jour a été retardée. Bien que la mise à jour soit prête et que les fichiers aient déjà été téléchargés sur le serveur et le client de jeu (ce qui explique pourquoi la mise à jour est si volumineuse et occupe un espace considérable), nous avons décidé de ne pas la déployer tout de suite. Nous voulons nous assurer que le patcher et le nouveau moteur de jeu fonctionnent correctement sur tous les ordinateurs. De plus, nous souhaitons confirmer que nos correctifs de crash fonctionnent comme prévu.
La nouvelle extension, tout comme Red Fox Delta, est une zone "sensible" sujette aux crashs, donc nous vous serions très reconnaissants de continuer à envoyer des rapports de crash comme vous l'avez fait jusqu'à présent. Ces rapports sont extrêmement précieux et nous aident à résoudre les problèmes plus efficacement. Merci encore pour votre patience.
Cela fait un moment depuis notre dernière mise à jour, mais ne vous inquiétez pas, nous avons travaillé d'arrache-pied et sommes fiers de vous annoncer les résultats de nos efforts.
Notre travail peut être réparti en trois domaines principaux : les améliorations de l'éclairage, les optimisations du jeu, et la création d'un nouveau patcher à partir de zéro.
Améliorations de l'éclairage
Système d'ombres dynamiques
L'amélioration la plus notable est l'ajout d'un système d'ombres dynamiques. Désormais, tout ce qui est animé projettera des ombres comme il se doit. Avant cette mise à jour, toutes les ombres dans le jeu étaient statiques.
Nous avions déjà tenté d'implémenter une fonctionnalité similaire par le passé (comme montré dans les captures d'écran ci-dessous), mais cela n'était pas viable pour deux raisons principales. Premièrement, les performances étaient gravement affectées, ce qui faisait chuter le jeu à environ 30 FPS. Deuxièmement, la qualité des ombres était médiocre. La comparaison ci-dessous montre l'ancienne implémentation dans son scénario le plus favorable, qui nécessitait toujours cinq fois plus de ressources tout en étant moins détaillée.
Ancienne méthode, remarquez à quel point l'ombre est floue.
Nouvelle méthode, remarquez à quel point l'ombre est plus nette.
Nous avons travaillé très dur pour nous assurer que le nouveau système d'ombres est à la fois performant et esthétiquement agréable. En fait, il est tellement réussi que même les cartes d'ombre basse résolution apparaissent incroyablement détaillées par rapport aux cartes d'ombre statiques. Et comme nous le verrons plus tard, l'impact sur les performances est minime !
Améliorations des interactions lumineuses
Les interactions avec les différentes sources de lumière dans le jeu ont été considérablement améliorées. Votre personnage sera désormais correctement éclairé par les sources de lumière environnementales, au lieu d'être ignoré. Veuillez consulter les captures d'écran ci-dessous pour voir la différence.
Avant
Après
De même, les ombres affectent désormais les personnages dans le jeu. Par exemple, si un joueur se place à l'ombre d'un arbre, il apparaîtra assombri.
Remarquez comment le joueur devient plus sombre lorsqu'il se trouve à l'ombre.
Bien que cette amélioration ajoute une certaine charge au moteur de rendu, ce qui se traduit par une charge de travail supplémentaire et une légère réduction des performances, nous avons déterminé, grâce à un profilage approfondi, que l'impact est minime.
Cel Shading
Au départ, les personnages étaient rendus avec une luminosité constante, indépendamment de leur environnement, ce qui donnait au jeu un style visuel proche de l'anime. Cependant, avec l'ajout de l'éclairage dynamique, les personnages commençaient à avoir un aspect plastifié lorsqu'ils étaient proches des sources lumineuses. Pour maintenir l'esthétique souhaitée, nous avons ajouté un effet de cel shading pour donner aux personnages un look plus « anime ». Veuillez consulter les captures d'écran ci-dessous pour voir l'amélioration.
Sans le Cel Shading
Cel Shading activé
Comme vous l'avez peut-être remarqué, lorsque le cel shading est désactivé, les personnages peuvent apparaître trop éclairés. Cela se produit parce que le jeu ne limite pas la luminosité maximale qu'un objet peut recevoir. Par conséquent, dans certaines zones (comme celle montrée), les objets peuvent avoir un aspect peu esthétique lorsqu'ils sont affectés par les lumières environnantes.
Pour remédier à cela, la désactivation de l'option « Nouveau Cel Shading » désactivera également l'éclairage dynamique, ce qui empêchera ces problèmes de se produire. De plus, nous avons ajouté un contour pour compléter le cel shading, qui est inclus dans l'option « Nouveau Cel Shading ». Contrairement au cel shading, le contour a un impact sur les performances car il nécessite que le modèle soit rendu deux fois (c'est une pratique courante même dans les jeux modernes ; bien que vous puissiez utiliser le post-traitement, il ne permettrait pas d'atteindre la même qualité). En conséquence, l'ensemble des paramètres (Éclairage Dynamique, Cel Shading, Éclairage de Contour, Contour et Correction de Tonalité) réduit généralement les FPS de 10 à 15 % en moyenne, bien que cela puisse varier en fonction du nombre de joueurs et de monstres à l'écran.
Cel Shading, Éclairage de Contour et Contour fonctionnent ensemble !
Nouvelles méthodes d'anticrénelage pour les utilisateurs de Vulkan (MSAA)
Nous avons ajouté de nouvelles méthodes d'anticrénelage spécifiquement pour les utilisateurs de Vulkan. Lorsque le paramètre d'anticrénelage est réglé sur faible en utilisant l'API Vulkan, le jeu activera le MSAA2x. Lorsqu'il est réglé sur élevé, il activera le MSAA4x. Fait remarquable, l'impact sur les performances du MSAA4x est inférieur à celui du paramètre précédent le plus bas, le FXAA. Cela signifie que vous bénéficierez d'une excellente qualité d'anticrénelage avec des performances encore meilleures qu'auparavant. Veuillez consulter les captures d'écran ci-dessous pour voir les différences entre les différents presets.
Pas d'Antialiasing
FXAA
SMAA
MSAA2x
MSAA4x
Ajout d'ombres à de nombreuses cartes qui n'en avaient pas auparavant
De nombreuses cartes qui manquaient auparavant d'ombres, notamment les cartes de nuit et les cartes de donjons telles que Paris, disposent désormais d'ombres. Les ombres n'avaient pas été ajoutées auparavant en raison des problèmes d'éclairage qui en découlaient, mais nous avons développé un système qui détecte et corrige automatiquement ces situations. Cela garantit que le jeu est aussi beau que possible avec les ombres ajoutées. Veuillez consulter les images ci-dessous pour voir les différences.
Voici comment c'était avant cette mise à jour : pas d'ombres et éclairage défectueux.
Lorsque nous avons ajouté des ombres, le problème est devenu encore plus évident.
Enfin, voici à quoi cela ressemble après l'ajout de l'algorithme qui détecte et corrige ces situations.
Ces problèmes apparaissaient très souvent sur les cartes de nuit et les cartes de donjons. C'est pourquoi nous avions décidé de ne pas ajouter d'ombres à ces cartes, bien que cela n'avait pas de sens puisque les autres moments de la journée avaient des ombres. Mais c'est désormais du passé. Nous avons enfin une solution pour ces situations. Il en va de même pour Paris et de nombreuses autres cartes. Bien que le résultat final ne soit pas parfaitement parfait, il est suffisamment bon pour que nous puissions l'ajouter au jeu.
Optimisations du moteur de jeu
Voici la partie que beaucoup d'entre vous attendent : les optimisations du moteur de jeu. Comme vous l'avez peut-être deviné, l'ajout d'ombres dynamiques entraîne un léger surcoût pour le jeu (principalement sur le GPU, mais également sur le CPU). Étant donné que le jeu peinait à fonctionner sur certains appareils, des optimisations étaient nécessaires pour garantir une performance fluide pour tous.
Nous avons profilé le jeu pour déterminer quelles parties du code ne fonctionnaient pas de manière fluide et lesquelles pouvaient être optimisées. Cela s'est avéré être un projet plus complexe que prévu, car de nombreuses parties du jeu étaient initialement codées pour être juste assez bonnes pour fonctionner sans perdre trop de temps en optimisation. En conséquence, nous avons dû supprimer complètement ces parties du code et écrire nos propres implémentations, ce qui a pris un temps considérable.
Voici ce que nous avons fait :
- Améliorations du moteur PhysX : Les développeurs de Dragonica n'utilisaient pas PhysX de manière optimale, et de nombreuses parties du code étaient obsolètes et remplacées par des fonctions plus efficaces. La scène PhysX est créée en parallèle avec la scène normale, donc nous avons développé un système pour optimiser automatiquement les objets qui seront ajoutés à la scène PhysX afin de minimiser les calculs effectués par le moteur PhysX.
- Améliorations du système d'animation : Le système d'animation a été considérablement amélioré, ce qui a réduit les pics de lag et amélioré les performances.
- Corrections du chargement des textures : Les bugs dans le système de chargement des textures ont été corrigés, ce qui a également amélioré les temps de rendu.
- Optimisation des objets dynamiques : Les objets ajoutés au jeu (mobs/joueurs) sont désormais optimisés à la volée, réduisant la charge de travail du CPU lors des opérations de peaufinage sur eux.
- Améliorations du multithreading : Beaucoup d'entre vous le savent peut-être déjà, mais le jeu n'utilisait qu'un seul cœur de votre CPU. Un fait moins connu est que le principal goulet d'étranglement dans Dragonica est les appels de dessin. Pour y remédier, nous avons réécrit des parties du moteur pour permettre aux appels de dessin d'être envoyés depuis deux threads au lieu d'un seul. Cela a entraîné des améliorations de performance massives, avec une augmentation pouvant aller jusqu'à deux fois dans les zones comprenant des tâches de dessin lourdes, comme l'écran de connexion.
- Améliorations du temps de démarrage : En parlant de l'écran de connexion, le temps de démarrage, depuis le lancement du jeu jusqu'à l'entrée dans l'écran de connexion, a également été considérablement amélioré. Vous pouvez vous attendre à une réduction d'environ 10 secondes du temps de démarrage !
Malheureusement, nous ne pouvons pas divulguer beaucoup de détails sur le fonctionnement interne de ces optimisations, mais les améliorations ont été substantielles. Ces changements ont abouti à un jeu plus fluide et plus réactif, même sur les appareils qui rencontraient des difficultés auparavant.
Comparaison des performances
Passons maintenant aux résultats.
Dans cette comparaison, le terme « avant » se réfère à la dernière version du client de Re
en usage avant cette mise à jour, tandis que le terme « après » fait référence à la nouvelle version du client incluse dans cette mise à jour.
Les deux versions du jeu fonctionnent avec des fréquences d'images non limitées, en utilisant le preset « classique ». Dans la version « avant », le paramètre d'ombre est réglé sur « Faible », tandis que dans la version « après », le paramètre d'ombre est réglé sur « Désactivé ». Cette différence existe parce que la version « avant » n'avait pas l'option de désactiver les ombres, et la version plus récente n'a pas l'option de désactiver les ombres dynamiques. Mis à part ces différences, les deux versions sont identiques à tous les autres égards.
Pour une analyse complète, nous montrerons également les performances du jeu en utilisant le paramètre d'ombre « Élevé » dans le troisième onglet du tableau. Cela montre comment le jeu fonctionne malgré la charge supplémentaire, surtout puisque la nouvelle version ne supporte pas l'ombrage statique contrairement à la précédente.
Veuillez noter que le jeu fonctionne sur un CPU très puissant, qui est le principal goulet d'étranglement du jeu. Bien que vous ne puissiez pas atteindre les mêmes FPS, vous devriez observer un gain proportionnel similaire en FPS comme celui constaté lors de nos tests !
Zones / Paramètres | Nouveau client ombre Désactivé | Ancien client ombre statique FAIBLE | Nouveau client ombre dynamique ÉLEVÉE |
Écran de connexion | 1543 IPS | 711 IPS | 1261 IPS |
Écran de sélection de personnage | 406 IPS | 217 IPS | 406 IPS |
Libra | 541 IPS | 222 IPS | 374 IPS |
Port des Quatre Vents | 395 IPS | 192 IPS | 260 IPS |
Plaine de Windia | 1631 IPS | 790 IPS | 1055 IPS |
Village Fungoid | 530 IPS | 262 IPS | 360 IPS |
Vallée du Dragon | 912 IPS | 432 IPS | 704 IPS |
Salvalon | 509 IPS | 345 IPS | 473 IPS |
/!\ IPS Signifie Images par seconde /!\
En moyenne, avec le nouveau client et le paramètre d'ombre réglé sur « Désactivé », vous pouvez vous attendre à une augmentation de 103 % des FPS, doublant ainsi les FPS. Avec les paramètres d'ombre inchangés, vous pouvez tout de même vous attendre à une augmentation de 55 % des FPS. Cela signifie que vous obtenez désormais plus de FPS avec l'ombrage dynamique qu'auparavant avec uniquement l'ombrage statique, grâce aux optimisations significatives mises en œuvre !
De plus, notez que le nouveau client inclut des améliorations graphiques supplémentaires qui sont toujours activées, telles que le cel shading et l'éclairage dynamique sur les joueurs et les monstres. Tous les tests ont été effectués en utilisant le backend Vulkan, qui offre environ 30 % de performance en plus par rapport à DirectX9. Il devrait toujours être utilisé si supporté, mais si votre GPU ne prend pas en charge Vulkan, ne vous inquiétez pas, vous bénéficierez tout de même d'un boost de performance substantiel, quelle que soit l'API que vous utilisez !
Fenêtre d'informations sur l'utilisation du système
Pour aider les joueurs à comprendre quels paramètres consomment le plus de ressources, nous avons ajouté une petite fenêtre montrant quels composants de l'ordinateur sont utilisés pour chaque option. Veuillez noter que l'utilisation du CPU et du GPU est relative aux autres paramètres. Elle indique combien chaque paramètre utilise ce composant par rapport aux autres ressources.
Autrement dit, si la barre est à moitié pleine et que votre GPU fonctionne à 20 %, cela signifie que si la barre est entièrement remplie, votre GPU fonctionnera à 40 % de sa capacité. De même, si votre GPU fonctionne à 50 % lorsque la barre est seulement remplie à 15 %, cela signifie qu'avec la barre remplie à 30 %, vous serez limité par le GPU. C'est pourquoi vous pourriez être en mesure de faire fonctionner le jeu avec la barre GPU pleine à une résolution de 1024x768, mais ne pas pouvoir le faire avec la barre à 30 % à une résolution 4K, car la charge de travail est beaucoup plus élevée.
Enfin, l'indicateur de VRAM montre simplement combien de VRAM le jeu consomme avec les paramètres actuels.
Corrections de bugs
- Le scintillement de certains objets sur l'écran de connexion et l'écran de sélection de personnage a été corrigé. Bien que la cause exacte du problème soit inconnue, nous avons identifié que la réécriture d'une partie importante du moteur de jeu et le remplacement de certains codes incohérents ont résolu le problème. Nous espérons que cette correction résoudra également d'autres bugs étranges.
- Un bug où les jumeaux restaient figés en pose A si le joueur lançait un sort immédiatement après la désfusion a été corrigé. Les joueurs n'ont plus besoin d'attendre avant d'attaquer avec leur jumeau.
- Un bug où les Sorciers invoquaient plusieurs démons lors de l'utilisation de Magma Piston a été corrigé. Le problème où le sort était annulé a également été résolu. Nous sommes conscients que cette correction rend le sort moins efficace, donc il sera retravaillé ultérieurement si nous constatons que les Sorciers ne sont pas assez puissants.
- Un bug où les monstres se déplaçaient et attaquaient les joueurs alors qu'ils étaient allongés après avoir été projetés dans les airs a été corrigé.
- Le bug où maintenir X ne réalisait pas la chaîne de combo correcte pour les classes basées sur l'archer en ayant trop de vitesse d'attaque a été corrigé.
- Divers problèmes d'éclairage ont été résolus, tels que les visages des personnages étant assombris mais pas le reste de leur corps, les personnages apparaissant sombres sur l'écran de sélection de personnage, et des problèmes sur l'onglet des informations d'équipement utilisateur.
- Un bug où les cibles recevaient l'effet d'attaque deux fois (par exemple, être projetées deux fois plus haut que la normale) en mode Battlesquare a été corrigé.
- Divers problèmes de rendu sur les dispositifs Intel Iris Xe ont été résolus. Vous devrez activer l'option DX12 dans le patcher pour corriger ces problèmes. Notez que DX12 est uniquement recommandé pour les dispositifs graphiques Intel Iris Xe et ne devrait pas être utilisé autrement, car il offre des performances inférieures à celles de DX9.
Menu des paramètres dans le patcher, c'est ici que vous pouvez activer le mode DX12
Important: Ne utilisez pas ce mode à moins que vous n'utilisiez un appareil Intel Iris Xe rencontrant des problèmes graphiques !
Corrections des crashes
Nous avons également développé un bot qui joue automatiquement au jeu sur notre serveur de développement, imitant un joueur normal, mais à une vitesse de 20 à 30 fois plus rapide ! (Cela faisait souvent struggle le serveur et le faisait planter, ce qui était assez amusant.) Le but du bot est d’identifier et de corriger les crashes, en particulier ceux qui provoquent la fermeture du jeu sans permettre l’envoi d’un rapport de crash.
Pour traquer ces crashes, nous avons utilisé des outils spéciaux pour générer des rapports de crash détaillés. Ces rapports peuvent être très volumineux, dépassant souvent 1 Go, ce qui les rend impratiques pour les joueurs à envoyer. Avec ces bots, nous les avons laissés fonctionner en continu jusqu'à ce qu'un crash se produise, puis nous avons tenté une correction et relancé le test, en continuant ce processus jusqu'à ce que le jeu cesse de planter ou que le crash prenne beaucoup plus de temps à se produire.
Au départ, lorsque nous faisions fonctionner quatre de ces bots, l'un d'eux plantait en environ 20 minutes, généralement dans Red Fox Delta. Maintenant, ils sont suffisamment stables pour fonctionner plus de deux heures sans planter. Bien que nous ne puissions garantir que le jeu ne plantera plus ou que cela améliorera de manière significative votre expérience, nous nous attendons à ce que le jeu soit beaucoup plus stable dans l'ensemble, du moins c’est ce que nous avons constaté lors de nos tests.
Refonte du patcher
De nombreux joueurs ont rencontré des problèmes pour télécharger les nouveaux patchs. Nous étions conscients de ces problèmes depuis longtemps et avons décidé de commencer le développement d'un nouveau patcher.
Le serveur de patch était basé en Europe, ce qui causait des problèmes pour les utilisateurs asiatiques et nord-américains qui ne pouvaient pas accéder au serveur ou rencontraient des fichiers de patch corrompus après le téléchargement. Sans vérification des sommes de contrôle après le téléchargement, les utilisateurs pouvaient se retrouver avec des fichiers .dat corrompus après une mise à jour, et parfois même pire, corrompre tout leur fichier .dat.
Pour résoudre ce problème majeur, nous avons recherché des solutions, et la meilleure solution était de développer un nouveau format de fichier qui pourrait être facilement mis à jour et réparé. La première étape a été de trouver un moyen efficace de distribuer les patchs à l'échelle mondiale. La meilleure méthode était d'utiliser un Réseau de Distribution de Contenu (CDN), nous avons donc commencé notre recherche du meilleur CDN disponible et avons choisi Cloudflare.
Cloudflare dispose d'un vaste réseau de serveurs à travers le monde, permettant des téléchargements à grande vitesse si le serveur Cloudflare a mis en cache le fichier de patch.
La prochaine étape était d'améliorer la vitesse de mise à jour. Pour ce faire, le processus de mise à jour a été multithreadé, permettant de télécharger les fichiers et de les mettre en cache en mémoire jusqu'à ce que le thread d'écriture soit prêt à écrire les fichiers dans l'archive.
Bien sûr, l'autre objectif en plus de la mise à jour était la réparation. Nous avons développé une fonction de réparation capable de vérifier et de réparer les fichiers. La vitesse de réparation dépendra du nombre de fichiers nécessitant une réparation.
Au fil du temps et du développement, de nouvelles idées et concepts ont été intégrés dans le patcher :
- Un nouveau design de l'interface utilisateur facilement modifiable, éliminant la nécessité du CEF (Chromium Embedded Framework), qui était trop lourd pour son utilisation.
- Un remplacement plus portable pour le CEF.
- Remplacement du système des fichiers d'archive Dragonica Vanilla ( Depuis la création du jeux ) pour obtenir de meilleures performances que le format .dat actuel.
De plus, nous avons également développé des outils qui comparent automatiquement la version actuelle du jeu avec la nouvelle. Cela signifie qu'il n'est plus nécessaire de se souvenir de chaque modification apportée ou de sélectionner manuellement les fichiers pour créer un patch. Ce processus est désormais automatisé, ce qui signifie que nous n'aurons plus besoin de créer plusieurs petites mises à jour lorsque nous oublions un fichier ou deux, car cela ne se produira plus.
Le nouveau design du patcher
Pourquoi cela a-t-il pris autant de temps ?
Pour ceux qui voulaient simplement savoir ce que contenait ce patch, c'est à peu près tout. Cette section est dédiée à ceux qui ont constamment exprimé leur mécontentement sur la durée de développement du patch. Heureusement, certains ont été très compréhensifs et soutenants, et à vous, nous vous remercions beaucoup. Vos encouragements sont ce qui nous pousse à continuer à nous efforcer de vous offrir la meilleure expérience possible !
Problèmes de performance
Pour améliorer le rendu graphique du jeu, nous avons cherché à ajouter des ombres. Les ombres statiques sont excellentes, elles ne consomment pas beaucoup de ressources et ont un bon rendu, mais elles peuvent sembler étranges, surtout avec des objets en mouvement comme des moulins à vent. Nous avons donc cherché à faire mieux.
Au départ, nous avons fait en sorte que tout projette des ombres à chaque image. Cela s'est révélé être une très mauvaise idée, car les performances en ont souffert de manière significative, même les objets statiques devant rendre leurs ombres à chaque image.
Problèmes de qualité des ombres
La prochaine étape logique était de rendre les ombres à chaque image uniquement pour les objets animés tels que les moulins à vent, les arbres et les joueurs. Bien que cela semblait être une excellente idée, les résultats étaient loin d'être idéaux.
Comme le montre l'image ci-dessous, les ombres statiques se superposaient aux ombres dynamiques, les rendant beaucoup plus sombres. Cette superposition signifiait que chaque fois qu'une ombre dynamique intersectait une ombre statique, elle devenait plus sombre par rapport au reste, se démarquant et ayant un rendu plutôt mauvais.
Les problèmes de superposition sont visibles ici ; notez à quel point les ombres sous l'arbre sont sombres.
Pour résoudre ce problème, nous avons dû modifier la façon dont Gamebryo (le moteur de rendu de Dragonica) gérait les ombres afin d'obtenir l'aspect souhaité.
Plus facile à dire qu'à faire, n'est-ce pas ? Ce ne sont là qu'une petite partie des problèmes que nous avons rencontrés en cours de route.
Problèmes de performance (encore une fois)
Lorsque nous avons finalement réussi à le faire, cela a considérablement amélioré les performances, mais ce n'était toujours pas acceptable. Au lieu de réduire les performances par un facteur cinq par rapport aux ombres statiques, cela les rendait « seulement » 2 à 3 fois plus lentes selon la zone. Bien qu'il s'agisse d'une grande amélioration, ce n'était pas encore suffisant.
Nous avons alors décidé de supprimer les ombres et de n'ajouter des ombres qu'aux parties visibles. Cela semblait évident et avait été envisagé initialement. Cependant, Gamebryo n'est pas conçu pour cela. Changer les éléments qui projettent des ombres en cours de frame nécessite de régénérer toute la carte d'ombres, ce qui est extrêmement lent. Le jeu passait momentanément à 80 FPS pendant cette opération avant de revenir à 400 FPS, rendant cela pire que de rendre tout dès le départ, même les objets non visibles à la caméra.
À ce stade, nous avons envisagé d'abandonner entièrement le projet d'ombrage. Cependant, étant donné que nous avions déjà un mois de retard et que vous, les joueurs, attendiez des résultats, nous devions faire quelque chose. Nous avons donc décidé d'explorer plus en profondeur le moteur de jeu, en recherchant des parties où nous pouvions remplacer le vieux code non optimisé par de meilleures alternatives.
Les résultats initiaux étaient extrêmement prometteurs. Nous avons réussi à éviter la perte de performance en utilisant la même carte d'ombres au lieu de la régénérer, mais cette approche a causé des plantages fréquents.
Chaque pic que vous voyez ici représente une montée de lag.
Voici comment le jeu devrait fonctionner en dehors de ces pics de lag (281 FPS au lieu de 54 FPS).
Voici comment le jeu fonctionnait avec la première correction : une ligne très lisse indiquant l'absence de pics de lag.
Cela nous a prouvé qu'il y avait effectivement un moyen de faire fonctionner le jeu de manière fluide avec des ombres dynamiques, même si les cartes d'ombres changeaient à chaque frame. Nous avons continué à creuser, reconstruisant encore plus de parties du système d'ombrage dans Gamebryo. Finalement, nous avons obtenu un résultat presque identique (avec des FPS légèrement inférieurs par rapport à la version qui plantait) mais sans aucun problème de stabilité !
Problèmes de qualité des ombres ENCORE
Maintenant que les ombres sont suffisamment performantes et stables, cela devrait être terminé, n'est-ce pas ? N'EST-CE PAS ?
Non, loin de là en réalité. C'est à ce moment que la véritable douleur commence. Comme Dragonica n'a pas été conçu avec les ombres à l'esprit, les développeurs originaux pouvaient se contenter de faire les choses de manière paresseuse ou incorrecte, puisque cela ne serait pas visible de toute façon.
Tout d'abord, nous avons rencontré des problèmes avec certains monstres et PNJ ; ils affichaient des "auras" comme s'ils étaient des objets solides :
Heureusement, la plupart de ces problèmes ont pu être résolus avec une quantité significative de code. La bonne nouvelle est qu'ils ne nécessitaient pas de modification manuelle des modèles.
Malheureusement, il en va autrement pour le problème suivant. Il concernait de nombreux nouveaux costumes ajoutés au jeu. Lorsque des ombres étaient ajoutées à un joueur portant ces costumes, les ombres devenaient complètement chaotiques, comme le montrent les captures d'écran ci-dessous.
Ce problème est causé par le manque de soin de l'artiste qui a réalisé ces costumes. Plongeons en détail dans le fichier modèle du "Top d'Aphrodite (F)" pour identifier la source du problème.
À première vue, tout semble correct, mais ajoutons des couleurs à l'ensemble de la texture pour rendre toutes les parties du costume visibles...
Maintenant, avec les couleurs ajoutées, nous pouvons voir précisément ce qui se passe. Le jeu rend toutes les parties qui sont transparentes, même lorsque les ombres sont désactivées. Comme il n'y a pas d'ombres, cela n'est pas un problème (bien que cela utilise des ressources supplémentaires sans raison). Cependant, lorsque les ombres sont ajoutées, cela devient un problème significatif.
Pour résoudre ce problème, nous avons dû faire ce que l'artiste n'avait pas fait : découper correctement le fichier modèle pour éviter de gaspiller des ressources et faire en sorte que les ombres apparaissent comme prévu. Évidemment, cela est plus facile à dire qu'à faire ; cela peut prendre jusqu'à deux heures en fonction de la complexité du modèle. Maintenant, considérez qu'il y a plus de 300 modèles à traiter, pour les personnages Masculins, Féminins, Dragonkin Masculins et Dragonkin Féminins (car oui, bien sûr, pas seulement le top avait ce problème, chaque partie du costume était faite de cette manière), ce qui représente environ cinq semaines de travail rien que pour cette tâche.
Nous avons envisagé de retirer ces costumes, mais cela aurait été un énorme casse-tête d'expliquer aux joueurs pourquoi cela devait être fait. De plus, nous aurions dû fournir des compensations pour la perte des costumes. Nous avons donc rapidement réalisé qu'il n'y avait pas d'autre solution que de traiter chacun de ces costumes un par un.
Remarquez que certaines parties sont violettes, ce sont les zones qui n'ont pas été correctement découpées (elles ne sont pas visibles en jeu). Cependant, cela représente une amélioration considérable par rapport à la version originale. En plus d'améliorer considérablement l'apparence des ombres, cela présente l'avantage supplémentaire de réduire l'utilisation de la RAM (de 2,5 Mo à 170 Ko) et les ressources GPU (réduction d'environ 20 fois du nombre de polygones).
En plus de ces costumes, d'autres éléments du jeu avaient des problèmes concernant le rendu des ombres, bien que ces problèmes soient beaucoup moins graves.
De nombreux problèmes ont également dû être corrigés manuellement. D'après nos tests, tous devraient être résolus. Comme vous pouvez le deviner, cela a pris beaucoup de temps, nécessitant de parcourir chaque carte et de vérifier les ombres sur chaque objet animé.
Enfin, des erreurs de codage des développeurs ont également causé des problèmes avec les ombres. Au lieu de supprimer les objets, les développeurs les rendaient simplement cachés. Cela non seulement consommait des ressources, mais créait aussi des ombres pour des éléments qui ne devraient pas être visibles. Regardez cette capture d'écran et remarquez comment l'ombre du jumeau est apparente alors que son corps n'est pas visible.
Avez-vous remarqué comment les phares et le feu du moteur à réaction semblent étranges ? C'est également un autre problème lié à l'ombrage.
Pour être honnête, il y a beaucoup plus à dire sur les problèmes d'ombre, c'est seulement la partie émergée de l'iceberg. Notre objectif n'est pas d'expliquer exactement comment cela fonctionne ou comment l'implémenter. Cependant, nous avons décidé de fournir quelques détails pour expliquer pourquoi cela a pris autant de temps.
Problèmes de Cel Shading
N'oubliez pas que ce patch ne concernait pas seulement les ombres, mais aussi le cel shading et des optimisations significatives. En ce qui concerne les optimisations, il est difficile de montrer les problèmes rencontrés car les principaux problèmes étaient des plantages et de l'instabilité. La partie remarquable est que nous avons réussi à réaliser une optimisation supplémentaire de 20 % qui n'est pas incluse dans ce patch car elle pourrait entraîner des plantages de temps en temps (environ une fois toutes les 3-4 heures). Une fois que nous aurons réglé cela, nous l'ajouterons.
Quant au cel shading, les problèmes étaient tout aussi ennuyeux et douloureux que ceux rencontrés avec les ombres. Je vais montrer quelques captures d'écran des problèmes rencontrés sans entrer dans plus de détails, car cela rendrait ce document beaucoup trop long (si ce n’est pas déjà le cas).
Voici quelques-uns des problèmes que nous avons rencontrés. Pour que le cel shading soit réussi, nous avons dû travailler tout autant que pour les ombres. Il devait non seulement bien rendre dans des conditions « normales », mais aussi sous les ombres, diverses sources de lumière, à l’aube, en journée, au crépuscule et la nuit. Vous comprenez l’idée. Nous avons finalement créé un shader de cel shading pour chacune de ces situations afin d'obtenir le résultat final.
Derniers mots
Maintenant, si vous vous demandez encore pourquoi cela a pris autant de temps, même après toutes ces explications, permettez-moi de vous poser une question : Combien de jeux connaissez-vous qui ont ajouté un ombrage dynamique là où il n'y en avait pas auparavant et utilisent le moteur Gamebryo ? Combien de jeux avez-vous vus qui ont réussi à doubler leurs performances, et surtout, combien d'entre eux ont accompli tout cela si rapidement ?
Aucun. Officiellement, certains jeux Bethesda ont ajouté des ombres dynamiques via des mods (Fallout: New Vegas et Oblivion viennent à l'esprit), mais celles-ci sont soit effectuées en espace écran, soit horriblement inefficaces, fonctionnant à 20 FPS sur un RTX 4060 avec des cartes ombres 2048x2048. Avec la même résolution de carte d'ombre, vous pouvez facilement faire fonctionner le jeu au-dessus de 1000 FPS, à condition que votre CPU soit suffisamment rapide.
En ce qui concerne l'optimisation, nous savons que certains jeux ont atteint de meilleurs résultats (Sodium dans Minecraft vient à l'esprit), mais cela n'a pas été fait aussi rapidement.
Enfin, pour le cel shading, bien que sa construction ne soit pas particulièrement difficile (c'est juste un peu de mathématiques simples), le rendre esthétique est une autre paire de manches.
Tout cela a été accompli tout en créant un nouveau système de fichiers pour le jeu et un nouveau patcher pour rendre le téléchargement et la réparation du jeu plus rapides et plus faciles qu'auparavant.
Merci d'avoir lu, et restez à l'écoute pour le prochain patch, il arrive plus tôt que vous ne le pensez ! :^)
1 Commentaires
Merci, beau travaille