【问题标题】:Qt Game Editor - Build Game to Executable?Qt 游戏编辑器 - 将游戏构建为可执行文件?
【发布时间】:2016-02-28 00:18:55
【问题描述】:

我提前为我的整体“菜鸟”道歉。这是我关于堆栈溢出的第一个问题,我对 Qt 和游戏编辑器编程也很陌生。话虽如此,我确实觉得我的编程技能并没有落后太多。

这两天我一直在寻找这样的问题,无论是在这个网站上还是在这个网站上,都没有找到一个。那可能是因为我不知道用什么词来简单地描述我正在寻找的东西。

我开始用 Qt 构建一个简单的游戏编辑器和引擎。请不要给出“你真的想做游戏编辑器/引擎”或“不要”的回应。我有我的理由,为什么我确定这是我想要创造的。我的问题与编辑器具有的“导出到可执行文件”或“构建”功能有关。我一直在努力解决它,但我什至不知道我将如何开始让它发挥作用。据我所知,它可能是一行代码,也可能是一万行代码。

有人可以为我指出正确的方向吗?我需要做什么样的编程才能完成这项工作?如果这很困难并且涉及我还不知道的概念,那实际上是一件好事,因为这对我来说意味着更多的学习。我只是需要一些方向。

谢谢!

【问题讨论】:

  • 你的问题太宽泛了,与你可能声称的相反,从你声称的情况来看,很明显你在超越自己。如果您拥有完成此类任务所需的知识和经验,您就不会问这些问题。请记住过于宽泛的问题,并且有关书籍、图书馆或教程推荐的问题与 SO 无关。
  • 感谢您让我知道这被认为是题外话。但是你能告诉我为什么这被认为过于宽泛吗?我不明白在论坛上询问方向有什么问题。我不是在要求书籍推荐。如果我给了我这样的印象,我很抱歉。我在问我应该研究哪些特定的编程主题来解决这个问题。我的游戏引擎项目的目的是学习所有技能并获得完成此任务所需的所有知识。我有编程游戏的背景,这就是为什么我想学习这方面的软件。
  • 只要在 Hacker News 上搜索 StackOverflow 的提及,你就会知道原因了 :)
  • 导出/构建函数/特性可能会编译/打包东西,这意味着,外部进程将通过 QProcess 启动,输出可能被解析并在任何情况下呈现给用户。

标签: qt game-engine


【解决方案1】:

单独“如果它很困难并且涉及我还不知道的概念”就足以结束这个问题。好像我们知道你知道什么和不知道什么……

游戏编辑器通常与创建可执行文件作为最终产品的实际游戏构建过程相分离。这是由于将生产链的所有部分放入单个软件的整体复杂性。

也就是说,您可以将编辑器“连接”到构建工具,您必须使用这些工具来生成可执行文件。有这方面的例子,比如 Unity SDK(包括 Unity Engine、Unity Editor 等)。

这种一般做法的一个巨大例外是Adventure Game Studio,它在不久前就开源了。我确实相信 AGS 正在使用 .NETC# 特别是。它几乎是一体式的包,包括一个内置工具,用于从其自定义语言生成可执行文件并将引擎添加到其中。似乎这就是您正在寻找的东西,尽管此类软件的复杂性可能令人生畏。如果太多,您当然可以简单地尝试将外部构建工具无缝添加到您的编辑器中。 Qt Creator 是一个很好的例子,可能还有 99% 的 IDE - 编辑器只是提供了与构建工具交互的界面,而构建工具不是的一部分。

最后但同样重要的是,您必须考虑将来需要的维护。起初,在编辑器中集成构建基础设施似乎是一个好主意,但是当您想在编辑器或相同的构建基础架构中替换相对较大的代码块时,会发生什么情况?我的建议是创建编辑器,并在现有的构建工具中添加一个接口机制,可以轻松更改它,而不会破坏编辑器的代码或代表您的构建工具集的代码。

【讨论】:

  • 谢谢!我将研究现有的构建工具并将它们连接起来。
【解决方案2】:

实际上,游戏编辑器不会将游戏构建为可执行文件,他们只是将游戏脚本和资源打包成已经实现的游戏可执行文件可以读取的格式。游戏可执行文件不是由游戏编辑器创建的,它是按惯例实现的。

话虽如此,您可能希望将游戏脚本编译为原生 - 在这种情况下,您必须将编译后的游戏捆绑使用,并从子进程调用它以将脚本代码编译为共享库插件,您可以将其可以在游戏引擎中动态加载和使用。这里没有魔法,无论是游戏还是其他应用程序,都是一样的基本东西。

简而言之,游戏编辑器不会构建可执行文件 - 编译器会。除非你想,除了游戏引擎,还要创建你自己的 C++ 编译器;)

【讨论】:

  • 谢谢!这(和 rbaleksandar 的回答)真的很有帮助。我想我明白我现在需要做什么了。
猜你喜欢
  • 1970-01-01
  • 2011-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-10
  • 1970-01-01
相关资源
最近更新 更多