C++ langage de script incorporé pour le développement d'un jeu - ne peut pas trouver quelque chose que j'aime
Je suis désespérément à la recherche d'un rapide, C-syntaxe, facile d'intégrer, facile à emballer langage de script à intégrer dans mon C++ jeux.
Jusqu'à présent, j'ai essayé:
- Lua: il fonctionne, mais l'habillage global des fonctions C++, il est douloureux, et le placement des objets est encore plus difficile. Aussi, je n'aime vraiment pas Lua de la syntaxe.
- AngelScript: impossible de le faire fonctionner. Débutant documentation est absymal, comme les premiers exemples ne compile pas, et vous avez à construire un grand nombre de add-ons en premier. Emballage des objets en C++ et fonctions semble plus facile que Lua, mais il pourrait être plus propre. La syntaxe a l'air bien.
- ChaiScript: impossible de le faire fonctionner. J'ai eu beaucoup d'erreurs à la fois à la non-git git C++11 versions. Je ne veux pas utiliser le boost version, que je ne veux pas introduire de renforcer la dépendance dans mon projet. Emballage à l'air facile, et la syntaxe est ok.
J'ai aussi étudié:
- Brochet: syntaxe semble bon, mais je n'ai trouvé aucune documentation sur l'incorporation.
- Écureuil: je n'aime pas la syntaxe, et l'intégration/emballage est aussi ennuyeux que Lua, d'avoir à traiter avec la pile.
Donc:
- Est-il un bon rapide, C-syntaxe, facile d'intégrer, facile à emballer alternative?
- Si il n'y a pas - quelles sont les meilleures ressources d'apprentissage sur la création d'un langage de script? J'aime réinventer la roue, et cela pourrait être une intéressante expérience d'apprentissage.
- Quel compilateur que vous utilisez? VC++ n'est actuellement pas pris en charge par ChaiScript 5 que VC++ manque fondamental du C++11 caractéristiques...
- Clang 3.4
- La création d'un langage de script vous-même est une excellente expérience d'apprentissage. Bien que cela prendra un certain temps, il y a assez de bons outils qui soulage la douleur. Pour le frontend je recommande à la recherche sur: goldparser.org
- "Je n'aime pas la syntaxe" ce n'est pas une bonne raison pour éviter d'utiliser le bien testé, bien conçu langues. C'est d'un puéril raison, et non pas un travail de professionnel. Vous ne serez jamais en mesure de développer un langage comme le bien-fondé, bien testé, et largement utilisé comme même les plus récents, les langages de script, laissez le long de l'ancienne standby comme Lua qui sont d'usage très répandu. Si vous avez quelques points de la douleur dans la syntaxe, la meilleure chose que vous pouvez faire est de les ignorer. À défaut, utilisez un petit front-end pour convertir à partir d'une modification mineure de la syntaxe dans la langue réelle.
- C'est bizarre. J'ai été une fois le test ChaiScript 5 avec VS2012, on a presque l'compilé. Basé sur le fait que Clang prend en charge la norme dans son ensemble, j'aurais parié que Clang pourrait compiler ChaiScript 5... cela dit je suis en désaccord que la syntaxe n'est pas important - personnellement, la Syntaxe et la facilité d'intégration de mes principales préoccupations (la dernière étant la raison pour laquelle je éviter des choses comme Lua...)
Vous devez vous connecter pour publier un commentaire.
Pour C-comme la syntaxe, la caisse
Probablement pas pour vous, mais que cette question pourrait se transformer une liste de solutions de rechange d'autres pourraient trouver intéressant, je vous offre QtScript qui vous donne un Javascript syntaxe. Emballage peut être très simple, mais vous devez adopter le framework Qt pour le faire, en particulier le concept de signaux et les slots.
Il y a aussi SpiderMonkey, le moteur JS de Firefox.
Vous pourriez regarder à l'aide de JavaScript. Le V8 moteur de script peut être intégré dans votre programme et de la documentation sur la façon de exposez vos types.
Vous pourriez être intéressé en Dao (http://daovm.net, https://github.com/daokoder/dao).
Dao est mis en œuvre dans la norme C avec un minimum de dépendance (si on exclut les modules optionnels et des outils). Il est léger et efficace avec un bon soutien pour l'intégration et l'extension. Son interface pour l'appel de fonctions C n'est pas basé sur la pile. Voici un exemple simple:
Vous pouvez remarquer qu'il n'y a PAS de code réutilisable pour vérifier les types de paramètres dans le enveloppés fonction. C'est parce que cette fonction est enregistrée comme
Square(num:int)=>int
, ce qui signifie que cette fonction ne peut accepter un entier en paramètre, et il est garanti par le Dao de l'exécution.Vous pouvez également être intéressé de savoir qu'il a aussi un outil basé sur Llvm automatique/semi-automatique de génération de C/C++ liaisons.
Avertissement: je suis l'auteur de cette langue.
Vous pouvez simplement utiliser C++, par quelque chose comme S'accrocher.
De vous familiariser syntaxe et une intégration facile avec votre statique programme en C++.
Qt + s'Accrocher, la VERSION de C++ interprète (2:05)
J'ai appuyé à l'aide de python comme langage de script, j'ai utilisé boost python avant dans mon programme (pas de jeu) et tout à fait satisfait avec elle. Si vous voulez essayer de créer votre propre script, vous pouvez essayer de stimuler l'esprit
Côté de ce que d'autres ont suggéré, il y a aussi S'accrocher qui est considéré comme expérimental. L'écriture d'un langage de script n'est pas facile, mais de nos jours, vous pouvez recourir à LLVM, au moins pour le back-end. Langage de programmation conception est brièvement abordé dans l'ancien "Algorithmes+Structure de Données=Programmes" par N. Wirth (mais vérifier le contenu de la rubrique, dans la dernière édition de ce chapitre a été supprimé) et si vous recherchez de l'auteur sur Google, vous aurez sûrement avec quelques autres de la publication sur le sujet.
Vous pourriez être intéressé par ObjectScript
ObjectScript, OS pour faire court, est un nouveau langage de programmation. C'est gratuit, multi-plateforme, léger, intégrable et open-source. Il combine les avantages de plusieurs langues, y compris: JavaScript, Lua, Ruby, Python et PHP. Fonctionnalités du système d'exploitation, la syntaxe de Javascript, le "multiple" résultats de la fonction de lua, syntaxique shugar de Ruby ainsi que des méthodes magiques à partir de PHP et Ruby - et même plus!!!
Programme Minimal utilisé ObjectScript pouvait être comme ça
Vous pourriez envisager de regarder python:
http://www.codeproject.com/Articles/14192/Embedding-Python-In-Your-C-Application