设计文档

0 概论


0.1 编写目的

本项目是我们团队(Z.XML)的北京航空航天大学软件工程课程设计。通过团队项目的开发,来实践软件工程课程中学到软件工程的知识;通过敏捷开发来体会现代软件开发流程。项目的目的就是使用规范的软件工程开发流程开发出满足课程要求,更重要的是符合现代软件开发标准的好工程。  

0.2 项目描述

根据软件工程课程项目的分配规则,我们团队负责开发一个自选项目;经过几番小组讨论(会议记录见团队blog),我们最终选择用cocos2d-x游戏引擎开发一款2d的即时RPG塔防类游戏。本项目游戏的主要逻辑是地图有许多怪物进攻地图中央,我们的任务是控制主角防止怪物入侵;游戏中加入了丰富的元素来提高游戏的可玩性,如英雄具有两种不同攻击方式以及许多技能,同时游戏中还加入了道具元素。同时,除了游戏主体,本项目还包括其他辅助说明模块,如积分分享,游戏帮助等。

 

1 业务概述和逻辑设计 


1.1 模块功能

a)游戏主体模块

实现从游戏开始到结束的过程。包括加载游戏场景、加载主角和敌军、控制游戏进程、控制游戏各个元素等。用户在移动端通过触屏在操作主角进行游戏。

 

b) 辅助说明模块

包含在开始界面中,在游戏开始前显示。主要有:

帮助:提供游戏操作说明以及各项元素的说明。

排行榜:显示游戏积分排行榜,还附有分享功能(能够分享到微博、人人等社交网络)。

成就系统:丰富游戏趣味性的模块,达成条件可以获得相应的成就。

 

1.2 主要接口设计

程序将通过主程序,分别调用各个类,来实现所有的功能。首先是UI框架将有切换界面的功能,并实现必要的外网接口。主角类将提供各种控制接口,以及移动接口。地图类负责显示地图,以及提供某个点是否可走的信息。子弹将提供发射函数。使得玩家与敌军均可使用。整个程序通过cocos2d内置的接口实现信息交互,主要是函数回调。在update方法中,通过调用各个接口,实现整体的协调。

 

1.3 系统几大业务主体和流程描述

a)  业务主体

 i. 游戏主体

通过防御敌军进攻地图中央建筑来获得积分,成功抵抗所有敌军进攻视为游戏胜利,如果大量敌军攻入地图中央建筑或者主角血量为零,则游戏失败。    

 ii. 帮助

获得有关游戏的一些基本信息。

iii.排行榜

查看历史分数top 5。

iv. 成就系统

查看成就完成情况。

b) 流程描述

在手机端(android平台)运行游戏后,进入开始界面。在此界面中,用户可以使用帮助来查看游戏基本信息、查看排行榜以及成就系统、还能通过点击“联系我们”获得有关开发团队的相关信息。开始界面由“开始游戏”的选项,用户点击该按钮即开始游戏。游戏开始后,会有许多敌军进攻游戏地图中央的建筑,用户的人物是控制主角来抵抗这些攻击并且避免主角自身的死亡。在游戏过程中,用户可以通过丰富的方式来进行游戏,比如我们提供了两种攻击方式,即近距离砍和远距离射击;另外,用户还能根据当前MP值来释放多种的技能,每个技能都有各自的特点来帮助你完成游戏。当玩家成功抵抗了所有敌军的进攻后,判定为游戏胜利,此时统计游戏积分,返回主界面。如果地图中央建筑被攻陷或者主角死亡,判为游戏失败,直接返回主界面(暂定流程)。

 

1.4类的UML描述

 

2 技术架构


2.1 架构描述

首先是开场动画,主要用于显示游戏刚开始时的动画,一般来说显示公司或者工作室的logo,或可以简单介绍一下游戏的操作方式,同时在此阶段载入游戏需要的资源。

接着进入主菜单,分别设置新游戏、设置、帮助、退出四个功能选项。

点击新游戏就进入游戏主场景了,这是玩家游戏的地方。

玩家玩游戏的过程就是在程序设置的各个场景之间进行跳转,根据一个画面的操作跳转到下一个画面。

一般来说,场景包含:导演、摄像机、场景、布景、人物角色和动作。

  1. 导演(对应的cocos2d-x引擎中的类是CCDirector)。导演是艺术创作的组织者和领导者,是用演员表达自己思想的人,它通过摄像机进行电影的摄制。在游戏里,导演就是游戏的组织者和领导者,把游戏策划实现为游戏,导演制定规则让游戏内的场景、布景和人物角色有序地运作。
  2. 摄像机(对应的cocos2d-x引擎中的类是CCCamera)。摄像机控制着游戏的视角等元素。
  3. 场景(对应的cocos2d-x引擎中的类是CCScene)。在游戏里,场景就是一个个地图关卡,关卡主要由布景和人物角色组成。
  4. 布景(对应的cocos2d-x引擎中的类是CCLayer)。在游戏中,布景就是每个关卡的背景,不同的关卡一般需要设置不同的背景。
  5. 人物角色(对应的cocos2d-x引擎中的类是CCSprite)。人物角色包括游戏的主玩家和其他玩家,其他玩家可以是另一个真实的玩家,也是虚拟玩家NPC。
  6. 动作(对应的cocos2d-x引擎中的类是CCAction)。动作就是游戏内人物角色的动作了。

2.2 技术介绍

         cocos2d是来源于python语言的一个2d游戏引擎。在多个平台下都可以运行(因为python的跨平台性)。在iphont发布之初,原作者决定移植python版本的cocos2d到objective-C上面。由于设计简单,可靠性高等特点,被广泛用于移动设备游戏开发。缺点是只能开发2d游戏。

         由于后来加入的C++支持,使得该平台可以直接运行在各种母平台之上,入linux,android,ios,windows,以及黑莓操作西东。

 

3 运行环境设计


3.1 cocos2d跨平台特性

Cocos2D-x 是Cocos2D 家族的一个重要分支。它的跨平台特性,使开发者编写一套代码就可以横跨Android 和  IOS 两大平台,从而提高开发者的开发效率。Cocos2D-x不但具有跨平台的特性,还保留了Cocos2D 的全部特性。 其中“x”包含两个意思:一方面是C++ 的文件扩展CXX,“X”表示该项目是由C++ 编写的;另一方面意味着交叉,这个开源项目的目标是让用户创建跨平台的代码。Cocos2D-x 是用C++ 重写的Cocos2D 框架, 因为Android 和iOS 均支持C++。

 

3.2 移动端编程特点

         由于手机等移动终端的特殊性,在为其编程的时候,需要考虑很多问题:

  1. 由于移动端CPU是唤醒式的,所以需要注意释放cpu操作
  2. 由于内存大小、cpu计算能力有限,所以需要保证在编写程序的时候,不能随意使用费时操作
  3. 建立的对象,在消失的时候一定要释放掉。否则绝对会内存泄露。cocos2d这一方面必须手动释放。没有智能的垃圾回收策略
  4. 不能使用所线程响应用户需求。所以需要提高代码效率。
  5. 捕获异常来完善程序响应机制
  6. 多人合作需要明确分工。最忌讳职责不清导致每个人徒增无用操作
  7. 定义明确接口。防止整合的时候失败

 

posted @ 2013-11-13 16:11  Z.XML  阅读(285)  评论(0编辑  收藏  举报