N3XTD, Un moteur 3D pour PureBasic.
Depuis déjà bien des années, je cherche à faire bouger un peu la 3D à travers PureBasic. N3XTD est né de cette intention,
dans l'optique de favoriser la création 3D ludique à travers PureBasic.
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 suivants:
- 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 travail que cela représente), j'ai donc cherché à m'appuyer sur un moteur déjà
existant, je suis donc parti 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 existants:
1- moteur gratuit / OpenSource: désireux de coller au mieux au projet et à l'idée que je m'en fais, pouvoir rentrer et modifier
le code natif du moteur choisi est un argument très important. De plus, ce projet n'a 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é.
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. 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 forcément dernier cri. 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 durant quelques temps, entre-autre: Ogre - Irrlicht - Hordes3D - OpenSceneGraph - CrystalSpace - etc...
Mon choix c'est finalement arrêté 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'appuie sur des formats existants (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 toutes les conf, même les moins récentes. De simples cartes intégrées
ne lui font pas peur..
Bref, ce choix d'Irrlicht s'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 connais pas), comme un manque de performances certain dès que les scènes s'alourdissent, quelques
fonctions non aussi poussées que certains de ses concurrents. Mais comme l'objectif n'est pas de réaliser un 'CryEngine2 like', il
devrait être assez aisé de s'accommoder de 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, son 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 à jour soient faciles et pas trop galère.
PACKAGE
-------------
Passons aux choses plus concrètes. Voici les liens permettant l'accès aux packages. Tout n'est pas encore implémenté, et pas mal de choses
sont encore à compléter ou corriger, mais cela représente déjà quelques 900 fonctions, couvrant un ensemble de domaine très raisonnable.
version 20 (05-fevrier-2010)
c'est ici->http://www.n3xt-d.org/_download/n3xtd.zip
INSTALLATION:
---------------------------
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 (une cinquantaine) sont surtout là pour montrer l'emploi des fonctions et autres instructions,
ils sont très basic, et ne sont en rien spectaculaire.
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 tutoriel et reprenant certaines parties
d'un tutoriel que j'avais écrit 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 aux vrais
débutants. Je tacherai de continuer à alimenter et améliorer ce fichier au fil de l'évolution du projet.
CODE SOURCE:
---------------------------
Un 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é. Il permettra aussi aux 'non Windows' de pouvoir installer et faire tourner N3XTD sur d'autres plateformes.
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 plateformes est suffisant, alors cela s'imposera de lui même et cela sera fait...
version 20 (05-Fevrier-2010)
c'est là->http://www.n3xt-d.org/_download/SourceEngine.zip
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 garde malgré tout le cap.
Ceux qui voudront apporter leur petite pierre seront bien évidement les bienvenues...
N3XTD - un moteur 3D dédié à PureBasic
N3XTD - un moteur 3D dédié à PureBasic
Le , par tmyke
Une erreur dans cette actualité ? Signalez-nous-la !