C++ 重构C++;使用脚本语言的代码?

C++ 重构C++;使用脚本语言的代码?,c++,refactoring,lua,C++,Refactoring,Lua,背景: 我一直在使用C++写的几个月的游戏。游戏目前完全写在C++中,虽然我对使用LUA来对付敌人AI和其他一些逻辑的可能性很感兴趣。然而,这个项目是在没有LUA的情况下设计的,而且我已经为AI的大部分编写了工作C++代码。我希望Lua能够提高游戏的可扩展性,但不知道将现有C++代码转换为Lua. 问题: 何时,如果是,完全使用功能性C++代码并将其重构成脚本语言(如Lua?)是合适的吗? 这个问题故意有点模糊,所以请随意给出与给定背景不相关的答案。脚本语言对于可能频繁更改或扩展的内容非常有用,

背景:

我一直在使用C++写的几个月的游戏。游戏目前完全写在C++中,虽然我对使用LUA来对付敌人AI和其他一些逻辑的可能性很感兴趣。然而,这个项目是在没有LUA的情况下设计的,而且我已经为AI的大部分编写了工作C++代码。我希望Lua能够提高游戏的可扩展性,但不知道将现有C++代码转换为Lua. 问题:

何时,如果是,完全使用功能性C++代码并将其重构成脚本语言(如Lua?

)是合适的吗?
这个问题故意有点模糊,所以请随意给出与给定背景不相关的答案。

脚本语言对于可能频繁更改或扩展的内容非常有用,并且可以从速度上进行权衡

在核心库中使用脚本语言是没有意义的,因为它们是相对静态的(它们所做的只是一次又一次地处理内容),需要快速。但是对于像人工智能这样的东西,这是一个完美的主意。您可以在不重新编译的情况下调整AI,并允许将来进行非常好的更改。一旦发布,您就可以预编译脚本语言并称之为良好的

它也是可扩展性的最佳选择。为游戏提供Lua接口,任何人都可以使用简单的语言编写插件,无需编译。Lua界面越丰富,这些插件的表现力和功能就越强大

如果你已经把所有的东西都做好了,除非你打算改进它或者允许扩展,我真的看不出有什么理由把它去掉;你完了。这将是你的下一个游戏引擎需要记住的东西

也就是说,如果你还没有完全完成,而这是一种爱好/练习,我建议你去做。这将是您向游戏引擎添加脚本功能的入门。当你开始制造更大、更复杂的发动机时,你就不需要担心新的东西了

何时,如果是,完全使用功能性C++代码并将其重构成脚本语言(如Lua?

)是合适的吗? 很少。以下是我完成的时间:

    我想改变设计或添加功能,这将需要我重新访问C++代码。

    <>我找到了一些我不断地改变的C++代码的部分。

    我相信通过C++从Lua迁移,可以使代码五或十倍更小。


头两颗子弹是任何人都能做到的。第三需要一些经验。

如果我确信AI代码的某些部分永远不会改变,你建议我把C++中的代码或端口留给LUA和其他的一致性吗?谢谢你的回答。@Justin:这取决于你的目标。如果它确实完成了,并且你最终需要很快完成,那么离开它,继续做其他事情。但是如果这是一件学习的事情,那么就把它移植到实践中去。你可以使用混合方法。人工智能的某些部分可以被替代人工智能使用,并且对速度至关重要,这些部分可以保留在C中。Lua脚本或多或少只是编排器。