您的位置:首页 > 其它

Windows Phone 7范例游戏Platformer实战2——游戏设计初步

2010-12-08 20:12 288 查看
Platformer和“马里奥”的非常类似,玩法基本上差不多,只是游戏目前很多功能暂未实现。Platformer的主要目前就是要控制英雄躲开游戏中的所有僵尸怪,我们要在这些僵尸的干扰下用最短的时间收集宝石。每个关卡所花费的时间越短、收集的宝石越多,那么你在游戏中的成绩越高。唯一遗憾的是Platformer没有美女等待我们的拯救,但是无所谓,我们可以在后续开发过程中DIY一个。

Platformer听起来似乎简单的不能再简单,但是所谓金字塔不是一天建成的。Platformer麻雀虽小,但是五脏俱全。因为我们在游戏开发中的大部分技能都在这个游戏中得到了体现,动画处理、声音加载、触控、键盘的输入、碰撞检测、游戏地图解析等是应有尽有。

Platformer的主要特性这里归纳如下:

支持Windows Phone 7、XBOX 360、PC的跨平台,游戏无需任何的代码修改就可以无缝在三者间运行。
支持键盘、游戏摇杆控制游戏主角的移动和跳动,此外在Windows Phone 7平台上则是使用加速度传感器和触摸屏来控制主角的移动和“上蹦下跳”。
实现了下降和跳跃、动态碰撞等几种简单的场景模型,初步实现了真正场景的防真。
实现了对音频、动画图片、地图资源的加载和解析
实现了高分辨率和低分辨的自动转换,游戏画面可以适应不同屏幕大小的设备。

目前微软给这款游戏添加了不少伏笔,只待各位进一步挖掘和完善。轩辕就发现在Platformer中僵尸怪也不是无敌金身,只要额外添加一些代码,英雄就可以在收集到一定量的宝石后即可启动无敌变身状态,真可谓是“遇佛杀佛,见鬼收鬼”。至于更变态的实现还是期待各位读者自己丰衣足食,这里就不复读机了。

Platformer游戏由十数个类组成。各个功能类之间没有牵涉到继承等关系,因此可以说每个类都具备自己独立的功能。轩辕会在后续的开发中对代码进一步完善,使游戏的扩展性更强,比如说场景滚动效果就会在后续课程中完成。下面是Platformer的对象解析图:



现在对Platformer中的13个类的中心思想分别概述下:

1:PlatformerGame类,它是整个游戏的控制中心,除了告知游戏中所有的对象什么时候响应和显示外,还负责内容管道和关卡的加载,以及游戏中各种对象的更新。可谓是劳苦功高

2:Level类 ,它是游戏的关卡类。每个关卡对象包含了一个用于存放场景瓷砖信息的多维数组,英雄、游戏开始和结束位置的坐标、总分数、游戏剩余时间、一系列宝石和僵尸怪的信息。

3:Player类用于实现英雄的加载、绘制和更新操作。 

4:Enemy类,负责僵尸怪的加载、绘制和更新操作。

5:Gem类在游戏中实现一个悬浮在空中的宝石,不同类型的宝石所含的分值也不相同。英雄的主要任务就是收集这些宝石。有关宝石的加载、绘制和更新也由Gem类负责。

6:Tile 结构。Tile如同我们现实中的瓷砖一样,我们可以在每个Tile中包含一个游戏元素,这样就可以拼接成我们期望的游戏场景。在Platformer游戏中我们用这些Tile构成形成关卡的场景图。

7:Animation类,望文生义,当然是游戏候中不可或缺的动画类,它主要是解析游戏中包含的众多Sprites(精灵)图片,以实现动画的帧分解。

8: AnimationPlayer类实现了将Animation类定义的精灵图片中的每一帧形成连贯的动画。

9:Circle类专门只用于Gem类的,它定义了一个包围Gem的圆,以实现主角和宝石的碰撞检测。

10:RectangleExtension累是Rectangle的一个扩展静态类,同样由于碰撞检测。

11:Program是所有XNA项目的启动类,也是程序的入口。

12:TouchCollectionExtensions类是针对WP7的触摸屏输入而实现的一个扩展类,以检测触摸屏是否存在触点。

13:Accelerometer类对WP7中的加速度传感器做了封装,左右倾斜手机可以实现主角向左或向右的移动。

游戏执行流程:

在还未开始编程之前,先来概要说明下游戏的执行流程。

1 在开始一个新关卡时,将加载该关卡需要的所有资源,这一切可以由PlatformerGame.LoadContent 和 PlatformerGame.LoadNextLevel这两个方法实现。

2 每次游戏的状态更新过程都由PlatformerGame.Update 和 Level.Update两个方法实现。如果英雄已经死亡,或者关卡时间耗尽,那么任何输入都将无视,游戏处于一个暂停状态。如果玩家到达出口,剩余的时间将转化为该关卡的成绩加成。如果时间还有剩余,并且英雄没有到达出口的话,那么时间将逐渐减少,关卡场景中的各种对象(英雄、僵尸怪、宝石)将使用Update方法进行更新操作。各种状态都需要在编程之前考虑好,这样在以后的实现中才不至于将项目推到重来。

3 游戏整体画面由PlatformerGame.Draw方法进行绘制,事实上,真正的绘制过程被细分,场景中的每个对象都按照自己的进度实现绘制。比如说,PlatformerGame.Draw被细分为Level.Draw 和 PlatformerGame.DrawHud两个方法。Level.Draw只是负责场景中Tile瓷片的绘制,英雄、僵尸怪、宝石本身是包含了一个Draw绘制方法的。总而言之,PlatformerGame.Draw只是起到调度和总控的作用,下面则一级级地听从调度,以完成“领导”安排的的工作。可谓是“牵一发而动全身”。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: