在我的C ++游戏中使用Python脚本?

所以我有这个游戏项目现在进行得非常好。 我实现了OpenGL的东西,animation,界面和很多非常好的东西,我很高兴终于到来了。

所以,现在我的游戏引擎的骨架已经制作完成了,我想添加AI来让我的实体更加生动。 因为我喜欢一个简单的mod的游戏,所以我真的希望将这些AI写入Python文件,然后从我的C ++代码中读取和执行。

所以我的问题如下:

这是绝对有可能的,请参阅Pandas3D,了解您在行动中要求的一个相当有力的例子。 有一些重要的事情要提到,Python不能可靠地被沙箱化。 这基本上意味着,你不能select你想要暴露给你的模块的Python库function。 换句话说,他们彼此共享的任何mod包可能充满了恶意行为,并且作为开发人员无法做到这一点。 然而,知道任何Python脚本都是如此,也许你想把它放在一边,忽略它。 如果不是的话,那么Python中就有一些非常相似的语言,它们是“羧基”的,或者至less已经足够“安全”地支持你所要求的了。

假设你不介意mod是否编写恶意代码,只想用某种“这是按照规定提供的,其他任何东西都不是我的责任”这个条款来覆盖自己,

假设您select使用Python,您需要查看这两个不同的选项。 一个是“embedded”python,另一个是“扩展”python。 每个人都有几个变种,他们都非常有趣,但有一些根本性的差异。 在这里了解他们。 如果你select这条路线,这将是你的指导。

如果您决定仍想通过添加脚本语言来扩展引擎,但不介意查看其他选项,则有一些语法类似于python,因此学习曲线不会太粗糙。 我不知道这些对沙箱是否安全,但是我知道他们比Python更有针对性。

  1. 眼镜蛇

没有进入细节…这是可能的。

Python 2.x文档有一个关于如何做到这一点的简短指南。 基本上,它涉及到包括Python库,并在需要时调用它。 至于在你的程序中以pthon-y的方式使用python,你需要把它挂到类似CVars的东西上。

为AI创建脚本文件并不是一个坏主意,但是您需要确保以一种明智的方式加载和卸载它们。 你还需要弄清楚一个序列化scheme为你工作,为了使Python能够与C ++一起工作。 我贴的指南就是这个。