Warzone2100 (http://wz2100.net/home)是一个开源RTS游戏。
可参照官方wiki:
MSVC下编译Warzone2100【1】(http://wiki.wz2100.net/Windows_Compile_Guide_%28MSVC%29)
完成如下步骤:
1.下载src,dependence(到官方(http://wz2100.net/home)下载warzone2100- 2.1_beta2.tar.bz2(源代码)和warzone2100-devpkg-2.1-msvc80-20080113.7z (dependences libs)
)
2.安装flex2.5,bison1.8,(本人安装在H:/Program Files/GnuWin32,并将H:/Program Files/GnuWin32/bin加入环境变量path中(当前用户的环境变量就可以))
在VC下如何启用flex、bison,可参见http://msdn2.microsoft.com/en-us/library/aa730877(VS.80).aspx
3.解压warzone2100-2.1_beta2.tar.bz2至SRC_ROOT(例如J:/dev/warzone2100/warzone2100_src)。解压后SRC_ROOT含有AUTHORS,COPYING等文件
4.解压warzone2100-devpkg-2.1-msvc80-20080113.7z至SRC_ROOT。解压后应有SRC_ROOT/devpkg/include这样的目录结构。
5.后续编译会发现SRC_ROOT/devpkg/include中缺少文件。解决方法如下:
参照【2】(http://download.gna.org/warzone/development/devpkg/2.1/msvc80/)页面下方,其说明了dependences中的各个库的版本,
可以在【3】(http://sourceforge.net/project/showfiles.php?group_id=23617)下载【2】中的各个库,libpng-1.2.24-setup.exe,zlib-1.2.3.exe,libvorbis-1.2.0 (http://xiph.org/downloads/),libogg-1.1.3 (http://xiph.org/downloads/)
将相应的头文件拷贝到SRC_ROOT/devpkg/include/目录下,最终SRC_ROOT/devpkg/include/目录结构应该如下:
./
│ physfs.h
│ png.h
│ pngconf.h
│ popt.h
│ poptdll.h
│ zconf.h
│ zlib.h
│
├─AL
│ al.h
│ alc.h
│ efx-creative.h
│ EFX-Util.h
│ efx.h
│ xram.h
│
├─GL
│ glc.h
│ glew.h
│ glxew.h
│ wglew.h
│
├─ogg
│ config_types.h.in
│ Makefile.am
│ Makefile.in
│ ogg.h
│ os_types.h
│
├─SDL
│ ****(SDL各个头文件,无需改动,故此处省略)
│
└─vorbis
codec.h
Makefile.am
Makefile.in
vorbisenc.h
vorbisfile.h
可下载【P1】《编译warzone2100.2.1beta2.rar》,覆盖source code 2.1beta2即可。
6.打开SRC_ROOT/wind32/Warzone2100.sln,开始编译。
(---------可选----------
如果想在vc下调试,Ctrl+F5直接执行的话,可以作如下设置:
(debug mode )
Warzone2100属性页-》配置属性-》链接器
输出文件:$(OutDir)/$(ProjectName)d.exe
Warzone2100属性页-》配置属性-》调试
命令:$(ProjectName)d.exe
工作目录:J:/dev/warzone2100/warzone2100_src/data
(即运行J:/dev/warzone2100/warzone2100_src/data/Warzone2100d.exe,而exe所在目录正好是 data目录,所以“命令参数”栏省略了(官方说需要带命令行参数‘--datadir XXX’ 以指定data目录XXX)。)
(release mode )
Warzone2100属性页-》配置属性-》链接器
输出文件:$(OutDir)/$(ProjectName)r.exe
Warzone2100属性页-》配置属性-》调试
命令:$(ProjectName)r.exe
工作目录:J:/dev/warzone2100/warzone2100_src/data
即运行J:/dev/warzone2100/warzone2100_src/data/Warzone2100r.exe,
此步骤中,如果有问题,可尝试重新生成Warzone2100.vcproj即可。
(【P1】中包含了此修改)
---------------------)
编译链接可能会遇到如下问题:
1)
bison.exe不是外部命令,也不是内部命令
解决方法:
安装bison-1.875-4.exe到H:/Program Files/GnuWin32/bin
进入MSVC-》工具-》选项-》项目和解决方案-》VC++目录
在“可执行文件”目录下添加:
H:/Program Files/GnuWin32/bin
2)
Main.obj link error:无法解析的外部符号_initI8n,
Main.obj link error:无法解析的外部符号_getLanguage
解决方法:
在framwork.vcproj中添加
SRC_ROOT/lib/framework/i18n.h
SRC_ROOT/lib/framework/i18n.c
(2.1beta工程中没有添加这两个文件,导致link error)
(【P1】中包含了此修改)
7.
开始编译、链接。编译连接的最后阶段,会自动将Warzone2100.exe拷贝到SRC_ROOT/data/目录下。
8.运行前的配置
warzone2100.exe需运行在SRC_ROOT/data/目录下,
拷贝SRC_ROOT/devkpg/lib/*.dll 到SRC_ROOT/data/
搜索vc目录下的dbghelp.dll,msvcp80d.dll,msvcr80d.dll,并拷贝到SRC_ROOT/data/
拷贝SRC_ROOT/devpkg/lib/etc 到SRC_ROOT/data/etc
按照【4】(http://wiki.wz2100.net/Compile_Guide)给出的地址【5】(http://dejavu.sourceforge.net/),
下载dejavu-fonts-2.24.zip,
dejavu-fonts-ttf-2.24.zip,
dejavu-sans-ttf-2.24.zip,
dejavu-lgc-fonts-ttf-2.24.zip,
将这些压缩包中的*.ttf拷贝到%system%/fonts目录下(windows2000的%system%/fonts=C:/WINNT/Fonts)
运行,应该OK.
可以通过IRC和开发者及时交流,他们在IRC里比较活跃.【5】(http://wz2100.net/chat)