帮助研究Quake 3引擎的资源[关闭]


14

除了代码本身以外,是否有足够的资源(手册,教程等)来开始学习Quake 3引擎的代码?

我非常想知道它的结构如何用于教育目的,并且可能需要进行一些修改。

Answers:


13

因此,您应该首先查看Wikipedia关于id Tech 3的文章。Brian Hook的GDC演讲摘要Element 61博客上的一些旧内容可以进一步增强这一点。除此之外,您还必须浏览所有可以找到的旧Mod教程,以尝试重建正在发生的事情。

我建议从id的原始源代码版本开始,而不是ioquake3或what-have-you,以便真正看到正在发生的事情的上下文(如何在引擎内部处理和定向输入,发生什么样的底层事件)结构等)。

当我使用它时,一些关键点对我有所帮助:

  • 总有一台服务器;在处理框架的顶部可能还存在客户端逻辑。
  • 输入首先定向到控制台(如果有兴趣),然后定向到GUI,然后定向到游戏本身。
  • 引擎本身使用陷阱函数与游戏逻辑分离(很难!)。查找(如果有内存可用)cgame并渲染项目以查找实际的引擎代码。
  • 游戏逻辑可以完全编写为在Quake 3虚拟机中运行。修改并使用本机dll时,您将必须按照以下方式运行游戏,quake3.exe +set sv_pure 0 +set vm_game 0 +set vm_cgame 0 +set vm_ui 0以使引擎运行本机代码而不是VM代码。
  • 菜单系统的UI是一个奇怪的,邪恶的,扭曲的结构和回调堆栈。一旦您解决了这个问题,它就可以使用,但是这可能需要反复试验。记住,它是一个堆栈。
  • 如果您是用本机.dll编写代码,请随时分配内存,用C ++编写或其他使您浮出水面的东西。您也可以使用STL-没有理由严格遵循C习惯用法,除非您直接与引擎连接。

我与同事为此所做的一些整洁的事情:

  • 简单的命令行界面,可从控制台调用Shell命令并将stdout / stderr流转储回控制台(Quake控制台)。
  • 与SQL数据库交互以提取和显示记录。
  • 灵活的窗口和小部件工具包,用于在客户端平视显示器上灵活显示(使用条形图,文本框,图片框,上下文菜单,可调整大小的窗口等)。
  • 慢速火箭。:)

就个人而言,我发现引擎是将以真正愚蠢的方式完成的真正聪明的事情,以非常聪明的方式完成的非常愚蠢的事情以及以非常聪明的方式完成的非常聪明的事情完美地结合在一起。这是一个很好的示例,说明了在中型C项目中如何具有模块化和良好的结构化设计。

最后,如果要花些时间,不要感到难过。我大概花了一个月的时间才真正知道如何在引擎中找到所需的内容。如果其他所有方法均失败,则从应用程序init开始,然后直接进入功能,将注释留作路标。我的显示器最后被粉红色的便利贴覆盖着,上面有函数名称,行号以及它们的简短说明。



1

绝对。

http://en.wikipedia.org/wiki/Quake_engine很好地概述了其中的内容,但是您可以通过引文很快地了解其架构的详细信息。

我还可以建议一些有关游戏引擎体系结构的书,这些书可能与您正在寻找的东西更加吻合。尽管不是Quake特有的,但它们详细介绍了引擎设计并与Quake引擎的许多方面并行运行:

  • 3D游戏引擎架构 -978-0122290640
  • 3D游戏引擎编程 -978-1592003518

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.