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只是起到调度和总控的作用,下面则一级级地听从调度,以完成“领导”安排的的工作。可谓是“牵一发而动全身”。
相关文章推荐
- Windows Phone 7范例游戏Platformer实战4——冲突检测的实现
- Windows Phone 7范例游戏Platformer实战8——精灵动画的绘制实现
- Windows Phone 7范例游戏Platformer实战3——游戏资源和内容管道
- Windows Phone 7范例游戏Platformer实战6——加速度传感器解读
- Windows Phone 7范例游戏Platformer实战1——5大平台支持
- Windows Phone 7范例游戏Platformer实战7——简单动画的绘制实现原理
- Windows Phone 7范例游戏Platformer实战5——多点触控编程
- Windows Phone 7范例游戏Platformer实战9——僵尸怪
- VC++实战《星际传奇》网游课程第一部分:网络游戏开发基础篇(游戏引擎设计)
- Html+css+jQuery实现扫雷游戏(一)初步设计
- 【Cocos2d-X游戏实战开发】捕鱼达人之单例对象的设计(二)
- 触控游戏的设计—Windows Phone 7游戏开发
- JAVA实战3——五子棋游戏设计
- 跟着BOY学习开发cocos2d-x 游戏 实战篇(8)之 升级系统的基本设计--终结篇
- 02、Windows Phone 套接字(Socket)实战之服务器端设计
- 移动互联网实战--社交游戏的排行榜设计和实现(2)
- 01、Windows Phone 套接字(Socket)实战之交互设计
- 01 设计以 XNA 为基础的 Windows Phone 7 游戏
- quick cocos2d-x 实战:做一个手机横版格斗游戏2:游戏开始界面设计
- 03、Windows Phone 套接字(Socket)实战之WP客户端设计