Voxy, ou zCraft fait en 1 semaine
Fin novembre, je ne sais plus trop pourquoi, j’ai décidé de reprendre mes travaux sur le rendu voxel. Derrière ce mot barbare se cache l’idée de représenter un monde virtuel avec une grille 3D, un peu comme dans Minecraft. J’ai successivement réalisé des prototypes sous le nom de zCraft avec Irrlicht, puis directement avec OpenGL en C++.
Puis c’est au tour de Unity3D, un moteur de jeu très en vogue actuellement, que j’utilise énormément depuis 1 an et demi. J’ai créé un nouveau projet surnommé Voxy, et ai commencé à programmer un système d’affichage à la Minecraft : cubes, map infinie, édition, toussa toussa…
En une semaine, j’avais fait la même chose que zCraft… alors que ce dernier m’a pris facilement un mois :O
Bon ok, j’utilisais C++ avec des bouts de bois et un silex (un beau silex), alors que Unity3D est un moteur relativement très avancé. Mais la tâche n’en a été que facilitée, le résultat est quasi-identique.
A une chose près : Voxy peut fonctionner dans un navigateur ! Et il a des belles ombres dynamiques 🙂
Vous pouvez essayer le prototype en cliquant sur ce lien, have fun !
PS: je réalise que c’est mon premier article sur le développement technique d’un jeu vidéo… mais en français. J’ai l’habitude de l’anglais dans ce domaine, et je pense que d’ici peu le site possédera un choix de langue anglais/français. Big and messy WordPress update to come !
Bravo, beau travail, et c’est avec plaisir que je lirai des articles plus techniques (qu’ils soient français ou anglais). S’il est tellement efficace, je comprends que Unity soit si en vogue auprès des indépendants. Niveau optimisation, ça vaut quoi? Ca m’a souvent paru moyen mais ça doit dépendre essentiellement du dev derrière tout ça, j’imagine. Mais j’me rends compte que, et pas spécialement dans le monde du jeu vidéo que je ne connais guère, avec l’avènements d’outils plus puissants (hardware ou software, les programmes et langages me semblant de plus en plus souples), on code globalement de moins en moins proprement. J’ai parfois l’impression que l’optimisation passe carrément à la trappe… Mais je me fais peut-être des idées?
Quoiqu’il en soit, merci et bonne suite 😉
A mon avis, Unity3D n’est pas le meilleur moteur d’un point de vue complexité de rendu graphique, quand on le compare à CryEngine ou les dernières versions de UDK par exemple. Cependant, j’aime beaucoup son éditeur, sa capacité à pouvoir jouer une scène sans le relancer, visualiser et éditer le jeu en temps réel, la possibilité d’exporter sur énormément de plate-formes même en version gratuite… et les langages de programmation (dont C#) sont relativement bien choisis (bien que d’un point de vue « scripting » pur, on fait mieux).
Pour la propreté du code… il ne faut pas confondre « propreté » et « efficacité ». On peut avoir un code très propre et maintenable sans qu’il soit forcément optimisé. A l’inverse, on peut avoir un code ignoble à comprendre mais très performant. Tout dépend du but et de la personne qui l’écrit, programmeur ou game designer. Un script n’a pas besoin d’être ultra performant par rapport à un algorithme exécuté dans le moteur de jeu. Cependant, Unity3D a choisi C# comme un de ses langages de scripting… c’est un bon choix dans le sens où c’est un langage très répandu et puissant, mais pour du scripting il est encore trop verbeux. Utiliser du Python ou du Lua aurait été plus judicieux (on écrit moins pour faire plus). Mais l’avantage selon moi, c’est de pouvoir écrire une couche intermédiaire, entre le moteur et les scripts. L’algorithme de génération de Voxy ne serait pas aussi rapide si il avait été fait en Python. Mais si je devais ajouter une couche gameplay par dessus mon outil voxel, le code à écrire serait sensiblement différent, car valable uniquement pour mon jeu (et donc pas réutilisable).
En règle générale, quel que soit l’outil, je pense que si ça nous permet de finir un jeu, il ne faut pas s’éterniser sur des questions de « quel est le meilleur ». C’est toujours intéressant de découvrir des nouveautés, mais quand on a un truc qui marche pas trop mal, on sait s’en servir, alors just do it 🙂