Toujours dans l'optique de la création 3D ludique à travers PureBasic. Même si je sais que le nombre d'amateurs
potentiels est très limité (pour l'instant), voici un point complet sur ce projet naissant.
LES OBJECTIFS DE BASE:
--------------------------------
Le principal objectif de ce projet est donc au départ de pouvoir fournir une alternative crédible en matière de moteur 3D
à celui proposé par PureBasic dans son package initial, avec à la clé un certains nombres de spécifications de bases ayant
pour objectif globalement (si possible) les éléments suivant:
- moteur simple, complet et facile d'accès, s'inscrivant dans la même veine de ce qu'était Dreamotion3D sur le principe.
- projet opensource et gratuit,
- projet ayant une capacité multiplateforme.
- pas d'usine à gaz hyper gourmandes en ressource.
- moteur relativement complet, intégrant 3D, collisions et physique, GUI, etc..
CHOIX DU MOTEUR:
---------------------------
Ne voulant pas repartir de zéro (au vue du travaille que cela représente), j'ai donc cherché à m'appuyer sur un moteur déjà
existant, je suis donc partis en quête du moteur 3D type pour mener à bien ce projet.
Plus que la réalisation d'un simple wrap, il s'agit en fait de refaçonner le dit-moteur dans certains cas pour
le faire coller au mieux aux principaux objectifs visés. A la base donc, je me suis rapidement fixé un certains nombres
de contraintes pour arrêter un choix et ce, pour resserrer le cercle des moteurs existant:
1- moteur gratuit / OpenSource: désireux de coller au mieux au projet et à l'idée que je m'en fait, pouvoir rentrer et modifier
le code natif du moteur choisi est un argument très important. De plus, ce projet n'à aucune vocation vénale.
2- moteur multiplateforme: ne voulant laisser aucune plateforme sur le bord de la route, il est important de choisir un moteur
existant ayant cette capacité. Je ne tripatouille plus depuis longtemps avec Linux, et je n'ai jamais touché de ma vie à un Mac,
mais tous sera fait pour qu'une adaptation vers ces plateformes ne soit pas trop laborieuse.
3- moteur simple et pas trop lourd: il ne s'agit pas de se prendre la tête avec le code du moteur et son adaptation. Il faut donc un
moteur pas trop lourd, et dont le maniement interne ne relève pas d'un véritable calvaire. En final, une simple DLL ou lib, c'est
tout.
4- moteur ouvert, surtout niveau media: ce critère, non rédhibitoire ceci-dit, est aussi à prendre en compte. En d'autres termes,
les moteurs aux formats 3D propriétaires sont si possible à éviter.
5- moteur pas trop gourmand: dans la mesure du possible aussi, il est fortement souhaitable de s'appuyer sur un moteur pas trop
gourmand, et donc pouvant tourner sur des configurations modestes et pas forcement dernier cries. Donc pas de moteur soit disant
'nex-gen', nécessitant des conf de brutes pour tourner à peu près convenablement.
En ayant en tête toutes ces contraintes, j'ai testé et regardé de près tout ce qui pouvait se faire en terme de moteur 3D sur le
'marché' (sur les projets un tant soit peu sérieux et établis bien sûr).
J'ai donc passé en revue pendant plus d'une semaine, entre-autre: Ogre - Irrlicht - Hordes3D - OpenSceneGraph - CrystalSpace -
etc...
Mon choix c'est finalement arrêter sur Irrlicht. Explication (en reprenant la liste des pseudo-spécifications énumérées ci-dessus):
1-moteur gratuit et OpenSource: c'est le cas d'Irrlicht
2-moteur multiplateforme: ce moteur tourne très bien depuis déjà un bon moment sur toutes les plateformes, d'ailleurs la communauté
Irrlicht possède certainement l'une des plus impressionnantes part d'utilisateur 'non-Windows'.
3-moteur simple et pas trop lourd: une simple DLL, qui pèse moins de 2Mo, c'est l'un des plus léger de ceux testés (Ogre = 7 DLL et
60Mo de lib à lier) (Hordes3D, 3 DLL) (etc...).
4- moteur ouvert, surtout niveau media: Irrlicht n'a pas de format propriétaire. Il s'apuis sur des formats existant (3DS, B3D, X,
Collada, MD2, BSP, CSM, DeleD, Ogre, Maya, etc...), plus d'une dizaine en tout.
5- moteur pas trop gourmand: Irrlicht tourne plutôt bien sur toute les conf, même les moins récentes. De simples cartes intégrés
ne lui font pas peur..
Bref, ce choix d'Irrlicht c'est imposé finalement logiquement et naturellement. Certes, ce moteur a aussi ces défauts (le moteur parfait
n'existe pas, ou alors je ne le connait pas), comme un manque de performances certains dès que les scene s'alourdissent, quelques
fonctions non aussi poussées que certains de ces concurrents. Mais comme l'objectif n'est pas de réaliser un 'CryEngine2 like', il
devrait être assez aisé de s'accommoder des ces quelques lacunes. D'autant qu'au fil du temps il sera plus que largement possible de
combler ces lacunes par l'apport de codes 'maison', ce que j'ai déjà commencé à faire. C'est aussi l'un des 'plus' d'Irrlicht, sont fort
taux d'abstraction permet d'insérer nos codes personnels pour en améliorer les capacités, et ce de façon simple. Irrlicht lui même évolue
très vite, et dispose d'une bonne communauté, tout sera fait pour que les mise à jours soit facile et pas trop galère.
DUREE DE REALISATION:
---------------------
Pas vraiment de timing précis, comme souvent pour les projets amateur, mais je pense qu'avant la fin de l'été, cela devrait
commencer à avoir de la gueule.
De toute les façons, je mettrais à jour le package régulièrement, pour permettre de suivre et tester l'avancée du projet.
PACKAGE
-------------
Passons au choses plus concrètes. Voici un lien vers un premier package de test. Les fonctions sont encore très limitées (juste la
possibilité de créer et d'importer des mesh), soit environ 250 fonctions pour le moment, sur un total estimé de 1500 à 2000 à la base.
L'objectif principal de ce premier pack est de voir à quoi cela ressemble, de tester et de donner vos opinions et vos suggestions pour
ceux qui le souhaite.
version 20 (04-Fevrier-2010)
c'est ici->http://www.n3xt-d.org/_download/N3xtD_PBx86.zip
L'installation est simple, comme souvent, il suffit de copier les trois répertoires présent dans l'archive dans le répertoire de
PureBasic. C'est tout. Les exemples fournis sont là uniquement pour montrer l'emploi de certaines instructions très basic, et donc
ne sont en rien spectaculaire, donc pour le moment pas de screenshot qui dépotent
La doc est en Anglais (désolé), pour assurer d'emblée une capacité ouverte au projet, qui je l'espère dans l'avenir ne restera pas
cloisonné à la communauté francophone.
J'ai joint au package par contre un fichier CHM en Français (dans rep irrPBDoc), sous forme de tuto et reprenant certaines parties
d'un totu que j'avais écris il y a quelques temps. C'est à peaufiner et à pas mal améliorer. Cela explique les bases et permet
de bien débuter avec aussi un peu de théorie, même si cela manque encore de codes en guise d'exemples. C'est destiné aussi au vrai
débutants. Je tacherais de continuer à alimenter et améliorer ce fichier au fil de l'évolution du projet.
Le second lien, permet de télécharger le code source du moteur complet. ça c'est pour ceux qui voudront aller plus loin, ou par
simple curiosité. Et surtout si il y a un ou deux courageux pour voir comment faire une compilation avec Linux et Mac...
Pour le moment, pas de SVN, mais si le nombre d'amateurs désireux de s'impliquer au niveau du code source, ainsi que des
adaptations sur certaines plateforme est suffisant, alors cela s'imposera de lui même et cela sera fait...
version 20 (04-fevrier-2010)
c'est là->http://www.n3xt-d.org/_download/SourceEngine.zip
NOM
------
Tout projet se doit d'avoir un nom. Et n'étant pas vraiment quelqu'un de très créatif dans ce domaine, ce projet est toujours à la
recherche d'un nom. Pour le moment, j'ai nommé irrPB (c'est mieux que rien), mais je trouve ce nom trop lié à PureBasic.
En effet, même si ce travaille pour faire naitre quelque chose qui est d'abord et surtout destiné à PB, rien n'empêchera de l'utiliser avec
d'autre langages. Bien que ceci dit, irrPB, pourquoi pas quand même

Donc, si quelques-uns ont des idées, lachez-vous, un nom finira bien par sortir du lot

Vallholl, grand créateur et utilisateur assidu d'Irrlicht, m'a proposé quelques pistes, par exemple T.I.L.E (The Irrlicht Layered Engine).
Dobro, d'une façon plus généraliste, avec sortis NEXT (écris N3XTD).
CONCLUSIONS:
------------
Voilà pour cette présentation de base. J'espère ne pas avoir été trop long et barbant, ne pas être à coté de la plaque non plus,
et ne pas avoir fait fuir.
Je sais pertinemment que les amateurs de programmation3D ne sont pas légions dans le coin, je suis habitué, et cela ne m'a jamais
vraiment découragé, donc je poursuit malgré tout le cap.
Ceux qui voudront apporter leur petite pierre seront bien évidement les bienvenues...


