【问题标题】:Refactor C++ code to use a scripting language?重构 C++ 代码以使用脚本语言?
【发布时间】:2010-06-14 06:12:58
【问题描述】:

背景:

几个月来,我一直致力于开发一个用 C++ 编写的平台游戏。该游戏目前完全用 C++ 编写,但我对使用 Lua 来处理敌人 AI 以及可能的其他一些逻辑的可能性很感兴趣。然而,该项目在设计时并未考虑 Lua,而且我已经为大部分 AI 编写了可工作的 C++ 代码。我希望 Lua 可以提高游戏的可扩展性,但不知道将现有的 C++ 代码转换为 Lua 是否有意义。

问题:

如果有的话,何时将功能齐全的 C++ 代码重构为像 Lua 这样的脚本语言是否合适?

这个问题故意有点模糊,所以请随意给出与给定背景无关的答案。

【问题讨论】:

    标签: c++ refactoring lua


    【解决方案1】:

    脚本语言对于可能经常更改或扩展的事物很有用,并且可以以速度为代价。

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

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

    如果您已经让一切正常工作,除非您打算尝试改进它或允许扩展,否则我真的没有理由将其删除;你完成了。这对于您的下一个游戏引擎来说是需要牢记的。

    也就是说,如果您还没有完全完成并且这是一种爱好/练习,我建议您这样做。这将是您向游戏引擎添加脚本功能的介绍。当您开始制造更大、更复杂的引擎时,您无需担心新事物。

    【讨论】:

    • 因此,如果我确信 AI 代码的某些部分永远不会改变,您是否建议我将该代码保留在 C++ 中或将其与其他所有内容一起移植到 Lua 以保持一致性?感谢您提供有用的答案。
    • @Justin:这取决于你的目标。如果它确实完成了,而你最终确实需要尽快完成,那就离开它并继续做其他事情。但如果这是一个学习的东西,移植它来进行实践。
    • 您可以使用混合方法。 AI 的某些部分可能可供替代 AI 使用并且对速度至关重要,可以留在 C 中。Lua 脚本或多或少只是编排器。
    【解决方案2】:

    如果有的话,何时将功能齐全的 C++ 代码重构为像 Lua 这样的脚本语言是否合适?

    很少。这是我做的时候:

    • 我想更改设计或添加功能,但无论如何都需要重新访问 C++ 代码。

    • 我发现了部分 C++ 代码,我不断地反复修改。

    • 我相信通过从 C++ 迁移到 Lua,我可以将代码缩小五到十倍。

    前两个项目符号是任何人都可以做的事情。第三个需要一些经验。

    【讨论】:

      猜你喜欢
      • 2013-09-13
      • 2013-02-21
      • 1970-01-01
      • 2010-12-22
      • 2016-04-15
      • 1970-01-01
      • 2010-12-03
      • 2010-11-18
      • 2011-06-08
      相关资源
      最近更新 更多