基于layabox的微信端魔塔小游戏开发
开题报告
一、 研究的背景和意义
游戏是一种基于物质需求满足之上的,在一些特定时间、空间范围内遵循某种特定规则的,追求精神世界需求满足的社会行为方式,但同时这种行为方式也是哺乳类动物或者灵长类动物所需的一种降压减排的方式,不管是在出生幼年期,或者发育期,成熟期都会需要的一种行为方式。而在最近刚结束的2020微信公开课中,小游戏平台的累计注册量已超10亿,小游戏行业发展的越来越好,微信对小游戏的各种支持也逐渐完善,相对于大型网络游戏与普通APP手游而言,微信小游戏不用下载,即玩即走,这种模式将引领游戏的下一个阶段。
在网络高速发展的今天,即将到来的5G时代,微信小游戏的模式越来越会起到举足轻重的地步。与传统游戏相比,微信小游戏的差异在性别和年龄层次上,小游戏的女性用户明显更多,男女比例达到了5:5。30岁以上的用户占比超过57%以上。而微信游戏的H5技术,也是大环境下H5取代flash的大势所趋。相对于Flash而言,H5编写的游戏,可以更方便地嵌入到苹果或安卓的App中。这种方式可以免去开发两套App的麻烦,只需要编写一套类似App的H5页面,然后使用类似WebView的方式来嵌入到原生应用中。H5游戏的传播能力比Flash更好,编写游戏更快速,占用资源也更少。
对于传统游戏而言,大家都有些游戏家喻户晓,诸如王者荣耀,英雄联盟之类。可见,小游戏用户内容需要强烈,而这些大型游戏,团队人数众多,制作周期长,而小游戏,制作流程相对短,一个人也可以制作出较为优秀的作品。
魔塔游戏最早是两个日本人做的,引入中国后胖老鼠又制作了21层魔塔,这也是最早在童年时期玩过的最早的flash版魔塔,而后有越来越多的游戏制造者自发制作了更多同人类魔塔。这是一款策略类的固定数值RPG游戏。游戏需要动很多脑筋,任何一个轻率的选择都可能导致游戏的失败。魔塔游戏虽不大,但是制作精美,道具很多,而且难度不低,对智商是一次艰巨的考验。这次进行对魔塔游戏的重构,为魔塔提供了一些新的游戏机制与内容。
二、 国内外研究现状
2017年12月28日,微信更新的 6.6.1 版本开放了小游戏,跳一跳小游戏横空出世,一时吸引了大批玩家前来试玩,用户通过微信直接打开游戏,游戏方式简单易学,在上线后的一个月之内,累计玩过这款游戏的用户达到3.1亿,用户次日留存率达到65%,7日留存率更高达52%,在市场上的表现远超游戏行业的平均水平。而后,微信正式向第三方开发者开放,其中大多数是休闲游戏,其次是棋牌游戏和竞技游戏。对小游戏昵称词频分析,发现小游戏存在同质化现象,即一个爆款或经典游戏会孵化出多个相似的小游戏。而微信向来认为小游戏的本质是创意,创意小游戏鼓励计划也随之开展,微信也开始注重侵权这方面的问题。
国内游戏盗版游戏现在仍然不少,很多游戏都是换皮游戏,就是利用了游戏代码的抄袭不算侵权这一方面,改一套UI就是一个新的游戏了,微信中的审核有有关代码方面侵权的测试,但仍不可避免这一方面。而国外相对更加重视这方面的力度,为保护游戏文化产业,凡下载盗版游戏都有可能入狱,或被告上法庭。
另一方面,国内由于一些血腥暴力的内容被和谐,游戏的内容表现力不如国外,由于国内游戏的盈利模式大多是增值服务,诸如在游戏中增加一些人民币的礼包来增加游戏属性,这种做法破坏了游戏的公平性,但却是最可行的盈利模式,国外游戏的盈利模式大多是在玩家进入游戏之初就已获利,即会在游戏的内容与宣传上做更好的表现。不以氪金定输赢,胜败与否还是看玩家的实力。
中国缺乏资质过硬的游戏制造商,大部分的游戏公司只能归类为代理商,大型游戏研发往往耗费大量时间与资金,国外游戏开发商经常存在游戏无法按时完工而跳票的情况,有时会通过降低游戏质量来赶工。国内大型单机游戏作品极少,游戏质量与国外3A大作相比有很大差距。现在国内也有自主开发的游戏,但总体来说游戏产出的时间与速度远远不及国外的快。中国游戏还没有向外输出的典型案例,无法打开国外市场并占领一席之地。
三、 研究内容和拟解决的关键问题
通过调查与探讨,魔塔游戏需要有以下功能:地图系统,摇杆操作系统,NPC对话系统,商城交易系统,楼层跳转系统,查看怪物信息系统,碰撞系统,背包系统,战斗系统,游戏的存档与读档系统等。
地图系统:由于地图上的怪物,NPC,墙壁,玩家等信息复杂多样、各个楼层的地图都不相同,又涉及到不同的楼层之间可能来回穿梭。在此使用数组对每一层地图的数据进行记录,将地图拆分为一小块一小块的,如[1,2,3],1代表一种墙壁,2代表一种怪物,3代表一种NPC,详细数据再建立一个表,每层调用不同的数据计入。
摇杆操作系统:玩家移动速率与手指移动速率的比例问题。监听手指移动与玩家移动事件绑定,保障玩家移动的合理性。
NPC对话系统:文字渐出,点击可出一段,多段显示,每段话也以数组计入,需要时调用。NPC无话可说时,直接弹出固定话(不再渐出)。
商城交易系统:游戏内设有金币、经验等数据,使用金币可以在商城对自己的属性进行提升或购买钥匙,经验可以在大师NPC中对自己的属性进行提升。
楼层跳转系统:由于设计21层,来回可能过于麻烦,在拾取特定道具后可以进行楼层跳转,需要注意跳转后每层玩家的初始位置的不同。
查看怪物信息系统:怪物多种多类,在拾取特定道具后,可查看该层未击败怪物的详细信息,方便玩家进行挑战。
碰撞系统:玩家在行动中可能会存在获取物品,遭遇怪物,遭遇NPC,遭遇商店的事件,往一方面移动之前,需要进行判断,如遇见怪物,在战斗成功后才能继续移动,NPC对话后也不能移动到NPC格,商店,墙壁同理,获取物品则直接移动。
背包系统:在碰撞到道具后,如是消耗品道具,则存入背包,玩家需要在背包使用道具。与传统魔塔中直接使用的方法不同,玩家可以直接拾取道具,一方面节省故意不捡血瓶而来回穿梭楼层的时间,另一方面增加玩家可操作的内容,增加游戏玩法。
战斗系统:玩家与怪物拥有攻击力防御力生命力回避率暴击率等,当玩家生命力不足而背包中又没有血瓶时,游戏结束,怪物生命力不足时,攻击成功,怪物消失,部分怪物有百分比扣血的机制。战斗自动进行,使用计时器1s一回合,由于存在回避率暴击率,游戏的不确定性大大增加。与背包系统一起增加了游戏的可玩性。
游戏存档读档系统:微信端存储使用wx.setStorageSync进行存储玩家数据,需要存储当前玩家的状态,地图信息等。保障游戏信息的存储性,但同时在玩家从微信小程序图标中删除该游戏时,不能存储玩家已完成的游戏数据。
基于微信小游戏的包体限制等原因,游戏采用LayaAir引擎,相对于如Cocos,Egret,Unity,白鹭等引擎,Laya的核心包较小,上手容易,该引擎图形部分从一开始便基于WebGL渲染,能够直接调用硬件GPU进行加速,故在游戏性能上有一定优势,大型H5游戏能够在不需要runtime的情况下达到较高流畅度,保障游戏整体的流畅性。
四、 研究方案及措施
FairyGUI是一支持跨平台的游戏GUI解决方案。由编辑器和平台SDK两大部分组成。跨平台的编辑器提供了UI素材的管理和编辑功能,配合各平台的SDK可快速方便的构建针对各平台进行优化了的UI界面。一次UI设计,可以搭配多款流行的引擎。设计时如果需要换引擎,不需要对UI进行重新构建。
LayaAir是Layabox旗下第二代HTML5开源引擎,是全球性能最高的HTML5引擎之一。因能开发中大型HTML5重度游戏、性能极其优秀而迅速崛起,已成为HTML5行业公认的开发中大型游戏首选引擎。核心库功能强大,简单易用,上手容易,体积极轻,是目前同等功能最小的HTML5引擎,支持Canvas与WebGL模式的同时,支持ActionScript3、TypeScript、JavaScript三种语言开发。使用LayaAir为开发者提供的打包工具,js压缩,图片压缩等工具,可以帮助开发者更好的转换成可供他人玩的游戏。
FairyGUI设计界面转换到LayaAir上,需要将fairygui的基础库拷贝至laya项目下,在Laya的舞台中添加fgui.GRoot.inst.displayObject。但由于微信开发者工具平台不支持fui后缀名的文件,需要配置fui文件为其它微信支持的文件类型。
TypeScript是一种由微软开发的开源、跨平台的编程语言。它是JavaScript的超集,最终会编译为JavaScript代码,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程。由于JavaScript语言本身的局限性,难以胜任和维护大型项目开发。因此TypeScript横空出世,使得其能够胜任大型项目。添加了一些新的遵循ES6规范的语法,具有基于类的面向对象编程的特性。
微信开发者工具是微信官方提供的针对微信小程序,微信小游戏的开发工具,集中了开发,调试,预览,上传等功能。启动工具时,开发者需要使用已在后台绑定成功的微信号扫描二维码登录,后续所有的操作都会基于这个微信的账号,通过微信的本地存储,可以将游戏的数据都存入其中,比起使用传统的服务器,而后使用发送Ajax的方法相比。减少了一个服务器的压力,但微信本地存储的数据容易被人攻击,但本次设计的小游戏不会产生收益,不会造成玩家之间的差距,这方面暂放不进行设计。
微信分包,微信官方出于小程序的启动速度的考虑,对代码包的大小进行了限制。但是同样也限制了小程序功能的扩展,为了解决这个矛盾,微信官方提供了分包加载这个功能。首次启动时,先下载小程序主包,显示主包内的页面;当需要用到某个功能时,才加载这个功能对应的分包。对开发者而言,能使小程序有更大的代码体积,承载更多的功能与服务;而对用户而言,可以更快地打开小程序,同时在不影响启动速度前提下使用更多功能。在分包划分时,应避免分包与分包之间引用上的耦合。因为分包的加载是由用户操作触发的,并不能确保某分包加载时,另一个分包就一定存在,这个时候可能会导致JS逻辑异常。
微信LayaAir 2.x引擎插件,使用微信引擎插件后,增强用户玩游戏时的加载体验。并且,随着微信后续版本的普及,未来可以只使用引擎插件,不再使用本地包中的引擎库。减少本地包中的引擎空间占用。对于寸土寸金的本地包而言,这是一大好处。当前更新到LayaAir2.3.1的引擎插件,对于使用LayaAir2.4.0IDE与基本库的项目之言,可以在项目中改用2.3.1的引擎插件,2.4.0的基本库进行项目设计。
xlsx表转json,xlsx表可以由非代码逻辑编写的人进行设计,而json可以让专业编写的人进行编写,分工更加明确,项目中使用VSCode中自带的json插件,支持number,string,Array,Json,enum,tags类型。
本游戏利用FairyGUI进行游戏界面设计,导入Laya项目中使用TypeScript对游戏进行设计,一些数据使用xlsx表纪录,代码中转换成json使用,然后将js,资源等进行压缩,并使用引擎插件后转为微信小游戏模式进行分包,在微信工具中进行调试预览然后发布。
五、 实施计划
|
设计(论文)各阶段名称
|
起 止 日 期
|
1
|
完成开题报告、外文翻译
|
第二学期第1-3周
|
2
|
完成大致游戏主逻辑
|
第二学期第4-6周
|
3
|
开始毕业论文正文的写作
|
第二学期第7-8周
|
4
|
完成毕业论文初稿
|
第二学期第9周
|
5
|
做好毕业论文的修改,定稿
|
第二学期第10-14周
|
6
|
完成游戏全部内容
|
第二学期第10-14周
|
7
|
论文答辩
|
第二学期第15-16周
|
六、 主要参考文献
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.