林焕材 欧阳莉 张允潆 王耀凯 赵崇浩
摘要:任务、成就以及存档读档等模块,在游戏中总是不可缺少。对于游戏而言,这不仅仅是必要元素,同时也是游戏的加分项。该文通过以Unity3D为开发平台,以开发的《通通站》项目为实例,从程序开发者的视角阐述了在游戏的程序设计中对于任务、成就、存储系统的理解,使开发者在制作游戏系统时有明确的设计思路,研究也表明开发游戏时,提前思考游戏系统间联系对制作良好的系统是很重要的。
关键词:Unity3D;存储系统;任务系统;成就系统
在完整游戏制作中,几乎不可避免地需要在游戏中加入任务系统,成就系统和保存进度的存储系统。可以说成就为玩家提供了奋斗目标,而任务为玩家提供了完成目标的途径,而这个过程就需要存储系统进行管理数据。
本文以Unity3D为开发平台,以实践的形式分析成就、任务、存储系统的构建和联系。Unity3D是一款热门的游戏引擎,据Unity官方发布,每个月有28亿活跃的终端用户接触或使用Unity解决方案制作或运营内容[1]。
实践项目《通通站》是一款基于企业App开发的嵌入式项目,该项目以地铁文化为背景,以养成宠物(通通)为主要玩法,通过完成任务、游玩小游戏、社交、完成成就等方式获取培养宠物的资源。
1分析系统
1.1任务系统
基于实践项目对任务系统的基本属性进行分析,其中包括任务名、任务完成条件、任务进度、任务奖励、任务开放等级等属性。其中任务名、任务进度、是否领取过奖励等属性,是任务系统与存储系统中是最常交互的数据。在任务UI上,需要提前准备Unity的UI显示组件,包括奖励图片(Image)和奖励个数(Text)、任务进度(Text)、任务的名字和任务详情(Text)。任务系统数据的更新,包括任务属性的进度、任务是否完成、是否领取奖励和任务UI的更新等数据。而这些数据的更新和管理需要一个完整的设计思路和运行逻辑,良好的程序思路设计可以有效地提高程序的运行效率。当玩家进入《通通站》任务界面时。简单的运行逻辑如图1:
1.2成就系统
成就系统与任务系统在程序思路设计是类似的,在属性方面几乎有任务系统的全部属性,在更新数据上逻辑和任务系统是一样的,区别的设计主要在于UI排版、美术和交互上,在实践项目中,成就的交互设计和任务相比,成就交互设计难度更大,其区别在于交互细节,成就的UI设计是在任务系统UI的基础上,增添了一个新的UI面板,而所有的任务是共用这个UI面板的,面板的数据包括任务名称、完成条件、获取的奖励以及成就的具体信息。当玩家点击成就列表中某一个成就时,会在原来的UI面板上添加新的交互UI,同时根据所点击的成就对该共用UI面板进行数据更新,UI上显示的详细的成就信息和获得奖励的记录,对玩家有一定的激励作用,良好的成就系统能调动玩家的积极性,激发玩家内心的游戏动机[2]。
1.3存储系统
存储系统的开发,是联系多个系统、不仅有任务、成就等系统、背包的物品、也包括游戏玩家属性等级、名字、经验等。在《通通站》的项目中,保存游戏数据方式,选择了以保存Json文件的形式。在存储数据的结构上,不同的系统和存储系统交互的属性是不同的,所以需要针对不同的系统构建不同的数据结构(类),以方便保存和解析数据。在成就,任务系统与存储系统交互,其实存在着一个临行保存物品的系统,就是背包系统。在完成任务后获得奖励,储存在背包系统里,背包系统以一个C#的字典进行存储物品信息的,字典值类型使用C#列表类型,这样的设计可以提高查询的效率的同时,可确保多个相同的物品可以保持独立存储数据。背包物品均由一个(程序)父类派生出来,在背包中可通过该基类进行管理。
1.4成就,任务和存储系统的关系
对于存储系统而言不仅要将数据转化为Json文件,同时需要和其他系统构建联系起来,以成就和任务系统为例,存储系统只需存储必要信息,所以在保存数据时,需要存储系统根据成就,任务的脚本数据,对系统的属性进行区分,只留下必要信息,以实践项目的任务系统的存储数据为例:必要信息有任务ID,任务进度,是否完成过任务,任务是否领取过奖励等数据。
三个系统的联系不仅仅是在数据的传输上,存储系统也对其他两个系统的数据进一步管理,同时存储的数据,也需要任务,成就系统为构建保存的数据结构提供参考。
2制作存储系统的思考
2.1什么是Json
Json全称是(JavaScript Onject Notation),这是一种轻量级的数据交换格式。文件层次结构比较清晰,具有可读性,可在源文件中进行修改,同时对于计算机保存文件和数据的解析都比较友好。Json文件是一款完全独立于语言的文本格式,但由于使用了類似于C语言家族的习惯,使Json成为了比较理想的数据交换语言[3]。Json文件的结构和写法是以“{}”花括号对应程序的对象。“[]”方括号对应数组,“""”双引号对应程序里的变量名和值(Key和Value)。其写法如图2。
2.2 Json的优缺点
用于存储系统比较热门的技术分别有数据二进制序列化,XML和Json。其中对于电脑最友好的存储方式是二进制序列化,计算机对数据的处理最终是对二进制序列化数据的处理,这意味着数据的可靠性,稳定性和效率是最好,但相对的以二进制序列化保存的文件是难以解读,或修改的。
另一个选择是XML,其优点是格式统一,不同系统可共享数据,系统的兼容性高,文件具备可读性,并且可进行修改。
但这二者相对Json文件,可读性和可进行修改有着不可逾越的差距,二进制化难以解读和修改,而XML由于需要考虑父节点和子节点的复杂关系。而Json很好的管理了这些数据,Json和XML在保存相同数据的情况下,从文件数据的复杂度和内存大小分析,Json文件数据结构更清晰,存储空间更小,有研究表明当Json,XML传输相同的数据,XML消耗的时间更长[4]。这就意味着在传输速度和编写解析程序上,最优先选择的保存方式为Json文件,综合评价:在保存的数据需要进一步操作时,Json文件的保存方式是个很好的选择。