Gamemonkey
http://gmscript.com/
Librairie écrite en C++.
Syntaxe du script: C++, avec threads ce qui est super pratique.
Tourne sur Windows PC, Apple Mac, Microsoft XBox, Sony PlayStation2, Sony PSP and Nintendo GameCube.
Je l'ai utilisée dans plusieurs moteurs 3D (un thread pour l'intelligence artificielle des personnages ça marche du tonnerre),
et pour interfacer via un script ma librairie de manipulation d'images Pixlib (qui sert aussi à une appli GUI).
GM est vraiment simple et puissante. Seul petit incovénient je préfère le C mais bon on fera avec,
le principal étant que la syntaxe du script ne soit pas trop exotique.
Compiler la librairie
La librairie se compile sous forme de DLL ou librairie statique sans problème
depuis Windows 32 bits jusqu'à 64 bits Linux.
Je l'ai compilée à la main
g++ -c *.cpp
g++ ar rcs *.o -o libgm.a
g++ -shared -o libgm.so *.o -lm
Utiliser la librairie .so 32 bits sur Linux 64 bits
Télécharger les librairies statique/dynamique 32 bits et main.cpp
main.cpp Le programme qui embarque l'interpréteur GM
#include "gmThread.h"
int main()
{
// Create the GM Machine object on the stack
gmMachine gm;
// Execute a simple script
gm.ExecuteString("print(\"Hello, world!\");");
//could be written
//gm.ExecuteString("print(`Hello, world!`);");
//const char *myScript = "fruits = table (\"apple\", \"pear\", \"orange\"); "
// "foreach (frt in fruits) {print(frt);} ";
const char *myScript = "fruits = table (`apple`, `pear`, `orange`);"
"foreach (frt in fruits) {print(frt);}";
gm.ExecuteString(myScript);
getchar();
return 0;
}
Pour compiler le programme avec la librairie dynamique 32 bits:
$ g++ -m32 -Wall main.cpp -Iinclude -Llib -lgm -o test
$ ./test
Hello, world!
apple
pear
orange
Ensuite copier ailleurs l'exe et le so et tester: ensemble ils sont autonomes.
S'il se plaint library not found, exporter LD_LIBRARY_PATH et relancer.
Cette variable environnement sert à utiliser des librairies sans les placer
dans des dossiers du système /usr/lib ou /usr/local/lib.
Note : gm_debug.cpp/h et gm_debugger.cpp/h n'ont pas été inclus dans la dll,
mais ils sont dans la librairie statique.
Le tutoriel du langage et des threads en 15 points sera mis ici quand j'y aurai accès.
Ce tutoriel sert à intégrer GM dans moteur 3D.