【问题标题】:Using Python instead of XML for loading resources in C++?使用 Python 而不是 XML 在 C++ 中加载资源?
【发布时间】:2013-12-02 13:03:00
【问题描述】:

我正在用 c++ 构建一个简单的 2D 游戏(用于学习目的),目前正在使用 TinyXML 解析 XML 文件以加载我的纹理和其他资源。然而,最近我对python很感兴趣,出于各种原因(再次出于学习目的)希望使用python而不是XML。

我想知道是否可以将 XML 中的对象翻译成 python 中的大元组,然后使用嵌入式 python 解释器解析元组的元素并将数据提取到我的 C++ 游戏中。

Mount and Blade Warband(第一次向我介绍 Python 模块的游戏)似乎就是这样做的,并激发了我的兴趣。

这里是 Mount and Blade 大元组中前两个元素的示例......

sounds = [

 ("click", sf_2d|sf_vol_3,["drum_3.ogg"]),

 ("tutorial_1", sf_2d|sf_vol_7,["tutorial_1.ogg"]),

但是,Mount and Blade 要求您在这些 python 脚本上运行可执行文件,将它们转换成大的 .txt 文件...

drum_3.ogg 769
tutorial_1.ogg 1793

这让我相信游戏实际上是在解析这些文本文件。

我尝试做的事情还有可能吗?

我搜索了一些 API 并找到了一些好的 API,主要是 Python/C 或 Boost.Python,希望有人能给我一些指导。

非常感谢您的任何意见!

【问题讨论】:

    标签: c++ python xml scripting python-c-api


    【解决方案1】:

    如果你的引擎(游戏或一些特殊的资源处理器)是用 python 编写的,那么用 python 编写的资源/设置文件是合适的。

    这是因为您可以只在 pythonic 模块中使用import <resource-file>,而不是解析 XML/text/other-format。

    如果你没有涉及 python,我看不出有任何理由用 python 编写资源。

    关于你关于 Mount and Blade 的例子——正如我所说,当游戏不是用 python 编写时,你应该使用一些资源预处理器。

    【讨论】:

      【解决方案2】:

      或者您可以使用Lua 作为您的资源。您可以在您的游戏中嵌入一个 Lua 解释器,这非常简单,并将您的资源保存为 Lua 表(有点像 Python 字典)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多