【问题标题】:Script system in application应用程序中的脚本系统
【发布时间】:2011-02-19 10:57:51
【问题描述】:

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

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

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

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

我的想法对吗?

【问题讨论】:

  • 尽管我很喜欢 Python 作为一种语言,但如果你想要一种数据描述和简单的脚本语言,可以轻松与 C 和 C++ 集成,我建议使用 Lua。
  • @delnan 问题主要不是关于脚本语言,而是关于脚本使用的想法。

标签: c++ python boost system


【解决方案1】:

你能给我们大致了解一下这款游戏的规模吗?

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-03
    • 2014-01-07
    • 1970-01-01
    相关资源
    最近更新 更多