Je profite de cette nouvelle année pour vous parler d’un projet sur lequel je travail depuis un moment déjà et qui commence de devenir intéressent à présenter : Yna Game Framework ! C’est une bibliothèque fonctionnant avec XNA ou MonoGame (au choix) faite pour créer des jeux en 2D et en 3D facilement. Vous pouvez trouver une petite présentation sous forme de question/réponse pour en apprendre plus.
Aujourd’hui marque donc la sortie de la version 0.4 soit une semaine après la sortie de la version 0.3 ! Pourquoi une nouvelle sortie si rapidement ? Et bien c’est pour marquer la nouvelle année les amis :D, mais c’est aussi parce que cette version apporte un tas de changements par rapport à la précédente. Le module 2D n’a presque pas bougé donc je ne reviendrais pas dessus, par contre la partie 3D a vraiment évolué !
Le nouveau système de Material
Nous avons désormais un système de « matière » (En anglais on parle de Material, la traduction Française n’est pas aisée) pour les objets 3D. On peut voir la matière comme l’habillage de la forme géométrique que vous affichez à l’écran. Vous pouvez utiliser les materials suivant :
- BasicMaterial (qui utilise le BasicEffect)
- EnvironmentMapMaterial (qui utilise le EnvirnomentMapEffect)
- DualTextureMaterial (qui utilise le DualTextureEffect)
- NormalMapMaterial (qui utilise un shader personnalisé qu’il faut inclure dans votre dossier de contenu)
Avec ce nouveau système il est très facile de créer ses propres material reposant sur des shaders personnalisés ou alors d’utiliser les effets de base et de les paramétrer à votre convenance. Ajouter du brouillard sur des objets est d’une simplicité déconcertante ! Mais ça ne s’arrête pas là, l’équipe qui travail sur MonoGame a créé 2MGFX qui est un outils en ligne de commande pour convertir les shaders créés avec XNA (les fichiers d’effet .fx) en shader compatibles MonoGame. Typiquement un shader sera converti dans un bytecode proche du GLSL ou du HLSL (PS/VS 4.1). J’en ai profité pour écrire un utilitaire graphique utilisant 2MGFX et permettant de convertir avec un simple glisser/déposer vos fichiers d’effet !
2MGFX Gui Converter
Le programme est relativement basique et sobre et si ça vous intéresse vous trouverez les sources sur ma page github. Sur le côté vous pouvez choisir le type de shader de sortie, OpenGL pour les versions de MonoGame qui utilise cette API ou DirectX pour les versions de MonoGame utilisant DirectX. Si vous faites un jeu pour Windows 8 et Linux il vous faudra des formats de shader différent, la case « Use prefix » vous permettra d’ajouter automatiquement un préfixe au nom du shader généré (par exemple monShader.dx11.mgfxo et monShader.ogl.mgfxo).
Encore un peu plus de génération procédurale
L’implémentation des primitives de base a commencé et vous pouvez créer des planes, des cubes et des icospheres ! Je remercie d’ailleurs Alex qui a implémenté l’icosphère car ce n’était clairement pas de la tarte 😛 .
En utilisant un des material citée plus haut, il est donc facile de créer un cube texturé avec un effet de reflet en utilisant l’EnvironmentMapMaterial qui va demander 2 textures, celle du cube et la texture à refléter, je vous laisse regarder les exemples et essayer par vous même car c’est d’une simplicité enfantine.
Prochaine version dans 3 jours ?
Héhé non, la prochaine version arrivera peut être en fin de mois si tout ce passe bien. Il reste un gros travail à faire désormais sur le graphe de scène et l’éclairage. Il y a aussi tout un tas d’autres trucs à tester pour sortir une version 0.5 encore meilleur ! Je tiens aussi à vous annoncer que je participerais à la conférence « Passion sans limite » organisée par l’association Game Dev Party le jeudi 10 janvier à Lyon à 19h30 à la maison du livre, de l’image et du son à Villeurbanne, donc si vous êtes dans le coin n’hésitez pas à venir nous voir, Alex présentera Alone in Space et moi le Framework Yna.
Enfin si vous voulez voir les dernières avancées vous pouvez nous suivre, Alex et moi sur Google+ ou consulter régulièrement les changements sur le dépôt git du projet (pensez bien à switcher entre les différentes branches).
Téléchargement
Vous pouvez télécharger une archive qui contient toutes les versions de YNA compilée pour les différentes architectures disponibles (disponible ne veux pas dire officiellement supporté). Il y a aussi des exemples compilés pour Windows et Linux, n’oubliez pas d’installer OpenAL 😉