【Unity】Unity3DRPG游戏制作实例(二)开发思路及概要设计
【Unity】Unity3DRPG游戏制作实例(⼆)开发思路及概要设计
⽂章⽬录
游戏开发思路及模块划分
游戏基础设定
游戏类型为回合制战棋类RPG游戏。
游戏可以跨平台运⾏,要针对不同的平台提供不同的操作⽅式
玩家控制⾓⾊在地图中⾏⾛、获取宝箱、与NPC对话、触发战⽃。
⼤地图系统
⼤地图要有⼤地图编辑器。
地图系统
地图要有地图编辑器。
每个地图块主要包含以下信息:纹理、通⾏⽅式、战⽃通⾏⽅式、战⽃buff(可选)、玩家位置信息(可选)、NPC位置信息。
可在地图编辑器中设置地图块⽪肤。
可在地图编辑器中设置地图块的通⾏⽅式。
可在地图编辑器中设置整个地图的战⽃触发⼏率。
地图系统要提供战⽃触发⼏率修改功能,允许在某些特定剧情下改变地图的战⽃触发情况。
地图上
NPC系统
NPC的配置要做成组件。
可以在组件中设置NPC的⽪肤和动画。
可在组件中设置NPC的对话,对话可以分为多组,可以随机按组播放,也可以通过标记数据决定当前使⽤哪组对话。
NPC的动线如何配置还需要再考虑考虑,⽐如从哪⾛到哪,停⼏秒钟,再到哪,转圈⾛还是来回⾛等等
张信哲 太想爱你
玩家属性、装备、道具、技能
需要补充
宝箱系统
宝箱系统要考虑宝箱是否需要跟地图数据做关联。
战⽃系统
战⽃系统要有敌⼈的AI。
所有敌⼈都应该实现敌⼈接⼝,敌⼈接⼝要求敌⼈战⽃时必要的动作,给普通敌⼈提供常⽤的实现类,Boss可以做额外的实现类。
战⽃系统中要提供剧情对话功能。
剧情系统
还没想好
存储 \ 读取档系统
要考虑读档时NPC的位置是以存档时为准还是使⽤地图默认点位,如果不是默认点位就要考虑NPC的AI适配功能
存读档时需要加载的数据:玩家当前所在地图、玩家和NPC所在点位与朝向、当前⼩队信息、所有玩家属性及装备、当前物品信息、宝箱信息、流程信息等,待补充。
控制系统(Controller)
控制系统是玩家控制的汇总,所有的玩家输⼊都在控制系统中进⾏处理,所有的前后端交互也都在控制系统中实现。
控制系统应该只做前后端的任务调度,⽽不应该实现具体的业务细节。
控制系统要提供统⼀的接⼝,保证平台可迁移性。
前端展现系统
根据不同的运⾏环境决定是否提供摇杆等操作UI。
提供地图加载功能(包含宝箱、⾓⾊、NPC等)。
为控制系统提供相应的界⾯响应事件。
根据实际情况实现地图局部动态加载功能(可选功能)。
提供对话框展现功能。
提供动画播放的统⼀⼊⼝。
提供⼤地图界⾯展现功能。
提供⽤户菜单UI(继续游戏、Save&Load、按键设定、显⽰设定、声⾳设定、语⾔选项、开发者名单)。
提供地图任意位置⽣成战⽃画⾯的功能(显⽰棋盘格、玩家属性、移动区域、攻击区域、操作UI等)。
概要设计
模块详细设计(此部分可以考虑分成多个⽂档)
模型设计
数据库⼯具类
实际操作数据库的类,实际开发中要考虑存档是否提供局部修改的功能
(可以考虑将数据按类型分类,通过验证md5的⽅式确定哪些需要更新,减少CPU占⽤)
改变当前数据(全部)
改变当前数据(局部,⼀个或多个类型)
改变当前数据(单条记录)
存档:将全部当前数据打包保存到相应的档位中
读档:将对应档位的全部数据解压后覆盖到当前数据中
当前数据类
介绍一种事物作文400
高尚品质的成语所有当前数据都必须经过本类修改
⼤地图数据:是否可传送,哪些地图可以传送
地图详细数据:各个地图的宝箱开启情况
玩家数据:所在地图、所在位置、⾯朝⽅向
背包数据:有哪些道具,分别有多少个
流程数据:在哪个环节哪个步骤
压缩数据⽅法
解压数据⽅法电信流量套餐
战⽃数据类
战⽃中所产⽣的数据
敌⼈[]
玩家[]
⼤地图类
⼤地图类需要跟实际地图耦合,⽤于展现⼤地图和实现地图传送功能。
是否可查看⼤地图
展现区域
地图⼯⼚类
地图数据设定(⾏列数量,地图块宽⾼)
棋盘格展现
地图块操作
NPC操作(增加、修改、删除)
玩家默认出⽣点
地图数据⽣成
地图类
地图ID
是否在⼤地图上显⽰
是否可在⼤地图上传送
⽣成类型:全景展现,动态展现
迷雾范围
地图块[][]
NPC[]
地图块类
地图块类型:可通过、不可通过、单进单出、双向通过、
事件类型(枚举):正常通⾏(默认)、触发动画(动画种类可选)、触发流程、获得物品、玩家换⽪肤等事件处理Handler(这部分要考虑如何实现可扩展)
NPC类
NPC类型
默认朝向:上下左右
动线[]:默认没有动线(站在那⼀动不动),也可以有多条动线,可以根据任务进度决定
对话列表[][]:⼀个NPC可能有多套对话
对话功能:根据任务进度决定NPC说哪套对话
动线类
决定NPC在地图上的⾏动路线
路点列表[]
宝箱类
内部物品[][]
流程类
记录游戏总流程
当前环节:
当前步骤:
流程流转:⽤来验证流程是否向下⼀步流转
流程环节类
⽤来区分流程⾥程碑,避免跳关情况发⽣,通常情况下同⼀个地图在同⼀环节内只能有⼀种情况。流程步骤[]
流程步骤类
单个环节中的流程节点
上⼀步骤:理论上应该不会有需要⽤到上⼀节点的情况
下⼀步骤:满⾜条件后进⼊下⼀步骤
进⼊步骤:当前节点刚进⼊时调⽤⼀次(⼀般⽤来处理哪些地图关闭,哪些玩家离队等事情)
离开步骤:当前步骤结束时调⽤⼀次
任务类
记录分⽀任务完成情况(可⽤于决定NPC对话内容以及)
玩家类
敌⼈类
⼩队类
物品类
动画管理类
动画类型:全景动画,NPC动画,玩家动画,混合动画
动画触发
UI类:场景UI处理
操作响应类:摇杆、按键事件处理
战场类:
战场地图:可由当前玩家所在地图动态⽣成边界,也可以指定特定地图
战场Buff[]:战场可以有⼀个或多个buff
战⽃玩家类:⽤于记录玩家在战⽃过程中产⽣的临时数据
敌⼈类
AI战⽃
基础属性
隐藏属性
对部分玩家buff[]:通过列表指定对于部分玩家的特殊buff,⽐如被威慑攻击⼒减弱等
技能
战⽃结果⽅法:此⽅法需要提供回调函数,或者做成委托也⾏
buff类
buff类别:禁⽤法术、法⼒消耗倍增、法⼒消耗减半、物理攻击翻倍、
效果增益值:默认为1,假如是攻击⼒buff,那么如果当前值为2就等于攻击⼒翻倍。
剩余回合数
对应动画ID
按⽂件夹拆分
dnf安全模式怎么解除持久层:当前数据类、数据库⼯具类
模型层:都是数据模型,不允许在模型层操作界⾯(禁⽌继承mono)
模型层可以继续分包:⼤地图、地图、NPC、玩家、⼩队、技能、装备、背包、流程等
服务层:服务层是前后端沟通的⼀个服务级汇总,以简化控制层代码,提⾼代码可⽤性
技能服务、事件服务、
控制层:这个控制层跟web开发不同,不需要太多的Controller,只要把前端操作汇总即可
⼀般情况下是⼀进⼀出,进⽽改数据,出⽽改界⾯,就这样
控制层具体有哪些类还需要再进⼀步考虑=TODO=
展现层:纯前端展现的⼯作,通常情况下展现层的所有类都需要继承mono
具体再思考⼀下TODO===
Game类
何处惹尘埃的意思系统功能设计
系统功能设计思路
1. 场景中的单例脚本要使⽤单例⼯具实现,⽐如控制器、游戏场景控制等。
2. 不同的系统要有不同的操作⽅式,要使⽤依赖注⼊的⽅式,结合XML配置,实现⼀次配置,动态切换换操作组件。
3. 地图编辑器要使⽤预处理指令进⾏隐藏,保证代码打包时此类功能不会被打⼊包中。
4. 要结合协程⾃定义Update,⽽不是简单的使⽤Update,增加代码的可读性和可维护性。
5. MVC⼀定要做,这样代码可⽤性才能更⾼。
6. 持久层要使⽤依赖注⼊配合单例模式和⼯⼚模式实现,让数据持久化功能更稳定。
7. 要提供远程存档保存功能,并实现多种保存⽅式,⽐如steam保存,华为、⼩⽶、苹果游戏中⼼保存等,不能拘泥于只保存在⾃⼰的
服务器中。
8. 要建⽴成就系统配置化,⽀持Steam成就卡⽚,GameCenter成就,安卓各⼿机平台游戏中⼼成就系统。可以先实现其中⼀种,但⼀
定要做成接⼝,并⽀持成就动态配置。
9.
要考虑的问题
要考虑前端与后端如何割裂?
view操作如何汇总(是否有必要汇总)?
流程部分细节如何设计才能更灵活?
如何避免开在不该改数据的地⽅改数据,在不该改界⾯的地⽅改界⾯?
是否能使⽤⾯向切⾯的⽅式来实现前端的切⼊?
更多内容请查看总⽬录

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。