https://github.com/TTimo/doom3.gpl
官方的README写的很简略,以下是我在WinXP上编译Doom3遇到的问题和解决方法:
准备:
1. Microsoft Visual Studio 2010 旗舰版 + SP1
2. Microsoft DirectX SDK (June 2010)
3. Doom3原版游戏(非资料片,必须1.3.1版)
注意事项:
1. 安装完VS2010+SP1后,先删除C:Documents and SettingsyourusernameLocalSettingsApplication DataMicrosoftMSBuildv4.0 下的文件:
Microsoft.Cpp.x64.user.props
Microsoft.Cpp.Win32.user.props
Microsoft.Cpp.Itanium.user.props
不这么做的话,编译会出现无数莫名错误...如:c:program filesmicrosoftsdkswindowsv7.0aincludektmw32.h(192): error C2061: syntax error: identifier 'PTRANSACTION_NOTIFICATION'可能和预编译头文件有关。
2. 修改neo/sys/win32/win_input.cpp中的字符 '?-> '?'
应该是文件编码问题,不过由于那几个国家的Input接口用不着,所以直接这么改没问题。
3. 修改neo/framework/FileSystem.cpp中
idCVaridFileSystemLocal::fs_basepath( "fs_basepath", "", CVAR_SYSTEM |CVAR_INIT, "" );
->
idCVaridFileSystemLocal::fs_basepath( "fs_basepath","H:\yourfolder\doom", CVAR_SYSTEM | CVAR_INIT, "" );
即:设定Doom3的basepath,以后资源文件等就从这里读取。
若不这么改,会找不到 default.cfg,并出现如下错误:
...
"buildWin32ReleaseTypeInfo.exe"
:VCEnd" exited with code -1."
...
4. 修改DoomDLL的debugger command argument
set fs_basepath"H:CSYSVN_CheckoutCSYRDmyResearchdoom3doom"
5. 设置DoomDll项目DirectX include和lib路径。
(发现如果不设置好像Release也能编译过,但会跑到OpenGL里去,总之加一下吧...)
6. Doom3 source code提供了以下几个版本
Debug
Debug with inlines
Debug with inlines and memory log
Dedicated Debug
Dedicated Debug with inlines
Dedicated Release
Release
Release
默认是Dedicated Release,但是这个版本编译出来是不能运行的。不过,可以spawn服务器。(DedicatedRelease运行后有一个蓝色的命令行窗口,如果没有error信息的话,貌似可以spawn服务器。之前一直纠结于DedicatedRelease跑不起来,浪费了不少时间...)
真正能运行的版本是Debug和Release
我这里的情况是:Release可以正常进入游戏,也可以打Trace;Debug版本也能进入游戏,不过Loading界面运行到一半会黑屏,具体原因未知。(不过问题不是非常大,大家跑起来后主要研究其代码架构,不是修BUG,等需要时再说吧!今天又跑了一下发现又没问题了,可能是CDKEY的问题)
7. 如何跳过CDKEY检测
修改neo/framework/Session.cpp
找到bool idSessionLocal::CDKeysAreValid( bool strict )
设置cdkey_state = CDKEY_OK
8. 发现Debug版本上,如果不关闭EmbedManifest会编译不过,不管他,关掉!
9. 如果要联网玩的话 命令行里一定要有 +set si_pure 0
最后,别忘了把资源文件拷贝到base目录下(就是你之前用fs_basepath指定的目录下的base目录),
资源文件列表:
default.cfg
game00.pk4
game01.pk4
game02.pk4
game03.pk4
pak000.pk4
pak001.pk4
pak002.pk4
pak003.pk4
pak004.pk4
pak005.pk4
pak006.pk4
pak007.pk4
pak008.pk4
另外,在MacOSX上,我也试过,相对简单直接用XCode编译就行了。
好了,到这里大家应该可以自己Debug Doom3了

更多的参考:
http://fabiensanglard.net/doom3_macosx/index.php
http://www.doom3world.org/phpbb2/viewtopic.php?f=40&t=25120&st=0&sk=t&sd=a&start=40