在完整游戏制作中,几乎不可避免地需要在游戏中加入任务系统,成就系统和保存进度的存储系统。可以说成就为玩家提供了奋斗目标,而任务为玩家提供了完成目标的途径,而这个过程就需要存储系统进行管理数据。
本文以实践的形式分析成就、任务、存储系统的构建和联系,以养成宠物为主要玩法, 通过完成任务、游玩小游戏、社交、完成成就等方式获取培养宠物的资源。
1、任务系统
基于实践项目对任务系统的基本属性进行分析,其中包括任务名、任务完成条件、任务进度、任务奖励、任务开放等级等属性。
其中任务名、任务进度、是否领取过奖励等属性,是任务系统与存储系统中是最常交互的数据。在任务UI 上,需要提前准备UI 显示组件,包括奖励图片和奖励个数、任务进度、任务的名字和任务详情。
任务系 统数据的更新,包括任务属性的进度、任务是否完成、是否领取奖励和任务UI 的更新等数据。而这些数据的更新和管理需要一个完整的设计思路和运行逻辑,良好的程序思路设计可以有效地提高程序的运行效率。
2、成就系统
成就系统与任务系统在程序思路设计是类似的,在属性方面几乎有任务系统的全部属性,在更新数据上逻辑和任务系统是一样的,区别的设计主要在于UI 排版、美术和交互上。
在实践项目中,成就的交互设计和任务相比,成就交互设计难度更大,其区别在于交互细节,成就的UI 设计是在任务系统UI 的基础上,增添了一个新的UI 面板,而所有的任务是共用这个UI 面板的,面板的数据包括任务名称、完成条件、获取的奖励以及成就的具体信息。
当玩家点击成就列表中某一个成就时,会在原来的UI 面板上添加新的交互UI,同时根据所点击的成就对该共用UI 面板进行数据更新,UI 上显示的详细的成就信息和获得奖励的记录,对玩家有一定的激励作用,良好的成就系统能调动玩家的积极性,激发玩家内心的游戏动机。
3、存储系统
存储系统的开发,是联系多个系统、不仅有任务、成就等系统、背包的物品、也包括游戏玩家属性等级、名字、经验等。在项目中,保存游戏数据方式,选择了以保存Json 文件的形式。
在存储数据的结构上,不同的系统和存储系统交互的属性是不同的,所以需要针对不同的系统构建不同的数据结 构(类),以方便保存和解析数据。在成就,任务系统与存储系统交互,其实存在着一个临行保存物品的系统,就是背包系统。
在完成任务后获得奖励,储存在背包系统里,背包系统以一个C#的字典进行存储物品信息的,字典值类型使用C#列表类型, 这样的设计可以提高查询的效率的同时,可确保多个相同的物品可以保持独立存储数据。背包物品均由一个(程序)父类派生出来,在背包中可通过该基类进行管理。
4、成就,任务和存储系统的关系
对于存储系统而言不仅要将数据转化为Json 文件,同时需要和其他系统构建联系起来,以成就和任务系统为例,存储系统只需存储必要信息,所以在保存数据时,需要存储系统根据成就,任务的脚本数据,对系统的属性进行区分,只留下必要信息。
以实践项目的任务系统的存储数据为例:必要信息有任务 ID,任务进度,是否完成过任务,任务是否领取过奖励等数据。三个系统的联系不仅仅是在数据的传输上,存储系统也对其他两个系统的数据进一步管理,同时存储的数据,也需要任务,成就系统为构建保存的数据结构提供参考。
领取专属 10元无门槛券
私享最新 技术干货