Raydium 3D Game Engine

Official forum for everything about Raydium, ManiaDrive, MeMak, ...
It is currently Sun Apr 28, 2024 6:43 am

All times are UTC




Post new topic Reply to topic  [ 7 posts ] 
Author Message
 Post subject: Bindings de Raydium
PostPosted: Sun Aug 07, 2005 8:51 pm 
Offline

Joined: Sun Aug 07, 2005 8:40 pm
Posts: 2
Bonjour,

Afin que votre moteur de jeu puissent être disponible dans un maximum de langages de programmation, pourriez-vous supporter le binding de vos bibliothèques avec le programme SWIG qui est un générateur automatique de bindings : http://www.swig.org/

Pour me présenter, je m'appelle Damien Boucard et je suis en train de développer un jeu sous licence libre : http://happyboom.berlios.de/ . Cela fait quelque temps que je m'intéresse à Raydium et il m'a l'air de plus en plus puissant et adéquat pour implémenter mon jeu. Seulement celui-ci est écrit en Python et je ne peux donc pas, sans binding, accéder à l'API de raydium...

De plus, il est à noter que SWIG gère aussi les bindings en PHP et donc pourrait vous aider à maintenir votre support de scripting en PHP.

Qu'en pensez-vous ?


Top
 Profile  
 
 Post subject:
PostPosted: Mon Aug 08, 2005 11:00 am 
Offline
User avatar

Joined: Sun Mar 16, 2003 2:53 am
Posts: 2591
Location: gnniiiii (Scrat)
Ca semble très intéressant ! Il faudrait faire des tests pour voir comment se comporte SWIG avec PHP et vérifier que tout ça ne complique pas trop le processus de compilation de Raydium.

L'idée est très séduisante, et je place ça sur ma TODO, malheureusement bien pleine en ce moment. Si quelqu'un souhaite commencer les tests entre temps, n'hésitez pas.

Merci de l'info, hackter.


Top
 Profile  
 
 Post subject:
PostPosted: Wed Aug 17, 2005 12:44 pm 
Offline
User avatar

Joined: Sun Mar 16, 2003 2:53 am
Posts: 2591
Location: gnniiiii (Scrat)
J'ai fait un petit et très rapide test, et ça semble fonctionner (j'ai généré des bindings Perl pour init.c). Je vais pousser le test à plus grande échelle.

Je pense que je vais proposer "de base" dans Raydium les fichiers i ("interfaces" pour Swig) et une doc (des Makefiles, des scripts ?) pour la génération de modules Swig.

En revanche, les bindings PHP actuels vont continuer d'évoluer, puisque plus généralistes, intégrés et capable de faire "l'inverse" (appels PHP depuis C).

hackter : Est-il possible de disposer d'un petit programme Raydium en Python (basé sur http://raydium.yoopla.org/wiki/Tutoriel ... LaPhysique par exemple) sur lequel je puisse baser mes futurs tests "grandeur nature" ? (même s'il y'a des fautes et des erreurs dans ce programme, le tout étant de m'éviter l'apprentissage "avancé" de Python)


Top
 Profile  
 
 Post subject:
PostPosted: Mon Aug 22, 2005 4:54 pm 
Offline
User avatar

Joined: Sun Mar 16, 2003 2:53 am
Posts: 2591
Location: gnniiiii (Scrat)
Sur le SVN :
* added: gen_bindings.php, using SWIG

Ce script est capable de générer des bindings Perl et Python, et est modifiable pour le reste des langages supportés par SWIG. L'ensemble de l'API Raydium est exportée, sauf les variables globales (qui tendent à disparaître de l'API) et les constantes (question de temps).

Je rencontre cependant 2 problèmes majeurs :
SWIG ne supporte pas les callbacks pour le langage "cible". Même si ce problème est contournable pour une grande partie de l'API Raydium (et c'est déjà le cas en partie, puisque RayPHP a le même problème), il reste un callback incontournable :

void raydium_callback(void (*loop) )

Etant complétement dépendant de GLUT, ce problème semble très compliqué à résoudre. Si un habitué de SWIG passe par là ...

Autre point, SWIG ne semble pas faire de distinction entre les pointeurs et les tableaux, et donc certaines fonctions qui prennent des "GLfloat *" (pour désigner un tableau de 3 floats, par exemple) sont probablement inutilisables du coté de Python (qui va demander un pointeur sur un GLfloat). Là encore, c'est probablement ma méconnaissance de SWIG qui est en cause.

Bref, les premiers tests en ce qui concerne les bindings Raydium peuvent déjà être lancés.


Top
 Profile  
 
 Post subject:
PostPosted: Wed Aug 24, 2005 9:10 pm 
Offline
User avatar

Joined: Sun Mar 16, 2003 2:53 am
Posts: 2591
Location: gnniiiii (Scrat)
Ok, la majeure partie des problèmes exprimés dans le post précédent sont réglés ! (reste le problème de certaines fonctions utilisant des pointeurs).
Il est maintenant possible d'écrire des applications Raydium à l'aide de Python, et un test est disponible (toujours sur la version SVN) : raydium/swig/test.py

Je pense que je ne vais pas tarder à annoncer officiellement cette nouvelle possibilité, même si il reste encore la compilation windows a tester. Il serait aussi sans doute intéressant qu'un utilisateur de Python fasse quelques essais pour valider ces bindings.


Top
 Profile  
 
 Post subject:
PostPosted: Thu Sep 01, 2005 6:42 pm 
Offline

Joined: Sun Aug 07, 2005 8:40 pm
Posts: 2
Salut Xfennec,

Désolé pour ma réponse tardive, mais je suis parti en vacances quelques semaines et je viens juste de lire tes posts. Félicitation pour ta réactivité !

Je veux bien tester ces nouveaux bindings et te tenir au courant. Je regarde tout ça de suite.

Pour répondre à ton problème de pointeur, je ne sais pas du tout comment réagit python à cela car c'est un langage qui ne connait pas la notion de pointeur (un peu comme Java). De plus il ne connait pas la notion de tableaux non plus (telle qu'on la connait en C). Je suppose que c'est géré comme des listes python. Pour les parametres requerant un tableau de taille fixe, je pense que le mieux est de préciser cette taille dans la doc développeur et ensuite c'est au développeur de faire attention, dans son language de programmation respectif.

En tout cas, bravo et merci pour ces bindings SWIG !


Top
 Profile  
 
 Post subject:
PostPosted: Fri Sep 02, 2005 9:00 am 
Offline
User avatar

Joined: Sun Mar 16, 2003 2:53 am
Posts: 2591
Location: gnniiiii (Scrat)
Merci d'être repassé par là ;)

Je te laisse faire différents tests si c'est possible, je reste à l'écoute pour affiner tout ça en fonction de tes retours.


Top
 Profile  
 
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 7 posts ] 

All times are UTC


Who is online

Users browsing this forum: No registered users and 178 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group