Nivalis est un simulateur de vie cyberpunk qui se distingue par sa direction artistique basée sur les voxels, le néon et une pluie persistante. Développé sur une version profondément modifiée d'Unity, le jeu utilise MagicaVoxel pour la modélisation des décors et des outils internes pour gérer le ray tracing en temps réel. Cette approche permet une esthétique low-poly mais avec un éclairage photoréaliste, un défi technique que peu d'indies parviennent à équilibrer sans sacrifier les performances.
Optimisation du Ray Tracing dans les Scènes Voxel avec Unity Modifié 🌧️
L'équipe de Nivalis a modifié le pipeline de rendu d'Unity pour traiter chaque voxel comme une unité de données légère, ce qui réduit la charge sur le ray tracing. Au lieu d'utiliser une géométrie polygonale dense, les bâtiments et les objets sont construits avec des blocs de MagicaVoxel, qui sont convertis en structures de collision hiérarchiques en temps réel. Pour la pluie et les reflets de néon, un système de ray tracing hybride a été implémenté : les reflets spéculaires sont calculés avec des rayons limités aux surfaces voxel, tandis que l'illumination globale est partiellement cuite dans des textures lumineuses. Cela permet au ray tracing de fonctionner sur du matériel de milieu de gamme, une leçon clé pour les indies : simplifier la géométrie de base pour que le ray tracing ne fasse pas chuter le framerate.
Leçons pour les Développeurs Indies : Les Outils Internes comme Facteur de Différenciation 🛠️
Nivalis démontre que le succès visuel ne dépend pas uniquement d'actifs coûteux, mais de l'intégration d'outils personnalisés dans le flux de travail. Le studio a créé des scripts dans Unity qui interprètent directement les fichiers de MagicaVoxel, permettant d'itérer sur la ville sans passer par un processus d'exportation traditionnel. De plus, ils ont développé un système de particules volumétriques pour la pluie qui interagit avec le ray tracing, évitant l'utilisation d'actifs génériques. Pour tout développeur indie, la clé est d'investir du temps dans la personnalisation du moteur avant de commencer à peupler la scène ; cela garantit que chaque élément, d'une enseigne au néon à une flaque d'eau, réponde de manière cohérente à la lumière.
En tant que développeur, quel a été le plus grand défi technique lors de l'intégration du ray tracing avec un moteur de voxels en temps réel pour obtenir l'éclairage dynamique de Nivalis sans sacrifier les performances.
(PS : les game jams, c'est comme les mariages : tout le monde est heureux, personne ne dort et tu finis par pleurer)