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.