基于LayaBox的微信端魔塔小游戏开发
文献综述
一、 微信魔塔小游戏概述
拉帕图对游戏的定义是游戏是一切幼子(动物的和人的)生活和能力跳跃需要而产生的有意识的模拟活动。亚里士多德对游戏的定义是游戏是劳作后的休息和消遣,本身不带有任何目的性的一种行为活动。辞海中游戏的定义是以直接获得快感为主要目的,且必须有主体参与互动的活动。而百度百科中说到游戏是所有哺乳类动物,特别是灵长类动物学习生存的第一步。它是一种基于物质需求满足之上的,在一些特定时间、空间范围内遵循某种特定规则的,追求精神世界需求满足的社会行为方式,但同时这种行为方式也是哺乳类动物或者灵长类动物所需的一种降压减排的方式,不管是在出生幼年期,或者发育期,成熟期都会需要的一种行为方式。
随着微信的发展,越来越多的人开始使用微信,微信小游戏应运而生。[7]微信小游戏是基于微信客户端的游戏,它即点即玩,无需下载安装,体验轻便,可以和微信内的好友一起玩,比如PK、围观等,享受小游戏带来的乐趣。在微信小游戏中,益智类小游戏的用户规模已经超过同品类APP游戏用户规模。
《魔塔》是一种策略类的固定数值RPG游戏。游戏需要动很多脑筋,任何一个轻率的选择都可能导致游戏的失败。魔塔游戏虽不大,但是制作精美,道具很多,而且难度不低,对智商是一次艰巨的考验。[5]可见魔塔是一款偏益智类小游戏,在微信端有所市场。益智小游戏主要为各种闯关,塔防TD游戏,以自己正确的操作,打败敌人,通过关卡。其中要充分利用好自身资源,外在环境,每一步都需要思考。
二、 游戏设计原理以及存在的问题
游戏设计或游戏策划是设计游戏内容和规则的一个过程,好的游戏设计是这样一个过程:创建能激起玩家通关热情的目标,以及玩家在追求这些目标时做出的有意义的决定需遵循的规则。这个术语同时也可以表示游戏实际设计中的具体实现和描述设计细节的文档。游戏设计涉及到好几个范畴 :游戏规则及玩法、视觉艺术、编程、产品化、声效、编剧、游戏角色、道具、场景、界面以上的元素都是一个游戏设计专案所需要的。
游戏设计者常常专攻于某一种特定的游戏类型,例如桌面游戏、卡片游戏或者视频游戏等。尽管这些游戏类型看上去很不一样,可是它们却共同拥有很多潜在的概念上或者逻辑上的相似性。[3]
1. 游戏创新
(1)反馈循环
正反馈循环:达成一个目标能够获得奖励,而这让继续达成目标变得更容易。例如:杀死骷髅能帮助玩家升级,而这让他们更容易杀死更多骷髅。
负反馈循环:达成一个目标会让下一个目标更难达成。例如:在《马里奥赛车》中,跑到第一名意味着你有可能被蓝色龟壳击中,而这会让你失去第一名的位置。
解决负反馈循环的难题:为玩家完成游戏的目标提供奖励。
魔塔游戏中,使用杀死敌人获得金币、经验,金币、经验又能帮助玩家提升属性的方式达成一个正反馈循环。而其中骑士敌人在自身血量过高时可能造成更大的损失,达成一个负反馈循环,而通过解决掉第7层的全部骑士后又获得一个强力道具的方式,来解决负反馈循环带来的难题。
(2)霍华德的隐匿性游戏设计法则
秘密的重要性,是与其表面上看起来无辜的程度及其完整度直接成比例的。
通常,一个特定的机制在游戏的叙事和玩法层面包含一个非同寻常的情节转折,来展示游戏出色的叙事设计。
霍华德法则告诉我们这样的游戏刚开始的时候看起来越像是一个单一维度的、独立的体验,这种转折的力量就越大。
魔塔游戏的界面看起来很朴素,表面的故事性老套,攻击方式单一,很容易厌倦,但游戏内设计了多种丰富游戏内容的道具,在击败后魔王对故事的反转思考也是一种隐匿性游戏设计。
(3)扎拉罗的4种关键趣味元素
简单趣味:玩家对一种新的体验感到好奇,他被带入到这种体验中去并且开始上瘾。
困难趣味:游戏提供来一个可供追求的目标,并将其分解成一个一个可以达成的步骤。
他人趣味:当朋友也跟你一起玩的时候,胜利的感觉会更强烈。在“他人趣味”中,竞争、合作、沟通和领导结合在一起,增加参与度。“他人趣味“带来的情绪上的感受比其他3中加起来还要多。
严肃趣味:玩家通过游戏来改变他们自己和他们的世界。
魔塔游戏的前6层偏向于简单趣味,让玩家快速掌握游戏方法,而后在第八层时有了第一次难点,开始转向困难趣味,让玩家自由体验。
(4)MDA:游戏的机制、运行和体验
游戏机制:整个系统的规则
游戏运行:玩游戏的过程中整个系统的各个参与者的行为
游戏体验:游戏运行的影响下玩家的情感输出
1.机制→运行→体验
2.体验→运行→机制
(5)记忆和技巧
在记忆游戏中需要用到试错法、记忆识别、本能反应以及对游戏本身的掌握。解决记忆游戏让玩家玩了一段时间之后感到枯燥的方法是在保持游戏机制、故事和结果不变的前提下为游戏加入一些随机性。解决技巧游戏让玩家没有达成游戏特定部分所需的技能而感到沮丧的方法是适当引入一些提示。
魔塔游戏中有些地方需要玩家从高层到低层进行操作,对玩家记忆有一定的要求,对于第一次玩魔塔的玩家来说,很有可能死关,需要玩家再次挑战。
(6)“极小极大”与“极大极小”[3]
在一个零和博弈中,每个博弈者会选择一个能最大化他们回报的混合策略,由此产生的策略和回报的组合是帕累托最优的。
极小极大:他们的决策目标是让对手得到最小回报。他们并不见得总是选择让自己获得最大成功的选项。
极大极小:他们会做出保守的决定来避免自己得到负面的回报。他们关心的是将他们的最小收益最大化。
魔塔游戏大致分成两种攻略方法,第一种是偏攻击,在更短的回合中击杀敌人,属于一种极小极大,第二种是偏防御,让敌人即使攻击自己也破不了自己的防御,属于一种极大极小。
(7)纳什均衡
当所有的参与人都有一个最佳选择,而且改变策略不会让他们得到更好的结果时,这就是一个纳什均衡。
魔塔游戏中会刻意增加几个门而钥匙不足,在第一次挑战大魔王时,必须要在商店购买红色钥匙,这是一个纳什均衡。
2. 游戏创作
核心游戏循环是游戏的设计人员必须清楚、仔细定义的,而且他们必须提炼出提供游戏体验基础的核心、重复的机制。核心游戏循环应该包含具有以下特点的动作:(1)易于理解(2)易于操作(3)令人享受(4)能够提供直接的反馈(5)具有能适应不同场景的灵活性(6)具有扩展性,能够加入额外的动作(7)能够与其他动作结合(8)能够进化以支持其他的游戏循环
3. 游戏平衡
兴趣曲线表达的是受众对一个体验所提供刺激的参与程度和反应。下图兴趣曲线中,反应了玩家在刚打开游戏时对游戏的兴趣会增加,而后随着了解了游戏操作之后兴趣减少,出现上升时均为达到游戏的小难点。而后第一次通关后对游戏的兴趣开始稳步下滑。
惩罚系统(生命/游戏结束/继续):(1)失去一条生命:从上一个关键点重新开始(2)继续:从当前关卡的起点重新开始(3)不继续:从游戏最开头的地方重新开始(4)枯萎:游戏中的某个元素的属性随着玩家减少与它们交互的时间会慢慢减弱(5)永久死亡:是一种玩家在整个游戏里只有一条命的机制
传统魔塔游戏的惩罚只有卡关一种,在重构后,攻击敌人时可能死亡,背包里没有药则永久死亡。
4. 解决问题
即使满足:这种类型的玩家是侵略性的,追求快速,在游戏里更容易死。
延迟满足:这种类型的玩家是防守型的,在游戏里活得更长,购买和玩的游戏数量相对较少但是每一个玩得比较久。
心理学家把人类的记忆分成两类:长期记忆和工作记忆。一个经验之谈是一个人的工作记忆平均只能同时记住4件事。新的信息作为一个一个”区块“存储于工作记忆中。如果不马上重复使用,它将不会被转移到长期记忆中去,而是会被更新的信息所取代。[3]
一个容易打败的敌人或是一项容易获得的技能永远不会带来像真正的成就感那样的情感冲击。
三、 FairyGUI概述
1. 进度条的制作
新建一个组件,然后在组件属性里选择扩展为“进度条”。内置”bar”,”bar_v”,”title”三个必备元件。[9]
bar 当进度改变时,改变“bar”对象的宽度。一般用于横向的进度条。注意:一定要设置bar对象的宽度为进度条处于最大值时的宽度。“bar”元件可以是任何类型,不限制于图片。特别的,如果“bar”对象是具有特殊填充模式的图片或者装载器,进度改变时,将改变它的填充比例,而不是宽度。
bar_v 当进度改变时,改变“bar_v”对象的高度。一般用于纵向的进度条。注意:一定要设置bar_v对象的高度为进度条处于最大值时的高度。
“bar_v”元件可以是任何类型,不限制于图片。特别的,如果“bar_v”对象是具有特殊填充模式的图片或者装载器,进度改变时,将改变它的填充比例,而不是宽度。
title 可以是装载器,也可以是标签、按钮。用于显示进度的标题。显示的内容由“标题类型”决定。
ani 是一个动画对象。当进度改变时,修改动画的帧索引等于进度值(0-100)。
2. 列表的制作
新建一个列表,在编辑列表中添加item,使用对象池后的显示列表管理方法:(1)AddItemFromPool 从池里取出(如果有)或者新建一个对象,添加到列表中。如果不使用参数,则使用列表的“项目资源”的设置;也可以指定一个URL,创建指定的对象。(2)GetFromPool从池里取出(如果有)或者新建一个对象。(3)ReturnToPool 将对象返回池里。(4)RemoveChildToPool 删除一个item,并将对象返回池里。(5)RemoveChildToPoolAt 删除一个指定位置的item,并将对象返回池里。(6)RemoveChildrenToPool 删除一个范围内的item,或者全部删除,并将删除的对象都返回池里。
如果列表的item数量特别多时,例如几百上千,为每一条项目创建实体的显示对象将非常消耗时间和资源。FairyGUI的列表内置了虚拟机制,也就是它只为显示范围内的item创建实体对象,并通过动态设置数据的方式实现大容量列表。启用虚拟列表有几个条件:(1)需要定义itemRenderer。(2)需要开启滚动。溢出处理不是滚动的列表不能开启虚拟。(3)需要设置好列表的“项目资源”。可以在编辑器内设置,也可以调用GList.defaultItem设置。满足条件后可以开启列表的虚拟功能。开启虚拟列表能明显提升渲染时间,但消耗性能。
3. 装载器的制作
装载器的用途是动态载入资源,点击主工具栏中的装载器按钮,生成一个装载器。在游戏设计中,可以使用装载器来加载地图的每一块资源。
4. 动效的制作
FairyGUI不仅提供了静态UI的编辑功能,而且提供了强大的动效编辑功能,动效设计可以(1)改变位置 改变元件的位置(x,y)。(2)改变大小 改变元件的宽和高(width、height)。(3)改变透明度 改变元件的透明度(alpha)。(4)改变旋转 改变元件的旋转(rotation)。(5)改变缩放 改变元件的缩放(scaleX,scaleY)。(6)改变倾斜 改变元件的倾斜(skewX,skewY)。(7)改变颜色 对图片、文字、装载器有效,改变它们的颜色(color)属性。(8)改变动画 对动画、装载器有效,改变动画当前的播放状态(playing),或者设置当前帧(frame)。使用这个功能可以使动效轻松地和序列帧动画结合做复杂效果。(9)改变轴心 改变元件的轴心(pivotX,pivotY)。一般来说,轴心应该设置为元件的固定属性,而不是在动效里临时改变。这里只是给出一个途径,使用的情景不多。(10)改变可见性 改变元件的可见性(visible)。(11)播放动效 对组件有效,播放该组件定义的一个动效。如果当前没有选中任何元件,则播放当前容器组件的一个动效。这可以实现类似于动效嵌套的功能。例如,如果动效中有一段效果是需要循环播放的,那我们可以把它做成单独一个动效,然后再用这里的方法嵌套进来。(12)播放声音 播放一个音效。(13)播放震动 元件显示一个震动效果。(14)改变颜色滤镜 改变元件的颜色滤镜。(15)改变文本 改变文本、标签、按钮、下拉框等这些带有标题属性的Text值。(16)改变图标 改变装载器、标签、按钮、下拉框等这些带有图标属性的URL值。
四、 总结
本文从微信端魔塔小游戏的概述、游戏设计原理、机制,FairyGUI的几个元件使用方法等几个方面介绍了魔塔小游戏的制作,在对文献的搜集和综述过程中,学习了许多相关知识。对未来微信小游戏与益智类游戏的发展方向也有了一个简单的认识。未来微信小游戏与益智类游戏将会有如下发展趋势:
1. 小游戏目前发展日趋成熟,比起购买道具,更加趋向于广告收入,目前与小程序想配套的广告平台已经出现,未来的广告市场规模将会持续扩大;
2. 未来游戏会更重视社交 从游戏产品上看,未来游戏会更重视社交部分;
3. 虚拟与现实的结合,游戏玩法的扩充,强对抗、快节奏、大规模。
参考文献
Tencent腾讯.微信官方文档·小游戏 快速上手|微信开放文档[EB/OL] https://developers.weixin.qq.com/minigame/dev/guide/,2019.12.12.
搜游网络.LAYABOX技术文档[EB/OL]https://ldc2.layabox.com/doc/,2019.03.13.
[美]Wendy Despain.游戏设计的100个原理[M].人民邮电出版社:北京,2015-02.
李楚墨,马佛栋.浅议中国游戏产业的现状与前景[J].时代金融,2018,12:264-272.
百度百科“魔塔”词条[EB]/[OL].https://baike.baidu.com/item/%E9%AD%94%E5%A1%94/861619?fr=aladdin.2019.06.12
菠萝小笨笨.取代Flash的HTML5技术(H5编写游戏的优点)[EB/OL].https://blog.csdn.net/xiaokunzhang/article/details/80713744.2018.06.16.
2020微信公开课PRO版http://v.qq.com/detail/m/mzc00200fyleel7.html
刘为.现代游戏开发引擎解析[J].企业技术开发(下旬刊),2016.10.
FairyGUI教程[EB]/[OL].https://www.fairygui.com/docs/guide/.2020.1.14
[10] Martens C,Hammer M A .Languages of Play: Towards semantic foundations for game interfaces[J].2017.