Non terminé, en cours
Date de création05/05/2012
Mise à jour : 22/05/2012
Version de purebasic : 4.60 et 4.61 béta2
Note (celle-ci sera enlevée lorsque le tutoriel sera complet ) :
- Je vais essayer de regrouper les informations concernant la création basique d'un jeu 3D en purebasic et Ogre.
- De plus, j'essaierai dans ce tutoriel d'aborder de manière assez détaillée la conception de fichier .material à utiliser sur les entity en 3D, avec Purebasic et Ogre.
- j'essaierai aussi d'ajouter si j'y parviens des informations sur la création de fichier pour shader (HLSL ou GLSL)
- enfin, j'ajouterai aussi des exemples de fichiers (lien sur le forum ou autre).
N'hésitez pas à corriger s'il y a des erreurs, à ajouter des remarques, des liens utiles, etc..

I.Introduction
La version 4.60 de Purebasic a apporté énormément de nouveautés très intéressantes pour la création de jeu 3D avec Purebasic et l'utilisation du moteur Ogre (en interne).
Purebasic offre la possibilité de concevoir des jeux et applications en 3D (et 2D aussi bien sûr).
Pour les jeux 3D, Purebasic permet d'utiliser le moteur Ogre en interne.
De très nombreuses commandes sont disponibles, dans bien des domaines : graphique, physique, effets...
1. Quel type de jeu 3D est-il possible de concevoir avec Purebasic et Ogre ?
A priorité, je serai tenté de dire que l'on devrait pouvoir concevoir facilement des jeux (ou au minimum des démos) de type :
- Action FPS : un excellent exemple est proposé parmi les exemples purebasic
- jeu d'aventure en point and clic : mixe décor 2D et personnage 3D avec caméra fixe (comme Syberia). C'est tout à fait faisable.
- jeu d'aventure exploration (comme myst en 3D ou en 2D)
- jeu de plateforme simple : la création de ce type de jeu est un peu plus complexe, car il nécessite beaucoup d'interaction physique entre le joueur et le décor (objet déplaçable, objet fixe et physique). Cependant, l'excellent exemple inclus avec Purebasic ThirdPersonn.pb vous permet de voir que c'est tout à fait possible.
- jeu de shoot (spacial ou autre) : il y a un exemple tank.pb, parmi les exemples Purebasic qui permet d'avoir une idée de ce que l'on peut déjà faire.
Il devrait être possible de concevoir des jeux de type, mais sans doute avec plus de travail :
- RTS : avec les nouvelles possibilités offertes par la 4.60 (les mousepick(), pickx(), etc..), la création de ce type de jeu est désormais accessible en purebasic.
- Aventure/RPG : Il s'agit sans doute de l'un des types de jeux les plus complexes car il requiert des connaissances dans de multiples domaines. Cependant, avec les connaissances nécessaires et beaucoup de travail, il est tout à fait envisageable de concevoir une démo de RPG 3D, et même un jeu complet, si vous avez la patience ou quelques années devant vous

