Bonjour,
Tout d'abord je tiens à m'excuser car je ne vais pas respecter les règles de présentation de ce forum car il ne s'agit pas d'un recrutement au sens traditionnel du terme!
En effet, je viens chercher ici des personnes qui seraient potentiellement intriguées et/ou interessées par essayer un moteur qui se veut un peu "différent" des autres.
A vrai dire, ce dernier ne prétend pas devenir (et ne le prétendra jamais) le prochain concurrent d'un Irrlicht, d'un Ogre3D ou d'un quelconque moteur graphique ou complet. Le but d'orx (c'est son p'tit nom =) ) étant de réutiliser le maximum ce qui existe déjà et de proposer de nouveaux mécanismes, quand cela est possible, autour d'un noyau rapide et portable.
Il a donc été conçu avec un permanent soucis de modularité et de portabilité. Son noyau est ainsi, le plus possible, indépendant de toute plateforme / bibliothèque externe et fait appel à des plugins pour l'exécution de tâches dépendantes du matériel ou de l'OS (ce n'est pas encore tout à fait vrai, car par manque de temps, il dépend encore pour quelques temps de bibliothèques externes pour certaines fonctions de maths et de gestion de chaînes de caractères). Ces plugins sont actuellement chargés dynamiquement, mais la possibilité de "correspondance statique" sera mise à l'oeuvre pour des plateformes minimalistes comme la GBA, par exemple.
Orx est en cours de développement, et même s'il lui manque encore pas mal de fonctionnalités, il est actuellement fonctionnel pour les curieux et bidouilleurs en tout genre. J'ai réalisé rapidement un test de scrolling différentiel (bien qu'orx soit censé gérer aussi bien 2D que 3D, actuellement mes besoins font que j'ai plus accentué le développement 2D, sachant qu'il suffit grosso modo de rajouter le support des matrices pour avoir la gestion de la 3D) pour montrer sas capacités ainsi que sa souplesse d'utilisation. Son source, ainsi que celui des plugins et diverses démos sont disponibles ici.
Comme je parlais de réutiliser ce qui existe déjà via les plugins permettant au noyau de gérer l'affichage, le son, le temps, les périphériques, etc... pour permettre de rajouter des fonctionnalités plus "originales", en voici quelques exemples :
- la gestion d'horloges indépendantes, cadencées à la demande, permettant une cohésion temporelle et du time-stretching indépendant (ralentir un groupe de NPCs, la musique ou autre de façon transparente);
- la gestion d'un graphe d'animation permettant d'enchaîner automatiquement les animations selon critères, le graphe pouvant s'adapter en temps réel;
- la référenciation automatisée et hiérarchisée des ressources
- l'initialisation/désinitialisation des modules par dépendances : les modules chargent leur prérequis et se mettent en pause si on débranche une brique qui leur est nécessaire jusqu'à son remplacement par une brique équivalent;
- la gestion hotplug des plugins 'core' (ceux qui s'interfacent avec les fonctionnalités prévues dans le noyau mais non implémentées car platform-dependent);
- l'allocation contiguë de mémoire par types de données;
- les noeuds hiérarchiques de positionnement (cf. open scene graph / renderware frames);
Orx est sous licence LGPL et codé essentiellement en C (on peut discuter plus tard du choix du langage, si certains le souhaitent, mais ce n'est pas le but de ce poste ^^) mais est fortement orienté objet.
Voilà pour la présentation technique et en ce qui concerne son principal auteur, rapidement, j'ai commencé en temps que programmeur dans le secteur des jeux video il y a plus de 6 ans, aussi bien en R&D que ce qui est actuellement ma spécialité, programmeur I.A.
Maintenant, concernant ma recherche, j'aimerais trouver des personnes qui voudraient tester tout ça, malgré le fait qu'il soit encore jeune, et qu'il manque des fonctionnalités très importantes comme la possibilité d'utiliser un langage de script pour le piloter et accéder aux plugins utilisateurs (qui rajoutent des fonctionnalités non prévues à la base, comme envoyer un mail, par exemple (pourquoi pas? ^^ ) ) ou le chargement de package : orx est désigné pour être data driven, mais actuellement il faut coder explicitement les inits.
A ce propos, si vous jetez un oeil au source de la demo du scrolling différentiel, la partie 'update' ne prend que qques lignes (le mouvement des vagues, celui de la caméra qui engendre le scrolling différentiel, et celui de l'agrandisement du viewport au lancement) alors que la partie 'init' est plus longues, c'est celle-ci qui disparaîtra lorsqu'orx pourra charger/sauver les packages correctement.
Donc, pour retourner à mes moutons (désolé pour ce post long et brouillon), je cherche des codeurs qui sont à la fois curieux et désireux d'explorer ses possibilités. J'aimerais avoir leur retour afin d'arranger ce qui doit l'être et de le rendre le plus agréable possible à l'usage. J'insiste sur le fait qu'orx n'est pas près pour une réelle 'production' de jeu, ceci dit, les curieux et bidouilleurs de tout poil devraient trouver matière à expérimentation.
Si certains d'entre vous souhaitent développer des plugins pour une architecture particulière (GP32/GP2X, DS, PS2, etc...), vous êtes aussi les bienvenus. Je compte d'ailleurs, pour mes propres besoins, en développer pour la DS, à moyen terme. Les plug-ins qui ont été actuellement développés sont seulement pour PC (win / linux).
Le noyau d'orx, quant à lui, s'il a connu plusieurs contributeurs, n'est actuellement maintenu et développé que par mes soins, donc si vous vous sentez motivés pour y contribuer, il y a de quoi faire, mais autant vous avertir de suite, pour ce poste là je suis assez exigeant, notamment sur le 'coding style' (d'aucun diront casse-c... ^^).
Et pour finir, il y a un projet de plateforme de développement associée à orx (EditOrx), mais celle-ci, par abandon de ses contributeurs, est restée à l'état de conception. Je ne compte pas m'en occuper (j'ai *horreur* de coder qqc qui se rapproche de trop près aux UIs), donc si quelqu'un veut reprendre cette partie du projet (qui est quasi-indépendant, et dont je ne m'occuperai en rien de la gestion), contactez-moi!
Quelques liens : il y a aussi une doc doxygen qui n'a pas été mise à jour depuis des éons (et c'est pas peu de le dire!) ici, ainsi qu'un wiki qui date tout autant là.
Si vous avez des questions/commentaires/retours de quelque sorte que ce soit, concernant orx ou moi-même, je serai très heureux de pouvoir y répondre! =)
En vous remerciant déjà pour cette lecture qui a dû être fastidieuse!
PS : Les derniers plugins d'affichage et de temps implémentés sont basés sur SFML (merci M. Gomila =) ), et probablement assez buggués (mea culpa), car j'ai fait ça vite, sans grande connaissance de cette bibliothèque, excellente au demeurant.
Partager