TechniqueMondeClient GodotGénération procédurale

Des maps plus légères, sans sacrifier leur identité

Valenya remplace les immenses fonds précalculés de 115 maps par des textures partagées et des cartes de contrôle compactes, sans modifier leur apparence ni le gameplay.

·7 min de lecture ·L'équipe de Valenya

Jusqu'à présent, le sol de chaque map de Valenya Online était enregistré sous la forme d'une grande image précalculée. Cette approche garantissait un rendu fidèle, mais elle avait un coût considérable : des centaines de mégaoctets de textures et plusieurs gigaoctets transférés à chaque nouvelle version du client.

Nous avons donc entièrement repensé la gestion des sols avec une technique appelée le splatting. Le principe est simple : au lieu de stocker une image complète pour chaque map, le jeu reconstruit désormais le terrain à partir de petites textures réutilisables et de cartes de contrôle compactes.

Une immense image pour chaque map

Une map principale de 64 × 64 cases utilisait auparavant un fond pouvant atteindre 4096 × 4096 pixels. Herbe, terre, routes, eau, relief et transitions entre les biomes étaient assemblés lors de la génération du monde, puis enregistrés dans une grande image WebP.

Visuellement, le résultat fonctionnait très bien. Techniquement, il présentait cependant un défaut majeur : une grande partie des mêmes textures était dupliquée dans chaque map.

Une parcelle d'herbe présente dans vingt régions différentes se retrouvait ainsi stockée vingt fois, directement intégrée à vingt images distinctes. Les fonds générés représentaient à eux seuls environ 879 Mo dans le cache d'import du client, soit près de 70 % du poids total du jeu à cet endroit du pipeline.

Avec les différentes versions distribuées — Linux, Windows, macOS et fichier de patch — ce contenu pouvait représenter près de 5 Go transférés à chaque build.

Le splatting, comment ça marche ?

Le splatting inverse cette logique.

Premier prototype du shader : fond WebP à gauche et visualisation des coordonnées UV à droite

Une des premières étapes de mise au point : à gauche, le fond WebP de référence ; à droite, le shader affiche ses coordonnées UV sous forme de dégradé pour vérifier que toute la map est couverte et orientée correctement.

Le client possède maintenant une bibliothèque de petites textures répétables : plusieurs types d'herbe, de terre, de roche, de sable, de neige, de sol humide ou encore de dallage. Ces matériaux sont partagés entre toutes les maps.

Chaque région ne stocke plus une image complète, mais de petites cartes de contrôle indiquant au moteur comment mélanger ces matériaux :

Le processeur graphique assemble ensuite ces éléments au moment de l'affichage. L'identité de chaque map ne vient donc plus d'une immense image dédiée, mais de la combinaison de matériaux mutualisés et de masques propres à la région.

C'est une technique courante dans les jeux proposant de vastes terrains. Elle permet de conserver une grande variété visuelle sans dupliquer inutilement les textures.

Le même monde, reconstruit autrement

L'objectif n'était pas de modifier l'apparence de Valenya. Il fallait retrouver le rendu existant avec une nouvelle méthode de composition.

Le générateur du monde continue donc de calculer les biomes, les chemins, les rives, les reliefs et les variations de lumière. Il exporte simplement le résultat sous une forme plus compacte. Le client n'invente rien et ne recalcule pas la logique procédurale : il applique les informations déjà préparées.

Cette approche nous a permis de préserver :

Les ombres de nuages restent, quant à elles, un effet dynamique affiché séparément par le client.

Comparaison du fond WebP et du rendu splat complet sur une map de prairie

La même zone après intégration des matériaux, de l'eau, de la route, du relief et de la lumière. Le fond WebP est à gauche, le rendu splat complet à droite.

Des gains particulièrement importants dans les donjons

Les donjons étaient parmi les maps les plus coûteuses. Certains fonds complets importés dépassaient 9 à 11 Mo.

Avec le splatting, les textures de grotte, de terrier, de crypte ou de château sont enregistrées une seule fois. Chaque étage ne conserve ensuite que ses cartes de contrôle et son descripteur.

Selon les séries de donjons, la réduction obtenue se situe généralement entre 89 % et 95 %. Sur la rangée complète des donjons 10200 à 10207, environ 80 Mo de fonds importés ont été remplacés par moins de 4 Mo de données et de matériaux mutualisés.

Les murs ne sont pas aplatis dans une nouvelle image géante. Le shader recompose leur volume à partir de masques compacts et réutilise directement les textures de parement déjà présentes dans le client.

Comparaison rapprochée des murs d'une crypte avant et après migration

Dans cette crypte, le fond historique est à gauche et sa reconstruction par le shader à droite. Les dalles, liserés, faces de murs et traces de mousse restent composés dans le même ordre.

Le monde extérieur en profite aussi

Le système a ensuite été étendu aux environnements extérieurs : prairies, forêts, marais, désert, toundra et lande.

Le premier lot a naturellement dû embarquer les bibliothèques de matériaux partagés. Malgré ce coût initial, il affichait déjà une réduction d'environ 73 %. Une fois ces matériaux présents dans le client, les maps suivantes ne coûtent principalement plus que leurs cartes de contrôle, soit généralement 150 à 240 ko par région.

Les 43 dernières maps extérieures migrées ont ainsi remplacé environ 220,5 Mo de fonds importés par 10,8 Mo de données splat et de nouveaux matériaux, soit un gain supérieur à 95 % sur ce lot.

Comparaison complète d'une région extérieure multibiome

Une région extérieure complète, avec la référence WebP à gauche et le rendu de production à droite : herbe, chemins, eau, relief rocheux et transitions de biome sont reconstruits à partir des mêmes matériaux partagés.

Une migration progressive et sécurisée

Toutes les maps ne basculent pas automatiquement.

Chaque région est comparée à son ancien rendu avant validation. Lorsqu'un descripteur splat complet est présent, le client l'utilise et l'ancien grand fond WebP est retiré du build. Dans le cas contraire, la map conserve son rendu historique.

Cette stratégie permet de migrer progressivement le monde sans imposer de changement visuel aux cartes particulières ou anciennes. Quinze cellules de la grille principale restent par exemple volontairement en WebP : certaines possèdent des transitions entre plusieurs familles de biomes, tandis que d'autres ne correspondent plus exactement à la configuration actuelle du générateur.

Elles seront traitées individuellement plutôt que d'accepter une différence visible.

115 maps déjà converties

À l'heure actuelle, la production splat couvre :

Cela représente 115 maps déjà converties.

La carte locale accessible avec M, la vue générale du monde et les miniatures utilisent elles aussi le nouveau rendu. Une map dont le fond WebP a été supprimé reste donc correctement visible dans toutes les interfaces du jeu.

Qu'est-ce que cela change pour les joueurs ?

En jeu, presque rien — et c'est précisément le but.

Les collisions, les déplacements, les portails et les données envoyées par le serveur restent identiques. Le changement concerne uniquement la manière dont le client affiche le sol.

En coulisses, les bénéfices sont considérables : un client plus compact, moins de données dupliquées, des builds plus légers et une base beaucoup plus adaptée à l'agrandissement futur du monde.

Le splatting nous permet ainsi de continuer à enrichir Valenya sans que chaque nouvelle région ajoute plusieurs mégaoctets d'images presque identiques. Le monde conserve son aspect peint et organique, mais repose désormais sur une technologie bien plus durable.