![]() |
1
26
您可以使用Lua或Python。Lua比python更“轻量级”。它的内存占用比python小,并且根据我们的经验更容易集成(人们在这一点上的里程可能会有所不同)。它可以支持一组同时运行的脚本。Lua至少支持以您希望的方式停止/启动线程。 python很不错,但根据我(有限)的经验,我们很难为不同的环境进行编译,而且它相当重。(在我看来)它有一个缺点,那就是需要推进。对于一些人来说,这可能不是问题,但是如果您不需要Boost(或者不使用它),那么您将引入大量代码来让Boost.python正常工作。YMMV。 我们已经将Lua构建到多个平台(win32、Xbox360和PS3)上的应用程序中。我相信它会在x64上工作。使用Luabind的建议很好。我们最终在两者之间编写了自己的接口,虽然不太复杂,但使用胶水代码将为您节省大量时间,甚至可能会让您感到恼火。
如果您需要在那里进行更改,那么Lua代码本身就有点混乱。我们在Lua代码库中看到了难以追踪的bug。我怀疑Boost::Python可能有类似的问题。
总而言之,我们对Lua非常满意,并且已经在两场比赛中发布了它。我们目前还没有计划离开这种语言。总而言之,我们发现它比几年前可用的其他替代品要好。Python(和IronPython)是其他的选择,但根据经验,它们似乎比Lua更严厉。不过我很想听听那里的其他经历。 |
![]() |
3
5
最好嵌入lua(www.lua.org)或python(www.python.org)。两者都在游戏行业中使用,并且都可以相对容易地访问外部“C”函数,而lua在这里具有优势(因为数据类型更容易在lua和C之间转换)。与C++对象的接口将在您的终端上工作多一点,但是您可以在谷歌上查找,或者在Lua或Python讨论论坛上进行这一操作。 我希望这有帮助! |
![]() |
4
3
Here are the docs on embedding Python into an application. 您正在描述协作多任务,脚本需要定期调用Break或Wait函数。也许更好的解决方案是在自己的线程中运行脚本语言,然后在脚本语言和程序其余部分之间的接口上使用互斥锁或无锁队列。这样,不经常调用Break()的错误脚本就不会意外地冻结程序。 |
![]() |
5
2
Boost.Python 图书馆看起来做你想做的事情应该相当简单。 |
![]() |
6
2
看看 SWIG . 我曾使用它与Python接口,但它支持许多其他语言。 |
![]() |
7
2
卢阿再投一票。它很小,速度很快,不会消耗太多内存(对于游戏来说,最好的办法是在初始化时分配大的缓冲区,然后在那里重新定向所有Lua内存分配)。我们使用tolua生成绑定,但还有其他选项,其中大多数选项比boost.python小得多/更易于使用(IMO)。 |
![]() |
8
2
至于调试Lua(如果你这样做的话),我一直在使用DeCoda,而且还不错。它假装是一个IDE,但是sorta失败了,但是您可以将调试过程附加到VisualStudio,并在断点处向下调用堆栈。非常方便追踪那个bug。 |
![]() |
9
1
Ch . 我一直在用它做一个游戏项目,它做得很好。力量和适应性的完美结合。 |
![]() |
md.jamal · 如何确保telnet命令是否成功 7 年前 |
![]() |
user3742796 · 如何在键之间均匀分布总值数 7 年前 |
![]() |
VaTo · 用于检查是否可以访问多个服务器的脚本 7 年前 |
![]() |
as7951 · Awk脚本根据条件提供另一列中某些列的总和 7 年前 |
![]() |
JBaba · 如何在Unix中读取嵌套循环中的两个文件 7 年前 |
![]() |
Ajeetkumar · ksh-检查字符串是否有模式 7 年前 |