Bonne année !
Mon premier jeu 2D était un jeu de tank en C en vue du haut assez basique où il fallait éliminer des véhicules qui passaient sur une plage -_-’. J’ai fait pas mal de chemin depuis avec des api pour la 2D comme Slick, SFML, SDL ou encore Flixel. J’ai pondu pas mal de prototype de jeux 2D (Top down shooter, jeu d’arcade, Rts, jeu de plateforme, jeu de combat, etc.). Je pense être en mesure de réaliser n’importe quel jeu en 2D, la difficulté réside surtout dans le réseau et l’ia.
Bref, j’ai décidé d’attaquer la 3D en essayant de commencer le plus bas possible pour apprendre le plus possible. Je n’ai donc pas utiliser de moteur 3D existant et je me suis attaqué directement au couple C++/OpenGL.
Quand on commence à développer des jeux, il y a une chose à respecter au début: commencer petit
. C’est vrai pour la 2D et surtout pour la 3D. Le premier jeu n’est jamais un RTS ou un FPS complet quand on est seul à développer. Je n’avais jamais créer de Tétris, c’était donc l’occasion de le faire en 3D.
Je me suis inspiré de Blockout2 pour l’interface. J’ai découvert le jeu original à l’age de 7 ans sur le vieux macintosh de mes grand-parents, à l’époque je ne pensai qu’à jouer
Au bout d’une semaine de C++ avec Eclipse j’avais ma propre version de Blockout:

Tétris 3D avec OpenGL
Outre l’ordre des appels OpenGL dont il faut se méfier (OpenGL fonctionne comme une machine à état), une des grande difficulté pour un débutant en 3D (de mon point de vue) c’est l’ajout de mathématique (bon après chacun son niveau en maths
). Il faut donc maîtriser les objets mathématiques que sont les Vecteurs et les Matrices. Pour les translations et les rotations, le passage par ces objets est obligatoire.
Bon pour ceux qui pense qu’une matrice ca ressemble à ça:

- La cuillère n’existe pas…
Je les rassure tout de suite c’est beaucoup plus simple
, en fait c’est un tableau 2D, généralement de 4*4 pour la 3D. Pour effectuer des translations et des rotations on multiplie les positions de nos objets (vecteur) par les matrices correspondantes (source de l’image ici):

Les matrices utilisés en 3D
Enfin une autre difficulté quand on est habitué à un certain niveau, c’est de se réhabituer au fait de ne pas posséder tout les outils nécessaires sous la main. On a beau chercher des appels du genre glOuvreUneFenetreBordel ou glEcritDuTexte2DSTP, et bah non ca n’existe pas
. Soit on réécrit la roue, soit on fait appel à des api externes comme GLUT, SDL, SFML ou encore les api de son OS. Ce qui laisse évidemment une liberté totale dans l’implémentation de son programme.
Je ne sais pas trop quoi faire pour la suite, peut être une scène avec un décor sympa pour utiliser les shaders. Je ne pense même pas avoir vu 5% des possibilités de la 3D et d’OpenGL. La route est longue mais je suis motivé
.
Par ailleurs j’arrête le développement de Shonen Battle, si je continue le jeu pourrait vraiment devenir « complet et intéressant », hors je n’ai aucun droit sur les sprites utilisés.