转载地址:http://www.cnblogs.com/vincent2600/archive/2011/09/12/2174056.html
如果不去读quake3代码,作为一个游戏程序员是说不过去的,现在去读还不晚,肯定会碰到很多问题,解决问题的过程就是练级。
hacking之前,首先是建立环境,运行调试环境。quake3是99年推出的,到现在已经十二年了,网上能找到一些关于quake3编译运行的只言片语
但都不可行,自己只有基于这些再加上自己试验,make it works!
在开始之后,需以下几个文件.
1.Quake 3 Demo版(我们需要里面的资源相关的东西)
ftp://ftp.idsoftware.com/idstuff/quake3/win32/Q3ADemo.exe
2.Quake 3 源代码
ftp://ftp.idsoftware.com/idstuff/source/quake3-1.32b-source.zip
3.Quake 3 发行版q3pointrelease_132.exe(单纯照其他网上的步骤,只使用demo资源始终要报错)
进入正题.
1.打开代码下/code/quake3.sln,直接编译,不出意外会报错:
ui.def : error LNK2001: unresolved external symbol vmMain
将solution configuration从Debug Alpha改为Debug,OK!
2.关键这样还不是很好,因为这样直接把生成的quake3.exe拿去运行会有问题:
打开"quake3"工程中的files.c,注释 第3263,3264,3266三行,如下
// if ( FS_ReadFile( "default.cfg", NULL ) <= 0 ) {
// Com_Error( ERR_FATAL, "Couldn't load default.cfg" );
// bk001208 - SafeMode see below, FIXME?
// }
然后,将files.c中的tatic void FS_SetRestrictions()函数的全部内容注释,仅剩下如下的空壳函数
static void FS_SetRestrictions( void ) {
}
3.安装Quake 3 Demo版的Q3ADemo.exe和Quake 3发行版q3pointrelease_132.exe,到C:盘的根目录,安装后分别为C:\3Ademo与C:\Quake III Arena,
将C:/Q3Ademo/demoq3目录下的pak0.pk3文件复制到C:/Quake III Arena/baseq3 目录下
4.接下来就是用vs进行跟踪调试的关键步骤:
change quake3 project property -> Linker -> output file C:\Quake III Arena\quake3.exe
change quake3 project property -> Debugging -> Command $(TargetPath)
change quake3 project property -> Debugging -> Command $(TargetDir) //C:\Quake III Arena
5.现在,前往金银岛的船已经好了,Let's Hack !
| | |
)_) )_) )_)
)___))___))___)\
)____)____)_____)\\
_____|____|____|____\\\__
---------\ /---------
^^^^^ ^^^^^ ^^^^ ^^^^^^^ ^^^^^ ^^^