Skip to content

Latest commit

 

History

History
164 lines (80 loc) · 7.18 KB

README.md

File metadata and controls

164 lines (80 loc) · 7.18 KB

圆圆历险记设计文档

2016013255 冯昊

2016013235 张汝婷

一、游戏简介

  1. 游戏名称: 圆圆历险记

  2. 游戏原型: 坏蛋冰淇淋

  3. 游戏二维码

img

  1. 游戏策划和功能

    圆圆由于经常发表情包惹怒了公主,公主下令将他变成了一个球并将其驱逐。圆圆经过一番反省,下定决心重拾公主芳心,踏上了再见公主的旅程。旅程中,圆圆需要躲避表情包的触碰,否则会再次使用表情包伤害公主;同时需要在路上收集公主遗失的所有星星,然后到达公主所在地,才能获得公主的芳心。

    虽然圆圆的身体变化了,但是它的操控冰的能力还在,面对表情包的接近,圆圆可以通过放冰和破冰来保护自己。但是在一次放冰或破冰未结束前,无法进行另一次对冰操作。

    玩家可以选择不同关卡进行游戏,游戏过程中可能天降馅饼或陷阱,请视情况进行选择,最终目标都是获得公主芳心。

    每次选关游戏结束后,会出现排行榜界面,显示好友中玩过此游戏所有玩家的积分情况。

二、界面布局和设计:

  1. 开始界面

    设置四个按钮:教程、开始游戏(进入选关界面)、游戏介绍(游戏背景故事介绍)、游戏帮助(进入游戏帮助界面,对游戏相关操作进行讲解)。

  2. 教程界面:

    通过一步步的详细解读,向玩家介绍游戏基本操作与技术,帮助玩家快速上手。

  3. 选关界面:

    设置不同关卡供玩家选择。不同关卡的基本地图、表情包位置、数量与速度、道具等各个因素会有所不同。

  4. 游戏介绍界面:

    使用淡入淡出效果讲述游戏背景故事,让人快速熟悉游戏设定。

  5. 游戏主界面:

    左下角摇杆或者方向按键控制圆圆四方向移动,右下角前三个分别控制界面缩小、恢复与放大,最右边的按钮控制圆圆对冰操作。

    界面可以任意拖动,并且有自动跟随主人公的效果。

  6. 游戏失败界面:

    三种提示用语:

    • 圆圆被表情包触碰致死:哈哈哈哈哈哈哈哈哈你输了吧
    • 圆圆未收集足够星星就去找公主:bingo~公主生气了不要你了~
    • 分数小于0:hhh居然都负分了,tcl

    界面上会显示简要排行,并且提供排行榜入口。

  7. 游戏胜利界面:

    圆圆收集到足够星星并且找到公主,就可以获得公主的芳心,从此,圆圆和公主过上了幸福快乐的生活。界面上会显示简要排行,并且提供排行榜入口。

  8. 排行榜界面:

    分关卡显示好友排名。

  9. 积分设置:

    总积分 = 基础积分 + 600 * 星星个数 - (试图)移动次数 * 13 - 对冰操作次数 * 47 - 每帧 * 1/60(正常)或者每帧 * 1/10(放冰状态)

    游戏过程中,一旦积分小于0,就会导致游戏失败。游戏失败则积分为0。

三、技术实现方案及重难点:

  1. 游戏整体架构的选择:

    使用cocos creator进行游戏的开发,从而实现游戏的跨平台发布,并且可以利用cocos creator中的控件以简化设计流程。

  2. 地图设定与对冰操作:

    为了实现前方物体对后方物体的遮挡效果,同时由于本身地图设定自由度高,可以指定任意大小,因此自己进行地图的管理与绘制而非使用tiled map。

    地图中动态设定每个元素的z-index以实现遮挡效果,同时使用二维数组记录整个地图的分布。放冰和破冰判断当前方向上的数组单元的data属性,通过递归调用实现不断地放冰、消冰操作。

  3. 淡入淡出效果的实现:

    由于cocos并没有自带的淡入淡出效果,因此采用setInterval函数与递归函数两种方式来实现了淡入淡出效果,以优化游戏体验。

  4. 表情包的自动移动:

    由于考虑到游戏本身设定较难,如果采用A*等算法会显著增大游戏的过关难度,影响游戏体验,因此表情包的移动算法采用高效的决策树结构,以通过最小的资源消耗来获取较好的游戏体验。

    表情包设置为以圆圆为目标进行移动。以表情包和圆圆的相对位置为基础,用决策树进行建模。移动方式有两种:优先x轴移动和优先y轴移动,这两种方式随机决定,在update函数中逐帧调用判断以营造连续移动的效果。

  5. 排行榜

    由于微信的限制,使用游戏工程与子域工程两个工程进行排行榜功能的实现,通过wx. postMessage进行消息的传递,同时使用不同key存储不同关卡的数据。

  6. 界面跟随:

    由于本游戏中地图大小不定,同时需要对是否正在拖动、人物是否已经在屏幕外等情况进行考虑(当正在拖动界面时、人物之前已经到达屏幕之外时不会进行跟随操作),所以没有使用内置的camera而是采用scrollview监控的方式进行,一旦发现满足条件即将视野移动,带来良好的游戏体验。

  7. 数据加载:

    采用读取数据与动态随机相结合的方法,设立全局变量以获取其他页面传来的数据,并且对读取到的数据进行有效性检测,如果数据不合法(比如星星落在了墙上无法捡到)则会抛弃这些数据,同时对未设定的数据部分进行随机处理(如需要6个星星但只指定了2个的位置,则剩余部分会随机处理)。同时,数据与整体逻辑架构分离,可以方便地修改数据以设立不同关卡,同时也为后续实现动态从网页加载数据提供了基础。

四、游戏测试:

五、亮点:

  1. 关卡内道具:

    设置四种道具和一种随机道具(随机为四个道具之一):

    1)一段时间内界面内所有表情包静止不动;

    2)圆圆一段时间内无敌,触碰表情包不会直接导致死亡,但是会减少100积分(当积分降至0时,圆圆被嫌弃,游戏结束);

    3)圆圆减速一段时间;

    4)圆圆加速(永久功能)。

  2. 有趣的表情包设定:

    多个小怪直奔你来,惊险刺激,但有时也会钻牛角尖,蠢萌蠢萌的。

  3. 多种游戏结局:

    给你不同的结局嘲讽体验。

  4. 多个游戏关卡:

    总有一条通向成功的路。

  5. 游戏教程与背景介绍:

    深入浅出,通俗易懂,这下你不能说不会玩了吧。

  6. 数据动态加载与高鲁棒性:

    通过动态加载数据的方法实现关卡的更新,同时用细致的判断避免由于错误输入而导致程序崩溃。

六、分工:

  • 冯昊

    游戏教程、游戏介绍、排行榜、游戏架构、界面大小改变及滑动实现、按钮操作、游戏初始化实现、道具实现;

  • 张汝婷

    美工、表情包及移动效果实现、放冰与消冰操作实现、摇杆实现、关卡设计、音效。