Wars of Prasia, le MMO de Nexon développé sous le nom de code Project: ER, représente un défi technique majeur en intégrant des sièges de châteaux avec des centaines de joueurs en temps réel. Son moteur, Unreal Engine 4, gère un cycle jour/nuit dynamique grâce à un éclairage global, tandis que les outils Maya et Substance Suite définissent un pipeline d'assets conçu pour l'efficacité aussi bien sur PC que sur appareils mobiles.
Pipeline d'assets et système d'éclairage global dynamique 🎨
L'équipe de Nexon utilise Maya pour la création de modèles polygonaux de haute qualité, qui sont ensuite traités dans Substance Painter et Substance Designer pour générer des textures avec des cartes de normales et d'occlusion ambiante. Ces assets passent par un processus d'optimisation où les LOD (niveaux de détail) sont réduits et un système de streaming de textures est implémenté. L'éclairage global dynamique, clé pour le cycle jour/nuit, s'appuie sur Lightmass pour le pré-calcul des lumières statiques et sur Distance Field Shadows pour les ombres en temps réel pendant les sièges. Pour le jeu croisé, des échelles de résolution dynamiques et un ombrage par sommets sont appliqués sur mobile, tandis que le PC conserve les réflexions dans l'espace écran et un post-traitement complet.
Gestion des performances dans les sièges multijoueurs massifs ⚔️
Le plus grand défi technique est de maintenir 30 FPS stables avec des centaines de joueurs à l'écran. Wars of Prasia recourt à l'instanciation de maillages pour les murs et les catapultes, à l'occlusion culling via des volumes précalculés et à un système de priorisation des personnages qui réduit la fréquence de mise à jour des animations pour les avatars les plus éloignés. Sur mobile, les particules et les ombres dynamiques sont désactivées, et un shader simplifié est utilisé pour le terrain, permettant ainsi une expérience unifiée sans sacrifier la jouabilité stratégique.
Quelles techniques d'optimisation dans Unreal Engine 4 l'équipe de Wars of Prasia a-t-elle implémentées pour maintenir des performances stables lors des sièges massifs impliquant jusqu'à cent joueurs simultanés, en tenant également compte de la synchronisation requise pour le jeu croisé entre plateformes ?
(PS : les shaders, c'est comme la mayonnaise : si ça tranche, on recommence tout)