用于游戏开发的 C++ 嵌入式脚本语言 - 找不到我喜欢的东西

标签 c++ c++11 scripting game-engine

<分区>

我正在拼命寻找快速类 C 语法易于嵌入易于包装 strong> 嵌入到我的 C++ 游戏中的脚本语言。

到目前为止我已经尝试过:

  • Lua:它可以工作,但是围绕它包装全局 C++ 函数很痛苦,而包装对象则更加困难。另外,我真的不喜欢 Lua 的语法。
  • AngelScript:无法让它工作。初学者文档很糟糕,因为第一个示例无法编译,您必须先构建大量附加组件。包装 C++ 对象和函数看起来比 Lua 更容易,但它仍然可以更简洁。语法看起来不错。
  • ChaiScript:无法让它工作。我在非 git 和 git C++11 版本中都遇到了很多错误。我不想使用 boost 版本,因为我不想在我的项目中引入 boost 作为依赖项。包装看起来很简单,语法也不错。

我也调查过:

  • Pike:语法看起来不错,但我没有找到有关嵌入的文档。
  • Squirrel:我不喜欢这种语法,嵌入/包装和 Lua 一样烦人,必须处理堆栈。

所以:

  • 是否有好的快速类 C 语法易于嵌入易于包装的替代方案?
  • 如果没有 - 关于创建脚本语言的最佳学习资源是什么?我喜欢重新发明轮子,这可能是一次有趣的学习经历。

最佳答案

对于类似 C 的语法,检查

  • Ch一个商业的、可嵌入的 C 解释器
  • CINT一个开源的 C/C++ 解释器
  • Pawn - “简单、无类型、32 位扩展语言,具有类似 C 的语法”

可能不适合你,但由于这个问题可能会列出其他人会感兴趣的备选方案,我给你 QtScript它为您提供了类似 Javascript 的语法。包装可以很简单,但您需要采用 Qt 框架来完成,尤其是信号和槽的概念。

还有 SpiderMonkey , 来自 Firefox 的 JS 引擎。

关于用于游戏开发的 C++ 嵌入式脚本语言 - 找不到我喜欢的东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17671721/

相关文章:

c++ - Qt资源系统中文件系统路径的前缀有什么优势?

c++ - 在 Arduino 中使用 SD.remove() 和 SD 库

regex - 如何将不同的键映射到相同的值但只声明一次?

c++11 - get `sizeof` 嵌套在类模板中的结构的非静态成员是否非法?

javascript - 为什么 JavaScript 被称为 "scripting language"?

python - 3DS Max Python 脚本

c++ - 当 Visual Studio 运行正常时, vector 迭代器上的 LInux g++ 编译器错误

c++ - 打印字符串数组元素c++

c++ - 具有一个和两个模板参数的模板类

c++ - 我应该在 C++ 中使用 std::function 还是函数指针?