Bonjour,
Présentation
Je m’appelle Jérôme et j’ai 21 ans à l’heure où j’écris ces lignes (il paraît que ça change chaque année).
Plongé dans la programmation avant même mon adolescence, elle est devenue une partie importante de ma vie et avec le temps j’ai sympathisé avec le C++, qui est devenu mon langage de prédilection dans la réalisation des jeux vidéos (une autre de mes passions).
Mais ça tout le monde s’en fout.
Je suis (J’étais?) un grand habitué de feu site du zéro (inscrit en 2005), site avec lequel j’ai commencé à perdre contact il y a deux ans pour des raisons bien connues (que je qualifierais de "grande trahison"), je visite également régulièrement developpez.com et progdupeu.pl, bien que ma participation soit moindre.
J’ai connu ce site via un ami, et je me suis dit que je pourrais y retrouver les valeurs perdues sur le site du zéro, sans oublier la communauté dont une bonne partie a migré ici.
C’est donc tout naturellement que je me suis dit que j’allais présenter mon projet sur ce site (tout en espérant apporter un plus à la communauté).
Mon projet
Il s’agit donc d’une bibliothèque écrite (et pour l’instant utilisable uniquement) en C++11, divisée en plusieurs modules servant différents usages.
Voici donc la liste des différents modules présents dans le moteur:
- Le noyau (Offrant des outils génériques pour gérer des chaînes de caractères, des fichiers, des dossiers, l’Unicode, etc…)
- Le module utilitaire (Extension du noyau ainsi que gestion du fenêtrage)
- Le module physique (Intégration d’un moteur physique)
- Le module de scripting (Intégration d’un langage de scripting, le Lua)
- Le module de rendu (Intégration d’OpenGL)
- Le module graphique (Rendu 2D/3D via plusieurs techniques comme le Deferred Shading)
- Le module audio (Intégration d’OpenAL)
- Le module de bruits mathématiques (Développé par OveRdrivR, extension de la bibliothèque mathématique du noyau pour gérer les bruits)
Bien que l’intérêt principal du moteur est de faire un jeu vidéo 3D, il est tout à fait possible de s’en servir dans d’autres domaines, par exemple le noyau peut être utilisé pour fournir des outils utiles en complémentarité avec n’importe quelle autre bibliothèque.
Le moteur (ainsi que tous les modules qui le composent) est libre et sous une licence très permissive (MIT), il est à vocation portable (le code spécifique à chaque plateforme est séparé du reste, mais seule l’implémentation Windows est complète car je n’ai pas d’expérience suffisante du monde Linux et encore moins d’OS X).
À noter aussi que le moteur étant libre et modulaires, n’importe quelle personne est susceptible de me soumettre un module à rajouter dans la branche principale (Cela a déjà été fait par plusieurs personnes).
Les objectifs de Nazara sont:
- De faciliter la vie des développeurs.
- D’être un moteur complet et performant.
- D’être facile à prendre en main et de ne pas être une boite noire.
Je m’explique sur ce dernier point: Beaucoup de développeurs (dont je fais partie) n’aiment pas utiliser de bibliothèque sans comprendre les mécanismes en jeu derrière, je ne parle pas ici des détails mais du fonctionnement global (Par exemple simplement savoir que le Bloom extrait les pixels les plus lumineux pour les flouter avant de les appliquer à l’image est suffisant).
Nazara a été conçu dans l’optique d’être facile à comprendre, j’espère simplement avoir atteint mon objectif.
Ironiquement, le moteur est actuellement en alpha-test et donc il n’y a pour l’instant pas de versioning, pas de garantie que l’interface ne sera pas cassée lors d’une mise à jour (même si ça devient rare) et le plus embêtant: Pas de documentation ni de tutoriel.
Tout ceci devrait changer lors du passage en beta, qui est l’un des objectifs à court-terme que j’ai actuellement.
Néanmoins, le moteur est déjà capables de gérer des techniques avancées, telles que l’éclairage dynamique, le skinning (Multi-CPU, GPU à venir), les particules (WIP), le Deferred Shading (et des effets comme le Bloom).
À terme, il est prévu qu’un SDK, un framework unifiant les modules et fournissant des logiciels pour aider à la conception d’un jeu vidéo, soit développé et sera totalement dédié à la création de jeu vidéo (Là où le moteur en lui-même fait abstraction de l’objectif).
J’ai commencé l’écriture d’un tutoriel pour utiliser le moteur sur progdupeu.pl, et j’ai dans l’idée de le rendre accessible également sur ce site pour rendre le moteur accessible à un maximum de monde
Si le projet vous intéresse, un commentaire (quel qu’il soit) sera le bienvenu.
Avant de vous laisser, voici ce qu’il est possible de faire avec le moteur (à noter que c’est par ordre chronologique): Précision supplémentaire: les modèles et textures utilisés n’ont aucun lien avec le moteur et viennent de différents coins d’Internet
Screenshots
Vidéos
Démo technique
La démo House (vidéo) est également disponible au téléchargement pour que vous puissiez tester vous-même
Attention que pour lancer la démo, vous devez avoir une carte graphique un minimum récente (La démo montre notamment le Deferred Shading et ne démarrera pas si votre ordinateur ne le supporte pas).
Les contrôles sont calqués sur ceux que j’utilise dans Half-Life 2, à savoir:
- ZQSD (ou flèches du clavier) : Déplacement
- Maj : Courir
- Ctrl: S’accroupir
- F : Lampe torche
- Souris : Orienter la caméra
Pour les bricoleurs:
-
F5: Activer/désactiver le FXAA
-
F6: Activer/désactiver le Bloom
-
F7: Activer/désactiver le brouillard
-
Numpad ".": Afficher les primitives d’éclairage
-
Numpad "0": Afficher les textures de travail
-
Numpad "1": Mode G-Buffer
-
Numpad "2": Mode Bloom
-
Numpad "4": Mode skin de la voiture
Utilisez les touches +/- du numpad pour changer les paramètres, selon le mode en cours
Téléchargement
Version 0.1.0 - Précompilés Windows
Voilà, si vous avez des questions n’hésitez pas
(Quant à moi je file améliorer le rendu des particules !)
Bonne journée et merci d’avoir lu.