`
chinamming
  • 浏览: 141217 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

如何编译quake3 arena

阅读更多

  按照 John Carmack 的承诺 Quake III Arena 也终于开源了!在 Id Software 的网站上下就能购下载到。

  不过似乎网上更流行的版本是从这里能够得到的一个名为 quake3-1.32b-.source.zip 的 5.45M 的压缩包,里面括了相对较全的内容,有 Q3A 的全部源码,lcc, q3asm, q3map 和 q3radiant 等工具的源代码。最主要的是它还包含了 vs.net 2003 的工程文件,使得编译变简单了许多。

  我最早就是用这个版本编译通过的,不过后来发现在官方网站上放出的版本和这个不太一样,本想想继续尝试编译后者,并且根据其结果来写这篇网志的,不过遗憾的是,按照说明上的指导,编译不能成功。会出现找不到文件的错误,估计是 Id 官方的编译器本身配置有些问题,我没看源码也没有深入研究,希望有兴趣的朋友能告诉我原因和解决办法。

  言归正传,其实这个版本里面的信息还是足够丰富的,很容易编译,只在个别地方有些小问题。不过我还要唠叨一下,我不是一个 Quake 玩家,所以对其中的很多术语不是很清楚,也不了解整个游戏的结构,只是出于好奇尝试了一下,有问题的话还请大家多多拍砖!

  代码结构

  从说明文件来看,这份代码主要包含了这些部分:

  •   code/Quake III Arena source code ( renderer, game code, OS layer etc. )
  •   code/bspcbot routes compiler source code
  •   code/gamegoverns the game, runs on the server side.
  •   code/cgamegoverns the client side of the game, runs on the client side.
  •   code/uihandles the ui on the client side.
  •   lcc/the retargetable C compiler ( produces assembly to be turned into qvm bytecode by q3asm )
  •   q3asm/assembly to qvm bytecode compiler
  •   q3map/map compiler ( .map -> .bsp ) - this is the version that comes with Q3Radiant 200f
  •   q3radiant/Q3Radiant map editor build 200f ( common/ and libs/ are support dirs for radiant )

  编译 Quake III Arena

  我指的是编译 Quake III 唯一的那个可执行文件。

  在 code 目录下面能够找到 quake3.sln 这个 vs.net 2003 的解决方案文件,你尽可以打开它看看到底都有些什么东西,不过我在这里只谈编译,所以就拿它当个黑盒,直接编译了。

  编译 Quake 需要 DirectX SDK 的支持,因为看游戏目录中包含的是 DirectX 7.0 所以我估计 7.0 的 SDK 就可以了,不过我仍然用了最新的 DirectX 9.0c 2005 年六月的那个版本,可以到微软的网站上去下载。不过我一直不理解的是,据说 Quake 是一个纯 OpenGL 的游戏,怎么它的编译要用到 DirectX 呢?无论如何安装好 DirectX SDK 之后,就可以编译了,不过在此之前要确保你的机器里已经安装了 vs.net 2003,并且 devenv.exe 这个文件在你的 path 环境变量中。(devenv.exe 就是 vs.net 集成开发环境的可执行文件,一般的安装目录在 %ProgramFiles%/Microsoft Visual Studio .NET 2003/Common7/IDE 里面。)打开命令窗口,进入 code 目录,运行命令:

  devenv quake3.sln /build release

  不出意外的话,编译会顺利完成,其中会有几个警告,不过不影响结果。之后你会在 release 目录中找到一大堆编译好的二进制文件,不过有用的似乎只有那个 quake3.exe。

  安装 Quake III Arena

  只是因为在 code 目录下面有一个 installrelease.bat 文件,所以这一步就姑且叫做安装吧。在进行这一步之前,还是要准备一下环境变量,将 code/win32/mod-sdk-setup/bin 这个路径加入到 path 中,因为需要用到 lcc 和 q3asm 两个编译工具。然后打开 intallrelease.bat 这个文件,注释掉最后一行和倒数第三行,并且将倒数第二行中的 "_ta" 和 "g:" 去掉,使得最后三行变为这样:

  rem call closefiles

  copy release/quake3.exe /quake3/quake3.exe

  rem call installvms

  为什么要这样做,仔细看看也就明白了。首先是根本就没有 closefiles.bat 这个文件,然后将 release 目录下的 quake3.exe 拷贝到根目录下的 quake3 子目录中。最后的 installvms.bat 只不过是做了一个移动操作,没有什么用处,因此只样改过的 intallrelease.bat 文件就可以很好的工作了。最后还要确保在根目录中没不存在 quake3 这样的目录。

  好了,这个时候,只要简单的执行一下这个文件,待结束后看看根目录下是否多了一个 quake3 的目录,里面包含了 baseq3 和 missionpack 两个子目录,具体的目录结果如下:

  


Quake3 --|
|
||-- cgame.map
||-- cgame.qvm
|-- baseq3 -- vm --|-- qagame.map
||-- qagame.qvm
||-- ui.map
||-- ui.qvm
|
||-- cgame.map
||-- cgame.qvm
|-- missionpack -- vm --|-- qagame.map
|-- qagame.qvm
|-- ui.map
|-- ui.qvm

  仔细的看一下输出的日志,就可以明白为什么会产生这些文件了。

  运行 Quake III Arena

  想必你已经能够猜到,只要运行 code 目录下的那个 runrelease.bat 就可以了。不过有两点要注意,这样运行 quake3.exe 需要两个参数,一个是 fs_basepath 是要指向 quake3 这个目录,而另一个 fs_cdpath 则需要指向 Quake III Arena 的原始光盘,因为需要从里面读取资源文件。保证这两个参数都没有问题了,你应该就能够看到熟悉的 Quake III Arena 的画面了,否则会出现 Couldn't load default.cfg 的错误。

  其他问题

  如果你在运行编译好的结果时出现了如下的问题 User interfaces is version 3, expected version 6,请到 Id 的官方网站去下载最新的 Point Release,安装之后就可以正常运行了。

  怎么样,还是足够简单的,至少比我想象的要简单,还是那句话,这只是一个黑盒编译,希望熟悉 Quake 游戏的人们能够深入的解释一下得到的结果,算是抛砖引玉了……

  按照 John Carmack 的承诺 Quake III Arena 也终于开源了!在 Id Software 的网站上下就能购下载到。

  不过似乎网上更流行的版本是从这里能够得到的一个名为 quake3-1.32b-.source.zip 的 5.45M 的压缩包,里面括了相对较全的内容,有 Q3A 的全部源码,lcc, q3asm, q3map 和 q3radiant 等工具的源代码。最主要的是它还包含了 vs.net 2003 的工程文件,使得编译变简单了许多。

  我最早就是用这个版本编译通过的,不过后来发现在官方网站上放出的版本和这个不太一样,本想想继续尝试编译后者,并且根据其结果来写这篇网志的,不过遗憾的是,按照说明上的指导,编译不能成功。会出现找不到文件的错误,估计是 Id 官方的编译器本身配置有些问题,我没看源码也没有深入研究,希望有兴趣的朋友能告诉我原因和解决办法。

  言归正传,其实这个版本里面的信息还是足够丰富的,很容易编译,只在个别地方有些小问题。不过我还要唠叨一下,我不是一个 Quake 玩家,所以对其中的很多术语不是很清楚,也不了解整个游戏的结构,只是出于好奇尝试了一下,有问题的话还请大家多多拍砖!

  代码结构

  从说明文件来看,这份代码主要包含了这些部分:

  •   code/Quake III Arena source code ( renderer, game code, OS layer etc. )
  •   code/bspcbot routes compiler source code
  •   code/gamegoverns the game, runs on the server side.
  •   code/cgamegoverns the client side of the game, runs on the client side.
  •   code/uihandles the ui on the client side.
  •   lcc/the retargetable C compiler ( produces assembly to be turned into qvm bytecode by q3asm )
  •   q3asm/assembly to qvm bytecode compiler
  •   q3map/map compiler ( .map -> .bsp ) - this is the version that comes with Q3Radiant 200f
  •   q3radiant/Q3Radiant map editor build 200f ( common/ and libs/ are support dirs for radiant )

  编译 Quake III Arena

  我指的是编译 Quake III 唯一的那个可执行文件。

  在 code 目录下面能够找到 quake3.sln 这个 vs.net 2003 的解决方案文件,你尽可以打开它看看到底都有些什么东西,不过我在这里只谈编译,所以就拿它当个黑盒,直接编译了。

  编译 Quake 需要 DirectX SDK 的支持,因为看游戏目录中包含的是 DirectX 7.0 所以我估计 7.0 的 SDK 就可以了,不过我仍然用了最新的 DirectX 9.0c 2005 年六月的那个版本,可以到微软的网站上去下载。不过我一直不理解的是,据说 Quake 是一个纯 OpenGL 的游戏,怎么它的编译要用到 DirectX 呢?无论如何安装好 DirectX SDK 之后,就可以编译了,不过在此之前要确保你的机器里已经安装了 vs.net 2003,并且 devenv.exe 这个文件在你的 path 环境变量中。(devenv.exe 就是 vs.net 集成开发环境的可执行文件,一般的安装目录在 %ProgramFiles%/Microsoft Visual Studio .NET 2003/Common7/IDE 里面。)打开命令窗口,进入 code 目录,运行命令:

  devenv quake3.sln /build release

  不出意外的话,编译会顺利完成,其中会有几个警告,不过不影响结果。之后你会在 release 目录中找到一大堆编译好的二进制文件,不过有用的似乎只有那个 quake3.exe。

  安装 Quake III Arena

  只是因为在 code 目录下面有一个 installrelease.bat 文件,所以这一步就姑且叫做安装吧。在进行这一步之前,还是要准备一下环境变量,将 code/win32/mod-sdk-setup/bin 这个路径加入到 path 中,因为需要用到 lcc 和 q3asm 两个编译工具。然后打开 intallrelease.bat 这个文件,注释掉最后一行和倒数第三行,并且将倒数第二行中的 "_ta" 和 "g:" 去掉,使得最后三行变为这样:

  rem call closefiles

  copy release/quake3.exe /quake3/quake3.exe

  rem call installvms

  为什么要这样做,仔细看看也就明白了。首先是根本就没有 closefiles.bat 这个文件,然后将 release 目录下的 quake3.exe 拷贝到根目录下的 quake3 子目录中。最后的 installvms.bat 只不过是做了一个移动操作,没有什么用处,因此只样改过的 intallrelease.bat 文件就可以很好的工作了。最后还要确保在根目录中没不存在 quake3 这样的目录。

  好了,这个时候,只要简单的执行一下这个文件,待结束后看看根目录下是否多了一个 quake3 的目录,里面包含了 baseq3 和 missionpack 两个子目录,具体的目录结果如下:

  


Quake3 --|
|
||-- cgame.map
||-- cgame.qvm
|-- baseq3 -- vm --|-- qagame.map
||-- qagame.qvm
||-- ui.map
||-- ui.qvm
|
||-- cgame.map
||-- cgame.qvm
|-- missionpack -- vm --|-- qagame.map
|-- qagame.qvm
|-- ui.map
|-- ui.qvm

  仔细的看一下输出的日志,就可以明白为什么会产生这些文件了。

  运行 Quake III Arena

  想必你已经能够猜到,只要运行 code 目录下的那个 runrelease.bat 就可以了。不过有两点要注意,这样运行 quake3.exe 需要两个参数,一个是 fs_basepath 是要指向 quake3 这个目录,而另一个 fs_cdpath 则需要指向 Quake III Arena 的原始光盘,因为需要从里面读取资源文件。保证这两个参数都没有问题了,你应该就能够看到熟悉的 Quake III Arena 的画面了,否则会出现 Couldn't load default.cfg 的错误。

  其他问题

  如果你在运行编译好的结果时出现了如下的问题 User interfaces is version 3, expected version 6,请到 Id 的官方网站去下载最新的 Point Release,安装之后就可以正常运行了。

  怎么样,还是足够简单的,至少比我想象的要简单,还是那句话,这只是一个黑盒编译,希望熟悉 Quake 游戏的人们能够深入的解释一下得到的结果,算是抛砖引玉了……

分享到:
评论

相关推荐

    Quake3 Arena 源代码

    现在,id Software兑现了自己的诺言:《Quake 3 Arena》完整源代码1.32b版(Quake 3 Arena Full Source Code v1.32b)已经公布,包括完整的游戏源代码、各种编译工具和Q3Radiant地图编辑器build 200f,大小为22.4MB...

    雷神之锤3 VC++完整源码(Quake 3 Arena)

    这不但另业界震惊,也让VC的FASN们异常兴奋,这套Quake 3 Arena Full Source Code v1.32b的源代码,不仅包含有完整版的游戏源码,另外还有各种编译工具以及Q3Radiant地图编辑器等,内容相当丰富哦。希望对有志于 3D ...

    游戏Quake3源代码

    现在,id Software兑现了自己的诺言:《Quake 3 Arena》完整源代码1.32b版(Quake 3 Arena Full Source Code v1.32b)已经公布,包括完整的游戏源代码、各种编译工具和Q3Radiant地图编辑器build 200f,大小为22.4MB...

    Quake-III-Arena:修复 Quake III arena 源以编译和实现。 自动化测试以查明源代码中的错误

    雷神之锤III竞技场 修复 Quake III arena 源以编译和实现。 自动化测试。 现在使用 VC12 Visual Studio 2013 社区版。

    quake3-1.32b-source(雷神之锤3源码)

    这不但另业界震惊,也让VC的FASN们异常兴奋,这套Quake 3 Arena Full Source Code v1.32b的源代码,不仅包含有完整版的游戏源码,另外还有各种编译工具以及Q3Radiant地图编辑器等,内容相当丰富

    《Quake 3 Arena v1.32》游戏源代码完整版

    这不但另业界震惊,也让VC的FASN们异常兴奋,这套Quake 3 Arena Full Source Code v1.32b的源代码,不仅包含有完整版的游戏源码,另外还有各种编译工具以及Q3Radiant地图编辑器等,内容相当丰富哦。  

    VC 仿写的CS游戏 Quake 3D场景.rar

    VC 仿写的CS游戏 3D场景,《Quake 3 Arena》大型3D游戏完整源代码,一套仿CS的VC 游戏源码,包括完整的游戏源代码、各种编译工具和Q3Radiant地图编辑器build 200f,大小为22.4MB(压缩包大小5.46MB)。

    Q_rsqrt_Unity:Quake III Arena:Unity中的快速逆平方根

    由于我一直对中的Quake III引擎( )感兴趣,因此我是迷信的迷,因此我认为将其用于UnityEngine很有趣。 除了是否有意义,我只是想尝试一下。 因此,我开始了实验。安装视窗下载适用于Windows的,或者根据需要自己...

    Q3VM-用于C语言输入的单个文件(vm.c)字节码虚拟机/解释器-C/C++开发

    Q3VM自述文件一种轻量级...解释器基于Quake III Arena虚拟机(因此命名为q3vm),但是该解释器与Quake III Arena没有关系,可以用于任何类型的项目。 例如,需要在沙箱中运行的代码。 ___ _______ ____ __ / _ \ | ___

    quetoo:Quetoo(“ Q2”)是基于id Tech2的免费第一人称射击游戏。 GPL v2许可证

    Deathmatch,Capture,Instagib,Duel和Rocket Arena游戏模式 团队比赛和比赛模式支持 id Software传奇的Quake II死亡竞赛级别以及原版的高质量翻拍 和原创声音和游戏音乐。 100%免费下载,播放和修改。 请参阅...

    ioq3-renderer-bgfx:使用bgfx的ioquake3渲染器

    编译中premake5 gmake如果premake5在您的PATH中)。 否则,。/ ./bin/premake5 gmake使用./bin/premake5 gmake的本地副本。 生成的makefile被写入build 。Linux需求软件包:libgl1-mesa-dev libsdl2-dev Cygwin / ...

Global site tag (gtag.js) - Google Analytics