实际操作数据库的类,实际开发中要考虑存档是否提供局部修改的功能
(可以考虑将数据按类型分类,通过验证md5的方式确定哪些需要更新,减少CPU占用)
改变当前数据(全部)
改变当前数据(局部,一个或多个类型)
改变当前数据(单条记录)
存档:将全部当前数据打包保存到相应的档位中
读档:将对应档位的全部数据解压后覆盖到当前数据中
所有当前数据都必须经过本类修改
大地图数据:是否可传送,哪些地图可以传送
地图详细数据:各个地图的宝箱开启情况
玩家数据:所在地图、所在位置、面朝方向
背包数据:有哪些道具,分别有多少个
流程数据:在哪个环节哪个步骤
压缩数据方法
解压数据方法
战斗中所产生的数据
敌人[]
玩家[]
大地图类需要跟实际地图耦合,用于展现大地图和实现地图传送功能。
是否可查看大地图
展现区域
地图数据设定(行列数量,地图块宽高)
棋盘格展现
地图块操作
NPC操作(增加、修改、删除)
玩家默认出生点
地图数据生成
地图ID
是否在大地图上显示
是否可在大地图上传送
生成类型:全景展现,动态展现
迷雾范围
地图块[][]
NPC[]
地图块类型:可通过、不可通过、单进单出、双向通过、
事件类型(枚举):正常通行(默认)、触发动画(动画种类可选)、触发流程、获得物品、玩家换皮肤等
事件处理Handler(这部分要考虑如何实现可扩展)
NPC类型
默认朝向:上下左右
动线[]:默认没有动线(站在那一动不动),也可以有多条动线,可以根据任务进度决定
对话列表[][]:一个NPC可能有多套对话
对话功能:根据任务进度决定NPC说哪套对话
决定NPC在地图上的行动路线
路点列表[]
内部物品[][]
记录游戏总流程
当前环节:
当前步骤:
流程流转:用来验证流程是否向下一步流转
用来区分流程里程碑,避免跳关情况发生,通常情况下同一个地图在同一环节内只能有一种情况。
流程步骤[]
单个环节中的流程节点
上一步骤:理论上应该不会有需要用到上一节点的情况
下一步骤:满足条件后进入下一步骤
进入步骤:当前节点刚进入时调用一次(一般用来处理哪些地图关闭,哪些玩家离队等事情)
离开步骤:当前步骤结束时调用一次
记录分支任务完成情况(可用于决定NPC对话内容以及)
动画类型:全景动画,NPC动画,玩家动画,混合动画
动画触发
战场地图:可由当前玩家所在地图动态生成边界,也可以指定特定地图
战场Buff[]:战场可以有一个或多个buff
AI战斗
基础属性
隐藏属性
对部分玩家buff[]:通过列表指定对于部分玩家的特殊buff,比如被威慑攻击力减弱等
技能
战斗结果方法:此方法需要提供回调函数,或者做成委托也行
buff类别:禁用法术、法力消耗倍增、法力消耗减半、物理攻击翻倍、
效果增益值:默认为1,假如是攻击力buff,那么如果当前值为2就等于攻击力翻倍。
剩余回合数
对应动画ID
持久层:当前数据类、数据库工具类
模型层:都是数据模型,不允许在模型层操作界面(禁止继承mono)
模型层可以继续分包:大地图、地图、NPC、玩家、小队、技能、装备、背包、流程等
服务层:服务层是前后端沟通的一个服务级汇总,以简化控制层代码,提高代码可用性
技能服务、事件服务、
控制层:这个控制层跟web开发不同,不需要太多的Controller,只要把前端操作汇总即可
一般情况下是一进一出,进而改数据,出而改界面,就这样
控制层具体有哪些类还需要再进一步考虑=TODO=
展现层:纯前端展现的工作,通常情况下展现层的所有类都需要继承mono
具体再思考一下TODO===
要考虑前端与后端如何割裂?
view操作如何汇总(是否有必要汇总)?
流程部分细节如何设计才能更灵活?
如何避免开在不该改数据的地方改数据,在不该改界面的地方改界面?
是否能使用面向切面的方式来实现前端的切入?
回到文档目录页:【Unity】Unity3D RPG游戏制作实例(一)游戏简介及文档目录整理
更多内容请查看总目录【Unity】Unity学习笔记目录整理