| Q&A |
XITH3D,
Amos Wenger, Equipe de Xith3D
Feb . 2007 |
| |
 |
"Tous
types de jeux peuvent être réalisés
avec Xith3D ! Il est très facile, de par la nature
orientée objet de Xith3D, de travailler sur des
jeux réseaux ou des jeux de simulations (qui
demandent une simulation physique lourde). Au niveau
des applets, la technologie JOGLAppletLauncher permet
d'avoir des applets (intégrée à
une page web) avec l'accélération 3D intégrée.
C'est un des domaines où Java a les moyens de
battre le Flash..."
<
Xith3D en action |
|
| |
|
| Q1 |
Quelles
sont les raison qui vous ont poussées à contribuer
au projet Xith3D ? |
| A1 |
J'ai
toujours été intéressé par le développement
de jeux vidéos. Après avoir testé différents
"game maker" 2D sous Windows, je me suis mis au C++/OpenGL.
Mais je n'étais pas satisfait par le langage... Puis
j'ai découvert Java. Repartir en OpenGL pur (JOGL/LWJGL)
ne me disait pas trop, j'ai demandé conseils à
un développeur d'Oddlabs
(les créateurs de "Tribal Trouble" et de la
librairie LWJGL), qui m'a conseillé de considérer
des alternatives viables comme jME (Java Monkey Engine) et Xith3D.
Après avoir testé jME, je n'étais pas convaincu,
j'ai donc fait un essai avec Xith3D. J'ai tout de suite aimé
la librairie et depuis je ne l'ai plus quitté !
Après, pourquoi n'être pas resté simple
utilisateur ? C'est le propre des projets open-source, il s'agit
souvent d'une sorte d'échange, on reçoit énormément
(dans ce cas, un moteur de jeu 3D de qualité professionnelle)
et on donne un peu (corrections de bugs, ajout de fonctionnalités,
support technique). Comme je l'ai mentionné, j'aime l'architecture
de Xith3D et j'avais quelques idées pour les fonctionnalités
de haut niveau (en gros, faciliter le plus possible la vie du
développeur moyen, et permettre le développement
rapide, par ex. pour le prototypage), j'ai donc commencé
à participer. |
| |
|
| Q2 |
Comment
se déroule le développement d'un projet Open Source,
comment sont partagés les rôles ? |
| A2 |
Pour
ce qui est de Xith3D, la majorité du développement
se règle sur le forum public disponible sur notre site
web : http://www.xith.org/ et quand une collaboration plus étroite
est nécessaire entre les développeurs, nous communiquons
par messagerie instantanée (Jabber).
Le développement est plus ou moins "user-driven"
(conduit par les utilisateurs). A la base d'un besoin, soit
la personne concernée implémente (=code) la fonctionnalité
en question, soit nous (les développeurs les plus impliqués)
le faisons directement. C'est souvent le cas. Dernièrement,
un nouveau venu désirait pouvoir activer l'Anti-aliasing
(anti-aliage, permet d'avoir une image plus "lisse",
moins "pixellisée") dans une application Xith3D.
Après une courte phase d'étude pour déterminer
la meilleure manière de l'intégrer au projet,
cette option fût ajoutée, seulement 5 jours après
la demande de l'utilisateur...
Les rôles ne sont pas réellement "distribués",
la répartition se fait naturellement en fonction des
compétences et des motivations de chacun. Par exemple,
Marvin Froehlich a commencé à contribuer en Juin
2006. Depuis il a fait beaucoup de "réorganisation"
(refactoring), et d'optimisation, on peut dire qu'il s'est spécialisé
dans le bas niveau (proche du matériel). D'autres, disposant
de moins de temps, se contentent de guider les nouveaux-venus
(newbies), ou écrivent des classes utilitaires pour faciliter
le développement. |
| |
|
| Q3 |
Il
existe déjà quelques projets de moteurs en Java,
pourquoi Xith3D ? |
| A3 |
A
l'origine, Xith3D a été créé par
David Yazel, pour son jeu, Magicosm. On peut dire qu'il est
"né de la frustration des développeurs avec
Java3D". En effet, Java3D a souffert de plusieurs problèmes
de licencement, et a été "abandonné"
par Sun pendant un moment. Malheureusement, David Yazel a décidé
d'arrêter là le développement de Xith3D.
C'est William Denniss et Yuri Vl. Gushchin qui ont continué
à maintenir le projet. Après quoi il y eut une
période où le moteur n'a pas vraiment évolué,
puis depuis l'arrivée de Marvin, les utilisateurs et
les contributions se font croissante.
En dehors du "c'est mieux car c'est moi qui le fait",
il y a maintenant un certain attachement quasi "sentimental"
à Xith3D. On n'abandonne pas comme ça 2-3 ans
de sa vie de développeur !
Je pense qu'on peut dire que nous sommes très ouverts
aux contributions extérieures, et le moteur est entièrement
open-source, ce qui n'est pas *réellement* le cas par
exemple, de jMonkeyEngine (rappelons que NCSoft, qui a employé
les deux développeurs principaux, a déclaré
"retenir les meilleures fonctionnalités pour eux",
ce qui est bien "normal", mais pas très libre..). |
| |
|
| Q4 |
Quels
sont les axes de développement, quand prévoyez-vous
une RC 1 ? |
| A4 |
Nous
avons trois types de versions (releases) de Xith3D comme on
peut le constater sur notre site : les "cooker" (littéralement
: fourneau), où les fonctionnalités expérimentales
sont mises en tests, les "beta" qui sortent régulièrement,
déjà très stables mais non finale, et enfin
les versions "stable", recommandée pour un
usage en entreprise par exemple.
La dernière Stable en date est la 0.8.0, nous venons
de geler la branche 0.9.0 (=plus d'ajout de nouvelles fonctionnalités
ni de changement d'interfaces, corrections de bugs uniquement)
et développons activement la prochaine branche qui donnera
nous l'espérons la 1.0.0 finale. En fait de "RC1",
sortira une 1.0.0-beta1. Cependant nous ne pouvons donner de
date pour l'instant. Bien que le moteur soit déjà
très performant, très stable et aie beaucoup de
fonctionnalités, nous ne nous donnons jamais de "date
limite". Les sorties viennent quand c'est prêt !
Pour ce qui est de la version 1.0.0 finale, les principaux axes
de développement sont premièrement, encore plus
de stabilité et de performances, et surtout l'interaction
entre le "scenegraph" (librairie graphique) et des
moteurs de simulation physiques (comme JOODE),
un nouveau code de Terrain (avec de nombreuses optimisations
pour permettre des décors plus riches et plus réalistes,
donc plus beaux!), plusieurs outils graphiques pour aider au
développement (visualisateur et "assembleur"
de modèles 3D, interface pour construire facilement des
assemblages d'objets physiques, par exemple des personnages,
éditeurs d'Interface Utilisateur en temps réel)
et au débuggage (ex : "watchers", qui affichent
des valeurs directement dans l'écran du jeu, et permettent
de les modifier en temps réel pour ajuster le game-play,
permet de développer bien plus rapidement), ainsi que
des fonctionnalités plus avancées, comme par exemple
un éditeur de Shaders. |
| |
|
| Q5 |
Les
perfo sont un élément crucial : peut-on charger
des scènes lourdes (>1 million de poly) ? |
| A5 |
Oui.
En plus des très grands progrès qui ont été
fait depuis environ un an et demi, ces derniers temps, nous
travaillons énormément sur l'efficacité
des algorithmes de culling et de rendu, du format de stockage
des données, minimisation des appels OpenGL afin de "booster"
au maximum les performances de Xith3D. La limite du nombres
de polygones est plutôt déterminée par la
quantité de mémoire vive et la puissance de la
carte graphique que par le moteur de jeu.
Aussi, tout dépend du format de stockage des données.
Ainsi, une "map" Quake 3 sera affichée dans
Xith3D de manière beaucoup plus efficaces qu'un simple
modèle de Terrain de ~260000 polys au format Wavefront
OBJ exporté directement depuis Blender3D.. Nous travaillons
aussi sur un nouveau code de Terrain qui permettrait d'avoir
un mesh multi-résolution en fonction du point de vue,
permettant d'avoir des scènes extrêmement détaillées
et réalistes. |
| |
|
| Q6 |
Collada
devient un format de fichier relativement standard dans le domaine
de la 3D temps réel, supportez-vous ce format et ses
attributs (ColladaFX) ? |
| A6 |
Absolument,
nous avons été le premier moteur 3D open-source
en Java à supporter le format COLLADA. Le format de shaders
ColladaFX sera probablement implémenté prochainement.
Nous supportons également le format d'animation squelettale
Cal3D,
ce qui nous permet avec l'outil graphique de modélisation
et d'animation Blender3D
d'avoir un "pipeline" de création de jeux vidéos
entièrement open-source, et en même temps viable
pour le commercial
(note : Xith3D est sous BSD, Cal3D sous LGPL et Blender sous
GPL cependant vous n'avez nul besoin de modifier le code de
Blender donc le contenu produit avec Blender est tout à
fait utilisable dans des projets commerciaux). |
| |
|
| Q7 |
Peut
on faire avec Xith3D un jeu online ou un serious game (simulateur)
? |
| A7 |
Bien
sûr, tous types de jeux peuvent être réalisés
avec Xith3D. Il est très facile, de par la nature orientée
objet de Xith3D, de travailler sur des jeux réseaux ou
des jeux de simulations (qui demandent une simulation physique
lourde). Si les utilisateurs sont intéressés,
nous pourrions envisager de supporter l'API réseau JavaGameNetworking.
Au niveau des applets, la technologie JOGLAppletLauncher permet
d'avoir des applets (intégrée à une page
web) avec l'accélération 3D intégrée.
C'est un des domaines où Java a les moyens de battre
le Flash... Pour ce qui est de la physique, je travaille en
ce moment sur XPAL : "Xith3D Physic Abstraction Layer"
qui permet d'utiliser facilement n'importe quelle librairie
physique avec Xith3D.
(Note : seul JOODE, pour l'instant, est implémenté,
mais rien ne vous empêche d'ajouter le support ODEJava,
par exemple) |
| |
|
| Q8 |
Parmi
toutes les fonctionnalités de Xith3D, quelles sont les
plus originales et les plus puissantes ? |
| A8 |
Xith3D
est le seul moteur 3D à proposer autant d'abstraction
: parmi JOGL+AWT, JOGL+SWING, JOGL+SWT, LWJGL, LWJGL+SWT (références
: http://jogl.dev.java.net/
, http://www.lwjgl.org/
, http://www.eclipse.org/swt/)
les possibilités sont nombreuses Un
de nos utilisateurs travaille par exemple sur des plugins
Eclipse utilisant Xith3D.
Parmi les autres points forts, nous avons par exemple une
API d'interface utilisateur (HUD) puissante, de nombreux chargeurs
de modèles 3D (3DS, ASE, OBJ, Cal3D, COLLADA, MD2,
BSP), beaucoup de classes utilitaires pour toutes les tâches
des programmeurs de jeu, et, mais ce n'est pas vraiment une
"fonctionnalité", Xith3D dispose maintenant
d'une communauté de développeurs très
active et qui grandit rapidement (nous avons environ un nouvel
utilisateur par jour).
|
| |
|
| |
|
 |
|
|