使用Python而不是XML来加载C ++中的资源?

时间:2013-11-19 05:14:12

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

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

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

Mount and Blade Warband(最初向我介绍Python模块的游戏)似乎是这样做的,并引起了我的兴趣。

以下是Mount和Blade的大元组中前两个元素的示例....

sounds = [

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

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

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

drum_3.ogg 769
tutorial_1.ogg 1793

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

我尝试做的仍然可能吗?

我一直在寻找一些API,并找到了一些好的,主要是Python / C或Boost.Python,并希望有人可以给我一些方向。

非常感谢,非常感谢任何意见!

2 个答案:

答案 0 :(得分:1)

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

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

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

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

答案 1 :(得分:-1)

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