Raydium et Python

Ca a été long, compliqué et chiant, mais je pense ne plus être très loin de la vérité : les bindings Python pour Raydium fonctionnent !


Va faire une image sexy pour montrer du Python, toi …

http://raydium.cqfd-corp.org/svn.php?f=/trunk/raydium/swig/test.py

Concrétement, ça signifie qu’il est possible d’écrire des applications Raydium non plus uniquement en C/C++, mais aussi en Python, langage de script particulièrement à la mode (Battlefield 2, Vampire: Bloodlines, …).

Pour donner une idée de la complexité de la tâche, il faut savoir que Raydium propose plus de 550 fonctions, utilise pas mal de callback et de bizarreries bien spécifiques au langage C…

L’utilisation de SWIG (http://www.swig.org/) est d’une grande aide pour ce genre de tâches, et ouvre la porte à des bindings pour d’autres langages intéressants, comme Perl et Java, même si une partie du travail effectué pour Python est à refaire pour chacun de ces langages.

Les bindings ne sont pas "figés", puisqu’ils sont générés avec un script PHP qui analyse les sources de Raydium pour créer le fichier d’interface. En résumé, c’est un script PHP qui permet d’écrire des applications en Python pour un moteur écrit en C qui utilise PHP pour la console (et d’autres bidules, comme le téléchargement automatique de textures, modèles, sons, …) … heureux brassage culturel 🙂

La suite du programme : trouver un testeur Python, porter le tout sous windows, tenter le coup avec Java, faire une version "light" de Raydium pour la PSP et continuer mes bidules en papier (cf article précédent).

PS : Je lance au passage un merci aux divers gens qui m’ont contacté par mail ces derniers temps.


Publié

dans

par

Étiquettes :

Commentaires

2 réponses à “Raydium et Python”

  1. Avatar de channie
    channie

    Est ce qu’un binding python ou Java (pour, ua hasard, Ogre 3d) permet de réaliser des scripts complexes façon Call of Duty ou Half-Life ?
    Les scripts en python de BF2 géraient les règles du jeu mais est-il possible de créer des trigger et des évenements liés à la présence d’une entité dans le bsp ?

  2. Avatar de Xfennec
    Xfennec

    Je n’ai aucune idée de ce que BF2 propose, mais il est très probable qu’une partie non négligable de l’API est exportée. En revanche pour Ogre 3D, PyOgre offre un accès complet à l’API du moteur. Bref, tout dépend de l’étendue du binding.
    Faut pas non plus perdre de vue que BF2, CoD, HL, … sont des FPS, avec des moteurs très axés, alors que Ogre 3D et Raydium sont généralistes, ce qui change beaucoup la tête de l’API et donc des bindings (et leurs possibilités).

Laisser un commentaire