c++ - 应用中的脚本系统

标签 c++ python boost system

我正在开发一款游戏,现在我想为它制作脚本系统。

现在我有了抽象类Object,它被所有游戏对象继承。我必须编写大量技术代码,将新对象类型添加到 enum,为每个对象注册解析器函数(该函数从文件中解析对象的参数)。

我不想做这样的工作。所以我的想法是获得一些脚本系统(例如 boost.python,因为我在我的项目中使用了 boost)。每个对象都是一个简单的 python 脚本,在 C++ 端我只是加载并运行所有脚本。

Python 不是硬类型的,所以我可以注册函数,动态构建类型而不存储枚举等。唯一不好的部分是编写了很多绑定(bind)代码,但它只生成一次。

我的想法对吗?

最佳答案

你能给我们一个大概的游戏规模的概念吗?

如果您不小心,您可能会给自己做很多额外的工作而没有太多好处,但通过一些计划,听起来可能会有所帮助。重要的问题是“我想简化程序的哪些部分?”、“我需要脚本语言来简化它们吗?”以及“脚本语言可以简化它们吗?”。

您提到您不想手动解析文件。 Python 的 pickle 模块可以为您处理序列化,但 .NET 也可以。如果您使用的是 Visual Studio,那么您可能会发现用 C# 编写代码比用 Python 编写代码更容易。

您还应该寻找在不添加新语言的情况下简化代码的方法。例如,您可能能够创建一个简单的二进制文件格式并存储您的数据结构而无需进行太多解析。您可能还可以做其他事情,但这需要对程序有更详细的了解。

关于c++ - 应用中的脚本系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5050372/

相关文章:

c++ - boost::interprocess managed_windows_shared_memory grow()

c++ - boost addable 和 dll 的辅助功能错误

c++ - 如何在 C++ 项目中使用 C gnutls API

c++ - xll函数的线程安全

c++ - 如何重置已保存变量以准备下次调用的模块的状态?

python - 如何规避 python splunk 查询中 100 个条目的限制

python - 为什么我的 .so 文件由 boost.python 和 c++ 头文件编译失败?

c++ - cl::Image3D 在 nVidia TITAN black 上出现段错误,但在 Intel openCL 设备上没有?

python - Django Signal 中 Unresolved 错误

python - python中格式字符串中动态计算的零填充