原文地址:http://www.8844.com/article/d/293423.html
| ||||||
按照 John Carmack 的承诺 Quake III Arena 也终于开源了!在 Id Software 的网站上下就能购下载到。 不过似乎网上更流行的版本是从这里能够得到的一个名为 quake3-1.32b-.source.zip 的 5.45M 的压缩包,里面括了相对较全的内容,有 Q3A的全部源码,lcc, q3asm, q3map 和 q3radiant 等工具的源代码。最主要的是它还包含了 vs.net 2003的工程文件,使得编译变简单了许多。 我最早就是用这个版本编译通过的,不过后来发现在官方网站上放出的版本和这个不太一样,本想想继续尝试编译后者,并且根据其结果来写这篇网志的,不过遗憾的是,按照说明上的指导,编译不能成功。会出现找不到文件的错误,估计是Id 官方的编译器本身配置有些问题,我没看源码也没有深入研究,希望有兴趣的朋友能告诉我原因和解决办法。 言归正传,其实这个版本里面的信息还是足够丰富的,很容易编译,只在个别地方有些小问题。不过我还要唠叨一下,我不是一个 Quake玩家,所以对其中的很多术语不是很清楚,也不了解整个游戏的结构,只是出于好奇尝试了一下,有问题的话还请大家多多拍砖! 代码结构 从说明文件来看,这份代码主要包含了这些部分:
编译 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.net2003,并且 devenv.exe 这个文件在你的 path 环境变量中。(devenv.exe 就是 vs.net集成开发环境的可执行文件,一般的安装目录在 %ProgramFiles%\Microsoft Visual Studio .NET2003\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 两个子目录,具体的目录结果如下:
运行 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, expectedversion 6,请到 Id 的官方网站去下载最新的 Point Release,安装之后就可以正常运行了。 怎么样,还是足够简单的,至少比我想象的要简单,还是那句话,这只是一个黑盒编译,希望熟悉 Quake游戏的人们能够深入的解释一下得到的结果,算是抛砖引玉了…… |