- jeu en ligne : Purebasic propose la possibilité de créer un server et client de amnière très simple. Ainsi, la mise en ligne, bien que demandant des connaissances plus pointus (réseau, socket/udp/tcp, gestion des messsages entrant/sortant, etc..) est tout à fait réalisable. Purebasic propose un exemple de server / client simple, afin d'en comprendre les bases.
- jeu de sport/ course : ces jeux demandent des connaissances et possibilités en physique assez poussées. Il devrait être possible de concevoir un jeu (ou une démo) de ce type, mais cela demandera aussi certainement beaucoup de connaissances et de travail.
2. Et Ogre c'est quoi, c'est bien ?
S'il n'est nul besoin de présenter Purebasic sur ce forum, il peut être utile de dire quelques mots sur Ogre.
Ogre est un moteur graphique 3D gratuit et open-source, très puissant et performant, et qui permet de concevoir des jeux 3D modernes (utilisation de shaders, post-filters...) et professionnels.
Il a d'ailleurs été utilisé par des sociétés professionnelles qui ont conçus des jeux fort sympathiques avec.
Un des meilleurs exemples de jeux conçus avec Ogre est le jeu Torchlight.
CE jeu est disponible sur PC et Xbox. Il suffit d'y jouer pour se rendre compte de la qualité et des possibilités offertes par Ogre.
3. Il est possible de créer un jeu comme TorchLight avec Purebasic ? Sans dec ?
Avant de répondre à cette question, il faut analyser la conception d'un jeu 3D.
La création d'un jeu 3D s'étend sur de multiples domaines.
a) Les graphismes
Logiciel 2D (photoshop, Gimp, Mypaint..) ou dessin à la main scanné :
- création des designs 2D du jeu, recherches graphiques (décors, objets..) et model sheets
Ce qui suit s'opère en général dans un modeleur 3D (blender, 3Dsmax, lightwave..).
- création des modèles 3D
- création des textures et des materials (matériaux ou shaders).
- création des animations sur certains de ces modèles :personnages, ennemis, pnj..
Enfin, l'exportation des modèles et données dans le format de Ogre et purebasic :
- les objets 3D seront exportés directement en *.mesh ou en *.mesh.xml ou *.xml et convertis avec un utilitaire fourni sur le site d'Ogre : OgreXMLConverter.exe
- Les shaders/matériaux créés dans le modeleur 3D devront être exportés vers un format lisible par votre "moteur de jeu". Pour Ogre et purebasic : ce sera en *.material. Au bout d'un moment, lorsque vous aurez réalisé plusieurs *.material et si vous prenez le temps de les comprendre, vous parviendrez à concevoir directement en texte vos propres material. Sur le site d'ogre vous trouverez de la documentation sur la création des material http://www.ogre3d.org/docs/manual/manual_14.html
-Les animations devront être exportées dans le format lisible par votre moteur de jeu (ici *.skeleton)
Note :
blender (version 2.49 et 2.6x) dispose de scripts d'export tout à fait opérationnel et fort intéressant. Vous pourrez facilement exporter :
- vos modèles en *.mesh.xml puis les convertir en *.mesh grâce à OgreXMLConverter.exe
- vos animation en *.skeleton
- vos matériaux en *.material. Pour les les *.material, il faudra sans doute les retravailler et les modifier à la main (en txt avec notepadd++ par exemple), afin d'obtenir ce que vous souhaitez précisemment, car la conversion depuis blender n'est pas encore complètement opérationnelle.
Graphiquement, la création d'un jeu 3D professionnel ou non nécessite d'avoir des modèles 3D de qualité et dédiés au jeu vidéo : peu de faces, mise en place de shader, uvmapping et création des textures, placement du pivot( centre de l'objet), mise en place des squelettes et animations, exportation, etc...
Remarque:
Il faut qu'ils soient conçus à la bonne taille.
Par exemple : à l'exportation, il faut agrandir les modèles dans blender avant de les exporter (environ 3 fois), ou accepter un world assez petit.
La réalisation des textures est aussi une tâche importante (réaliste ou pas). Elle se fait soit dans le modeleur 3D directement (Blender) ou dans un logiciel 2D (photoshop, gimp..). Cependant, chaque texture doit être réalisée en adéquation avec l'uvmapping du modèle texturé.
Une charte graphique est en général définie avant de commencer :
- celle-ci contiendra les éléments décrivant le style graphique (cartoon, semi-réaliste, réslite, manga..), le type de rendu souhaité (réaliste, dessin animé, cell-shading..) et le type de traitement pour les textures (dessinées à la main, photo retouché, rendu de texture..)
Voici 2 exemples de jeux (RPG) au rendu à la fois proche et différent :
- SilverFall (non réalisé avec Ogre) : le rendu utilise des technique mixte : cell-shading sur les bords pour donner un coté BD au jeu, shaders réaliste (normal map, réflexion, reflet/lumière spéculaire..)
- Torchlight : texture et modèles sont conforme avec le Style défini par la direction Artistique. Les modèles sont cartoons, et les textures sont peintes à la main et utilisent peu de techniques /shaders (peu ou pas de normal map), mais une technique dite du "rim-light", un retour lumière pour donner un coté comics au rendu global, sur les personnages.
Concernant les graphismes, Purebasic et Ogre offre de très nombreuses possibilités quant à la création et l'utilisation des materials ainsi que l'utilisation de shaders : normal-map, speculaire, réflexion, ..
Cependant, cela nécessite encore quelques connaissances notamment en GLSL ou HLSL (voir plus bas).
b) le développement du jeu
Après avoir effectué une réflexion sur la pré-production (graphisme, scénario, écriture du cahier des charges et document de gamedesign (GDD), etc.., on peut commencer à réfléchir sur développement du jeu :
- réflexion sur les gameplays du jeu, mis en place et possibilités offertes en Purebasic et Ogre.
- réflexion sur les besoins : physique, moteur graphique (shaders, post-fx..),IA, etc
- mise en place des "moteurs" du jeu : graphique, physique, IA, GUI...
- codage du jeu et des modules
c) le développement des outils
Le développement d'outil dédié à la création d'un jeu est très intéressant, utile et même indispensable.
Il est donc nécessaire de mener une réflexion sur la nécessité de créer des outils ou d'en trouver :
- éditeur de map / scène / level
- éditeur de Shaders
- éditeur ou visualiseur de post-fx
- éditeur de particules : un éditeur de particules vous permet de concevoir et sauvegarder des systèmes de particules que vous avez conçus et que vous souhaitez utiliser dnas votre jeu.
- scène manager : permet de manger, ranger vos "assets", vos objets 3D
- models viewer : ce genre d'outil vous permet de visualiser facilement un modèle, ainsi que ses textures et les animations de ce modèle. Il existe un utilitaire pour ogre qui fait cela : Ogre Meshy (voir un peu plus bas) .
Editeur de level (Level Editor)
Il est tout à fait faisable et envisageable de concevoir un éditeur de level complet en purebasic et Ogre.
- Arkeos Level editor 3D (créé par Blendman) : http://www.purebasic.fr/french/viewtopi ... 13&t=12749
Cet éditeur en cours de création permet de créer vos levels de jeu. Il permet à l'aide de fonctions simples (transformations, position, ajout d'objets, suppression..) de concevoir un niveau de jeu
Lorsque celui-ci sera terminé, il devrait permettre d'ajouter des objets de "gameplay" comme par exemple : des télé-porteurs, des coffres, des portes, des NPC, des monstres, des objets bloquants, etc...
Editeur de Shaders/ material
- Material Editor (créé par Kelebrindae) : http://www.purebasic.fr/french/viewtopi ... 13&t=12819
Cet outil permet de concevoir vos propres material et shader, en mode texte. Il permet surtout de les visualiser rapidement, et d'oserver les modifications en temps réel.
- Il existe un éditeur de material fourni par la communauté d'Ogre. Celui-ci permet de concevoir des material, mais si vous voulez des fonctions avancées (normal map, réflexion, réfraction..), il faudra modifier votre material et connaitre les notions de GLSL et HLSL :
http://www.ogre3d.org/forums/viewtopic.php?f=11&t=48774
- Éditeur de texte avec coloration syntaxique dédié à la création de material :
http://veniogames.com/downloads/Yaose
Editeur de particule, Fx et autre..
Il existe plusieurs outils dédiés à cela. Ils utilisent les scripts de particules (particles scripts) :
- Ogre particule lab (free?) : http://roussel-geoffrey.blogspot.fr/201 ... -0999.html
- Particle Universe (not free) : http://www.fxpression.com/
Utilisé dans le les jeux professionnels comme Torchlight.
- Ogre Particle editor : http://www.game-cat.com/ogre/pe/docs/index.htm
http://www.ogre3d.org/tikiwiki/OGRE+Par ... ture=Tools
Viewer d'objet ou de mesh
- Ogre meshy permet de visulaiser des objets avec leur material et jouer les animations liés à ceux-ci : http://www.ogre3d.org/forums/viewtopic.php?f=11&t=59600
A la lumière de ces réflexions, on constate qu'un jeu ce n'est pas uniquement du développement. Ce sont aussi des graphismes 3D (et textures), du gameplay, de la réflexion sur les concepts et outils, du scénario, etc...
Concernant le code et développement du jeu ou des outils, cela est donc tout à fait faisable.
La conception d'un jeu 3D avec purebasic utilise un certain nombre d'éléments venant d'Ogre que je vais un peu détailler.