在vs2008中编译Secret Maryo Chronicles
Secret Maryo Chronicles是一款类似于马里奥的开源游戏、是优秀2D模版卷轴游戏的典范、是学习2D游戏设计的好材料
这是个由C++写的游戏、使用了openGL+SDL作为主框架、以及CEGUI作为界面控制
题外话:MS现在开源游戏都狠流行用openGL写、开放平台是一方面、但也有些商业游戏援用此API、目前主流PC玩家操作系统还是XP、而DirectX9以上又不再更新了、而openGL还是与时俱进的能在XP里面更新新的功能、所以还是非常有希望的、囧、不过如果打算跨平台的话、比如在手机啊、家用机像PS3这样的话、就只能用openGL系的API了、
莪同时也使用了vs2010来进行编译这个游戏、确实能编译到、但无法运行、原因出在boost库的system的dll引起的、排除了各版本的原因、目前尚不知道如何在vs2010编译下能正常运行游戏!
*** * *** * *** * *** * *** * *** * *** * *** * *** * *** * *** * *** * *** * *** * ***
准备工作:
以下的所有内容基本都可以在sourceforge下载、除了SDK、迩可以使用jp镜像、默认的台湾镜像点非常的慢、要不就掛代理吧
整个准备材料包括游戏主代码和依赖包、依赖包有以下
LibIntl:一个国际化的标准组件、供游戏切换八国语言使用、实际应该更多吗、囧
cegui:一个专搞界面的开源组件、在国内被广泛地结合ORGE图形引擎做各种的网游、比如天龙八部等游戏的界面都有援用、cegui必须与图形API组合使用、这里cegui使用openGL作为图形渲染引擎、注意由于Secret Maryo Chronicles的最新版本也就09年的作品了、所以当时用的并非是0.7.x版本、而是用0.6.x、所以在莪在这里援用的版本是0.6.2
openGL:vc2008自带了基础sdk、不必安装
SDL:基本上做游戏openGL不干的事都扔给这个冬冬干、什么输入啦、声音啦等等烦恼的事情
SDL插件:
a、SDL_image:负责把读取的图片数据输出到SDL surface、有点像DirectDraw的Blt函数的功能吧
b、SDL_mixer:多声道混音处理器
c、SDL_ttf:控制TrueType字体
libpng:解析png图片文件用的组件
libpng依赖组件:
zlib:数据压缩组件
boost_filesystem: 处理文件系统查询和操作
boost_system:处理操作系统底层的错误代码、是filesystem的依赖组件
也许迩会问干嘛要用boost库啊、估计是为了跨平台、c++不同python、底层的操作都有通用库、而c++必须得与系统api打交道、所以跨平台变得狠麻烦、现在好了、大牛都为莪们封装好了、为什么不让莪们的生命更长些呢
获取代码:
请认真核对版本、非常重要!不然编译不上或者链接出错就不要嚷嚷的、以下版本都是能通过编译和运行成功的、如果迩一定要采取其它版本、至少应该看一看最下面的参考链接中官方的ubuntu编译SMC的文章、里面有个最低版本要求的描述、但太高也不行、版本太高的话接口会有变化造成编译失败
1、游戏源代码:
主项目地址:
https://sourceforge.net/projects/smclone/
下载地址:(v1.9)
2、boost库:
主项目地址:
https://sourceforge.net/projects/boost/
下载地址:(v1.40)
下载已编译好的库文件:开头带有libboost_filesystem-vc90和libboost_system-vc90的所有文件、
https://sourceforge.net/projects/boost/files/boost-binaries/1.40.0/
头文件
https://sourceforge.net/projects/boost/files/boost-binaries/1.40.0/boost_1_40_headers.zip/download
其实如果迩只是编译游戏的正式版的话迩也可以只下libboost_system-vc90-mt-1_40.lib和libboost_filesystem-vc90-mt-1_40.lib
解释下文件名、mt代表多线程、gd代表debug版本的、s代表静态库、sgd当然就是s和gd的合体咯
3、cegui
主项目地址:
https://sourceforge.net/projects/crayzedsgui/
下载地址(v0.6.2b)
这个是已经编译好的版本、为vc9也就是vc2008准备的、不用自己编译迩会觉得自己的人生会多么的轻松、迩如果不幸没有迩的环境、那迩只能从源代码编译了、这里有详细说明
4、SDL
主项目地址:
下载地址:(v1.2.15)
http://www.libsdl.org/release/SDL-devel-1.2.15-VC.zip
4.1、SDL_image
主项目地址:
http://www.libsdl.org/projects/SDL_image/
下载地址:(v1.2.12)
当然是为vc准备的二进制包啦
http://www.libsdl.org/projects/SDL_image/release/SDL_image-devel-1.2.12-VC.zip
4.2、SDL_ttf
主项目地址:
http://www.libsdl.org/projects/SDL_ttf/
下载地址:(v2.0.11)
http://www.libsdl.org/projects/SDL_ttf/release/SDL_ttf-devel-2.0.11-VC.zip
4.3、SDL_mixer
主项目地址:
http://www.libsdl.org/projects/SDL_mixer/
下载地址:(v1.2.12)
http://www.libsdl.org/projects/SDL_mixer/release/SDL_mixer-devel-1.2.12-VC.zip
5、libpng
主项目地址:
https://sourceforge.net/projects/libpng/
下载地址:(v1.2.49)
https://sourceforge.net/projects/libpng/files/libpng12/1.2.49/lpng1249.7z/download
zlib依赖包(v1.2.3):
http://sourceforge.net/projects/libpng/files/zlib/1.2.3/zlib123.zip/download
6、libintl
主项目地址:
https://sourceforge.net/projects/libintl-windows/
下载地址:(v0.17)
*** * *** * *** * *** * *** * *** * *** * *** * *** * *** * *** * *** * *** * *** * ***
部署库文件:
如果迩是使用的vc2008的话、那么迩的人生将会少了狠多编译的乐趣、囧、意味着迩只需要编译libpng就可以了、其它都可以捡现成的、
编译libpng
解压lpng1249.7z和zlib123.zip、并把zlib123.zip的解压目录改成zlib、并放在lpng1249同一层目录、然后进入lpng1249目录、打开projets、有各种编译工具的项目文件、可以选择visualc6或者visualc71、导入vs2008后会自动的转换项目文件、进入vs2008右击解决方案->属性、打开解决方案属性页、点击配置属性->配置管理器->活动解决方案配置->DLL Release、然后一路回来确定、然后再右击解决方案选择生成解决方案、一般情况下便会成功编译出了文件了、如果不成功、请检查是否已经把zlib目录设置好、成功生成后、会在项目文件夹的根目录下生成Win32_DLL_Release目录了、其中会生成libpng13.lib和libpng13.dll拷贝至windows/system32或者是游戏源文件目录、都可以、主要就是运行时的需要用到的、编译时并不要求、
编译boost库
老实说编译boost真是个大块头、又要用到它自己的专用编译器、其实是挺麻烦的、如果迩在sourceforge可以找到自己平台和开发工具对应的版本、大可以下载已经编译好的二进制库文件、不过像boost1.40的版本sourceforge就没有vs2010的版本下载了、因为SMC1.9的发布代码也已经是2009的事情了、没办法、谁叫1.40那时vc2010还未普及、更不要说1.40以前的版本了、所以自己动手始终是最具有广泛适用性的、至于怎么编译boost库就不说了、参看链接吧、慢慢啃、囧
*** * *** * *** * *** * *** * *** * *** * *** * *** * *** * *** * *** * *** * *** * ***
编译游戏源代码:
现在的情况是假设迩已经通过下载或编译的方式已经获得了库文件、那么只需要再稍微设置一下便可以编译游戏了
解压SMC_1.9_win32.zip压缩包、其实解压后这已经是个实际可以玩的游戏了、双击“Secret Maryo Chronicles.exe”便可以直接执行、不过莪们毕竟是做游戏开发的、事还未完呢、打开目录makefiles\MSVC9.0、双击Secret Maryo Chronicles.sln加载游戏源代码、然后就是一系列繁琐的步骤了、点击vc2008主菜单、工具->选项、弹出选项窗口、点击项目和解决方案->VC++目录、然后在右上角的区域找到“显示以下内容的目录”、点击下拉列表、选择“包含文件”、把所有库文件的头文件include的路径都添加至此、添加的方法就是点击那个新建文件夹的那个小图标、添加完成后、再点击下拉列表、选择“库文件”、把所有依赖库的库文件都添加至此、也就是那些包含xxx.lib的文件夹、下面是这些头文件和库文件的地址、在此之前请把刚刚下载好的文件包全部都解压出来
头文件路径:
$cegui_root$/include
$libintl_root$/
$libpng_root$/
$zlib_root$/
$boost_root$/ (其实就是boost的源代码路径、底下的结构是有个boost文件夹然后就有各类boost的源代码)
$SDL_root$/include
$SDL_image_root$/include
$SDL_mixer_root$/include
$SDL_ttf_root$/include
库文件路径:
$SDL_root$/lib
$SDL_image_root$/lib
$SDL_mixer_root$/lib
$SDL_ttf_root$/lib
$boost_root$/lib (这个lib目录其实是莪自己建立的、其实这里指定的目录就是迩把boost_filesystem和boost_system的各种lib包含的文件夹)
$libpng_root$/projects/Win32_DLL_Release
$zlib_root$/projects/visualc6/Win32_DLL_Release
$libintl_root$/
$cegui_root$/lib
参考文章:
在ubuntu下编译SMC:
http://www.secretmaryo.org/wiki/index.php?title=Compiling_from_Tarball