CrazyEggsClone总结介绍
CrazyEggsClone总结介绍
kevin lynx
Crazy Eggs Clone虽然只是一个克隆(我使用了原版游戏的美术和音乐资源),但是,可以说这个游戏是我目前为止完成度最高的游戏。可以说,在完成度这一点上,它比之前的Brick Shooter Jr更高!
Crazy Eggs Clone使用Popcap Framework引擎。在这个游戏开发前,我接触这个引擎只有4天时间。可以说,这个游戏就是我用来练习使用这个引擎的。4天时间里加上关卡编辑器的话,总共代码达到了6000多行。而曾经的Brick Shooter Jr 4000多行代码用了我6天时间。我想这主要是因为Crazy Eggs这个游戏难度要小些,虽然其各方面需要处理的东西比Brick Shooter Jr要多。
在Brick Shooter Jr完成后,正是06年10月分,我花了整整一个月时间在一个画面很精美的卷轴游戏的clone上。读过一些老外写的教程,本来打算翻译一些的,可是时间原因,还是只有放弃这个想法。(国内有教DX的,OPENGL的,却没有教一种类型游戏的开发的)这期间还接触了Game Monkey在游戏中的应用,XML在游戏中的应用,以及更多的OOD,OOA知识。这个clone后来失败了。然后间断着,学了一些面向对象软件工程的知识,又用一周做了一个小一点的横版卷轴游戏,不过只是个DEMO,纯碎用来练习面向对象开发的DEMO。然后慢慢地准备考试。然后还学习了JAVA。12月底的时候花了20个小时给别人写了个小游戏,写了3000行代码。游戏不难,代码难度不大。这个3000行代码的东西居然没怎么调试!内存泄露的一系列恶心问题居然没出现过!(Crazy Eggs Clone里都出现了一些)
然后,我陷入完全的感情泥淖,还有考试的郁闷,整个12月简直活的郁闷!
考完试,已经07年1月中旬,马上接触Popcap Framework。然后做了这个practice。
一些经验感想必须得记录下来:
1. 一个框架在有些时候会比一个引擎好!框架可以引领你做架构时变得更为容易,它还会教会你一些好的设计方式。而引擎呢?引擎提供给外面的是接口,当然你可以象使用框架那样去继承其中的类来实现扩充,但是引擎并没有“引领”这个作用!拿Popcap Framework和HGE来对比。Popcap里有widget的概念,很多东西都可以看做widget:游戏主控制器(通常被我设计为CGame类),渲染器(被我设计为CRenderMgr类),都可以看做widget。而一旦你设计了 widget ,你就可以让Popcap的widget manager 帮助你做很多事情。也就是说,Popcap真的是一个框架,框架需要你做的就是往里面填东西,而且是必须填。你不填程序就建立不起来。于是乎,你就必须得继承SexyAppBase类,必须得继承Widget类,继承后就必须实现在这些接口里填入实际的内容。填入完毕后,那么,你的游戏(程序)就建立起来了。所以说,框架具有引领你帮助你做架构设计的作用。
而引擎呢?以HGE为例,HGE提供给你核心模块的引用指针(hgeCreate),你通过该指针调用一些函数来实现你要做的事情,检测输入啦,渲染图片啦之类的。但是,HGE不让你创建核心模块的实例-----你不能new一个对象出来。你也没必要去继承HGE提供你的一些类,即使是有些辅助类。即使继承,你也只是扩充功能而已。这并不是必须的。换句话说,引擎提供给你的是工具,是方法。但不会规定你做什么?不规定你做什么,你设计(架构)时,灵活性就大,随便你怎么架构!可是,就是因为不限制你去架构你的程序,才使的你在做架构时更为困难。(高手例外)
框架中的设计思想也值得学习,例如Popcap的widget概念。可以想象,游戏世界中各种对象,基本上都包含逻辑更新和渲染的行为。所以Widget就提供了Update和Draw函数----要求你去重载,填入实际代码(当然框架为了方便用户会填入一些基本的代码)。这其实在HGE中也有体现,HGE中很多类(基本上所有辅助类)都包含Update和Render函数!
2. 程序在调试模式下会崩溃。这可能是开发包的原因,有些东西需要我做一些设置,但是可能我没做。游戏发布后,我测试了很多次,release模式下都没问题。错误应该是开发包的调试设置我没做。总之,无论如何写程序需要我更严密的思维才行!指针方面,分配了的内存就要对应释放,等等一类的问题。
3. Crazy Eggs Clone的连连看寻路算法我自己想了一个。不是那种单纯地靠搜索来寻求答案。恩,有规律可寻的。速度比一般的递归(或者转换过来的迭代)快多了!
简单地说下这种算法(用于连连看游戏):玩家选定两个点后,过两个点分别做横着的和竖着的平行线段,线段以遇到不可走的地方为端点,于是我们得到两条线段,然后就检测这两条线段是否能连通即可。
ps:
Crazy Eggs Clone下载:要源代码的mail我(zmhn320@163.com):
http://blog.blogwhy.com/azjex/upload/crazyeggs.part1.rar
http://blog.blogwhy.com/azjex/upload/crazyeggs.part2.rar