在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

https://sourceforge.net/projects/smclone/files/Secret%20Maryo%20Chronicles/1.9/SMC_1.9_win32.zip/download

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准备的、不用自己编译迩会觉得自己的人生会多么的轻松、迩如果不幸没有迩的环境、那迩只能从源代码编译了、这里有详细说明

https://sourceforge.net/projects/crayzedsgui/files/CEGUI%20Mk-2/0.6.2/CEGUI-SDK-0.6.2b-vc9.zip/download

 

4、SDL

主项目地址:

http://www.libsdl.org/

下载地址:(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)

https://sourceforge.net/projects/libintl-windows/files/gettext%200.17%20based/developer%20files%20and%20samples/libintl-0.17-windows-3.zip/download

 

 *** * *** * *** * *** * *** * *** * *** * *** * *** * *** * *** * *** * *** * *** * ***

部署库文件:

如果迩是使用的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

posted @ 2012-06-14 17:37  klobodnf  阅读(764)  评论(0编辑  收藏  举报