注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Code@Pig Home

喜欢背着一袋Code傻笑的Pig .. 忧美.欢笑.记忆.忘却 .之. 角落

 
 
 

日志

 
 

[转] 编译 doom3 source  

2012-02-22 10:48:56|  分类: 3d_doom3 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
win32

mac

-----------

Doom3 源码下载地址:
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 Settings\yourusername\Local Settings\Application Data\Microsoft\MSBuild\v4.0 下的文件:
Microsoft.Cpp.x64.user.props
Microsoft.Cpp.Win32.user.props
Microsoft.Cpp.Itanium.user.props
不这么做的话,编译会出现无数莫名错误...如:c:\program files\microsoft sdks\windows\v7.0a\include\ktmw32.h(192): error C2061: syntax error : identifier 'PTRANSACTION_NOTIFICATION'可能和预编译头文件有关。

2. 修改neo/sys/win32/win_input.cpp中的字符 '?  -> '?'
应该是文件编码问题,不过由于那几个国家的Input接口用不着,所以直接这么改没问题。

3. 修改neo/framework/FileSystem.cpp中
idCVar    idFileSystemLocal::fs_basepath( "fs_basepath", "", CVAR_SYSTEM | CVAR_INIT, "" );
->
idCVar    idFileSystemLocal::fs_basepath( "fs_basepath", "H:\\yourfolder\\doom", CVAR_SYSTEM | CVAR_INIT, "" );
即:设定Doom3的basepath,以后资源文件等就从这里读取。
若不这么改,会找不到 default.cfg,并出现如下错误:
...
"build\Win32\Release\TypeInfo.exe"
:VCEnd" exited with code -1."
...

4. 修改DoomDLL的debugger command argument
set fs_basepath "H:\CSYSVN_Checkout\CSYRD\myResearch\doom3\doom"

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服务器。(Dedicated Release运行后有一个蓝色的命令行窗口,如果没有error信息的话,貌似可以spawn服务器。之前一直纠结于Dedicated Release跑不起来,浪费了不少时间...)
真正能运行的版本是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
  评论这张
 
阅读(1554)| 评论(2)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017