RPG_MAKER——项目系统设计与数据库设计

RPG_MAKERS 团队 2023-04-14 20:29:02
这个作业属于哪个课程班级的链接
这个作业要求在哪里作业要求的链接
这个作业的目标像素原神游戏的系统设计和数据库设计
其他参考文献...

目录

  • 1. 系统和数据库设计
  • 1.1体系结构设计
  • 1.2功能模块层次图
  • 1.3ER分析
  • 1.4表结构设计
  • 2.类图、系统安全和权限设计
  • 2.1设计类图
  • 2.2系统安全和权限设计
  • 2.2.1系统安全:
  • 2.2.2权限
  • 3.改进分析
  • 4.团队绩效
  • 5.开发计划安排
  • 5.1团队项目的预期开发计划时间安排
  • 5.2团队项目的预期开发计划分工安排
  • 6.链接

1. 系统和数据库设计

1.1体系结构设计

在这里插入图片描述

1.2功能模块层次图

在这里插入图片描述

1.3ER分析

在这里插入图片描述

从角色出发关联到武器、圣遗物、物品、npc、怪物、剧情等。

1.4表结构设计

逻辑结构

在这里插入图片描述

表的结构:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

在这里插入图片描述

2.类图、系统安全和权限设计

2.1设计类图

总体:
将整个系统分为5个子系统分别为战斗系统、人物系统、背包系统、剧情系统、UI系统,采用中介模式,使用中介者类进行子系统之间的互相调用和信息传递,避免各个子系统间显示的调用,降低各个子系统之间的耦合度。

在这里插入图片描述

战斗系统:战斗系统使用软件体系结构的状态模式进行设计。战斗模式分为大世界战斗和回合制战斗两类。 大世界战斗的状态分为角色状态和怪物状态。 角色状态分为攻击状态、被攻击状态和死亡状态。 角色处于攻击状态时,可以使用普通攻击、元素战技、元素爆发、积攒能量方法。 处于被攻击状态时会计算攻击造成的影响,并更新角色的数值。死亡状态会触发死亡方法。 怪物状态分为游荡状态、攻击状态、被攻击状态和死亡状态。 游荡状态下,怪物会在地图上移动并检测是否发现角色。 当发现角色时进入攻击状态,此时怪物会追逐角色并攻击角色。 怪物处于被攻击状态时,也会计算造成的影响,并更新怪物数值。 处于死亡状态时会触发死亡方法并掉落物品。 回合制战斗下玩家可以选择出战角色,怪物和角色的回合控制通过战斗轮换控制器来实现。 战斗轮换控制器会为角色和怪物不断切换攻击状态和被攻击状态。 当角色处于攻击状态时,可以选择发起攻击的角色,可以使用普通攻击、元素战技、元素爆发等方法,或使用药剂,或选择逃跑。 怪物处于攻击状态时会使用普通攻击和释放技能方法。 角色和怪物处于被攻击状态下时,会计算攻击造成的影响,若影响导致死亡,则触发死亡方法。

在这里插入图片描述


剧情系统:剧情作为基类,每段剧情会分配一个剧情ID作为唯一属性,同时每段剧情有自己的剧情文本和剧情奖励。 剧情有着自己的跳过剧情方法,玩家在体验剧情时可以调用这个方法来跳过剧情,同时为了剧情要求,剧情也有创建剧情场景的方法。 剧情分为主线剧情和支线剧情,主线剧情完成后可以为玩家解锁新的地图。 剧情由多个任务组成,每个任务会分配唯一的任务ID,并有方法判断任务是否完成,当所有任务完成时,剧情完成。

在这里插入图片描述

背包系统:背包与玩家是一对一关系,在背包系统中我们将物品分为三类,第一种是普通的物品,与背包的关系是一对多,而普通物品又分为食物和剧情物品,它们分别继承于物品类,食物类中属性有状态,回复生命值,还有buff效果,剧情物品则与相应剧情任务挂钩,剧情物品类中属性有剧情ID与任务ID;第二种是武器,与背包的关系是一对多,考虑到武器具有多个类别且可能进行扩展,且为了遵守开闭原则,我们设计将具体的武器类(弓,单手剑,长枪,双手剑)主要含有属性buff效果,攻击方式;第三种是圣遗物类,主要包含属性为装备部位和buff效果,在背包类中聚合了这三个物品类,包含使用,删除查找三个方法,可对三种物品类列表进行操作。

在这里插入图片描述

人物系统:人物作为基类拥有最基础的姓名属性,和移动方法。人物下有三个子类:角色、怪物、NPC。 每个角色拥有姓名、元素属性、生命值、攻击力、暴击率、暴击伤害、防御力属性,拥有移动、普通攻击、元素战技、元素爆发等与战斗相关的方法, 同时也有触发对话以及拾取物品的大世界交互方法,同时每个角色拥有自己的语音和动画。 为实现大世界战斗和回合制战斗两种战斗方式,怪物基类下分为大世界怪物和BOSS怪物两类怪物。 与角色类似,怪物拥有姓名、元素属性、生命值、攻击力、暴击率、暴击伤害、防御力属性。 大世界怪物可以在野外游荡,发现玩家时攻击玩家,同时可以释放技能。 BOSS怪物在玩家靠近时会触发回合制战斗,拥有多个技能。 每个怪物也有自己的语音和动画。 NPC有对话文本属性,当玩家与其对话时展示对话内容。

在这里插入图片描述

UI界面系统:对于UI系统我们采用了状态模式设计,由游戏界面类负责更新UI系统类的状态变量,UI系统类负责创建游戏界面类子类的对象并进行相应操作,在进行子类的添加的时候可以做到开闭原则。

在这里插入图片描述

UI界面系统中的场景切换功能
状态模式:因为游戏当中同一个时刻只能存在一个场景,且场景之间可以切换,所以使用状态模式设计场景切换

2.2系统安全和权限设计

2.2.1系统安全:

Unity 支持 Mono 和 IL2CPP 两种编译模式。 Mono 编译的游戏它将C#脚本代码编译为IL中间语言打包到游戏客户端,在游戏执行时候编译为汇编代码。这类中间语言容易被反编译为 C#源代码。而IL2CPP编译,虽然提升了游戏安全性,但还是存在被攻击的风险。一些C# 反编译相关的工具比如传统的 ILDASM、PEBroswerDbg、GrayWolf、XenoCode 等,都可以将Unity程序反编译成C#代码。

参考网上解决方案的一种做法是:UPS保护,方案主要做了两个方面的保护:Mono 保护,IL2CPP 保护。Mono 保护的对象是游戏的主逻辑 dll:Assembly-CSharp.dll 和 Assembly-CSharp-firstpass.dll。IL2CPP 保护的对象是 metadata 文件:global-metadata.dat。
具体步骤:
1.文件级加密 首先要做的是文件级加密,以达到保护文件的效果。加密前的脚本文件,我们可以看到 Assemply-CSharp.dll 可以被 PE 工具正确的识别。前面演示过,通过这个文件可以直接反编译得到源代码。加密后的脚本文件,PE 工具无法识别出,其他反编译工具也无法反编译。

在这里插入图片描述

2.方法加密: 经过文件加密后的游戏安全性的确是提升了,但是攻击者还是可以从内存中得到明文文件,然后进行反编译。因此要对方法进行加密。经过方法加密后,就算攻击者得到了内存中的明文脚本文件,也无法反编译。工具直接报错,完全看不到原始的代码信息。如图中所示,绿色部分都是反编译失败的错误提示。

在这里插入图片描述

3.字符串信息加密: 方法加密之后,还存在很多的字符串信息,比如方法名和类名。于是我们要做进一步加密,把字符串信息也处理掉。加密结果可以看到,代码和类名方法名完全不可读。

在这里插入图片描述

4.指令保护: 除了方法加密,我们在指令方面也进行了保护。经过加密后的 opcode 对应的不再是 Mono 中标准的 IL 指令。

参考:Unity安全风险

总结:
上述的对程序的多级加密已经集成在了unity的编辑器里,所以我们只需要在Unity里面勾选 Security Setting 页面的 Enable Security Build 复选框就可以实现程序的加密,防止被反编译泄露源码。

2.2.2权限

本项目为2dRPG单机游戏,权限只分为玩家权限。

3.改进分析

需求分析时提出的问题:

在这里插入图片描述

Q1场景类:

在这里插入图片描述

在ui系统里面采用状态模式设计场景类,实现UI界面系统中的场景切换功能
状态模式:因为游戏当中同一个时刻只能存在一个场景,且场景之间可以切换,所以使用状态模式设计场景切换 ,并且在增加新的场景时,不需要修改原来已有的代码,只需要增加新的场景界面子类和context类。

Q2武器:

在这里插入图片描述

武器有弓、单手剑、双手剑、长枪等类别,一个角色只能使用一种武器,并且角色的武器使用类别在设计角色时就已经确定下类。角色可以切换同一种武器的不同武器。

在需求分析时的类图做得比较简单,不能有效的反映出类与类之间的关系和类的结构。在本次的设计中,我们完善了类图的设计。

在这里插入图片描述

在这里插入图片描述

类图的完善和设计由于是同宿舍的同学完成,没有什么记录

4.团队绩效

任务安排:

在这里插入图片描述

学号工作内容贡献度
022000515 林翔数据库表结构设计12%
222000303 陈博源功能模块层次图11%
222000203 陈英杰答辩评审表、数据库设计说明书11%
221900204 陈鸿越答辩ppt10 %
222000326 严文斌系统设计说明书、类图、博客编写14%
222000324 郑淏类图、用况图15%
222000421 莫梓民数据库E-R图12%
222000323 岳晓涵类图、活动图、体系结构设计15%

5.开发计划安排

5.1团队项目的预期开发计划时间安排

我们为之后的开发初步设定了4个里程碑

(4.18-5.7,共4周)

里程碑1:像素原神1.0版本

  • 预计实现:在此阶段完成对第一部分主线剧情的设计,开发人员完成对于unity的学习和初步场景搭建,同时完成初始界面、菜单界面的设计

产出:

时间计划
第0.5周完成对于剧情相关资料收集,初步设计故事线,学习unity基本使用,制作人物动画并导入项目
第1周设计主线剧情,对任务以及NPC对话内容进行编写,继续学习unity同时初步完成对于地图场景的搭建以及NPC的摆放,设计初始界面
第2周完善剧情设定,设计支线任务剧情,优化场景设计,补充细节,实现初始界面

里程碑2:像素原神1.1版本

  • 预计实现:在此阶段完成主角的操作和NPC的交互,实现第一部分主线剧情,初步完成存档界面,同时完成第二部分主线设计

产出:

时间计划
第3周完成主角的操作和NPC的交互,初步实现第一部分主线剧情,初步完成存档界面,完成第二部分主线设计,继续学习相关开发技能为下一阶段打基础

(5.9-6.11,共6周)
里程碑3:像素原神2.0版本(测试版本)

  • 预计实现:完成背包界面、地图界面,人物界面,完成主线设计和支线设计,实现大世界战斗、回合制战斗界面,同时放出测试版本供玩家游玩收集改进意见
    产出:
时间计划
第4周完成主线剧情设计,增加新人物并设计相应技能,完成背包界面的设计
第5周设计支线剧情,增加新人物并设计相应技能,完成背包界面的设计,增加相应物品和武器,实现第二部分主线剧情,增加大世界怪物
第6周实现主线剧情,完成支线剧情设计,完成人物界面,实现大世界战斗和简单回合制副本
第7周实现支线剧情,同时对之前实现功能进行全面测试,放出试玩版本,收集玩家意见

里程碑4:像素原神3.0版本(正式版本)

  • 预计实现:对玩家建议部分进行修改,增添相应建议系统,对剧情以及玩法瑕疵进行修改,放出正式版本
时间计划
第8周整理玩家建议与意见,增加相应系统和玩法,修改瑕疵
第9周测试并修复相应bug,发布正式版本

5.2团队项目的预期开发计划分工安排

     团队8人,预计分配4人前端4人后端2人美工1人策划可能一人身居多职),各角色具体分工如下:

  • 前端:负责游戏的地图搭建游戏场景搭建,和图标、按键、菜单等等的界面布局。
  • 后端:负责控制角色逻辑行为的代码编写,实现角色与游戏NPC、怪物、物品等等的交互,实现回合制战斗状态控制等。
  • 美工:负责游戏角色形象物品外观UI组件外观等的设计,同时负责角色、怪物动作动画的制作等。
队员团队角色
严文斌后端、美工
岳晓涵后端、策划
郑淏后端、美工
林翔前端
陈博源前端
陈英杰后端
陈鸿越前端
莫梓民前端

我们为之后的开发初步设定了4个里程碑

(4.18-5.7,共4周)

里程碑1:像素原神1.0版本

  • 预计实现:在此阶段完成对第一部分主线剧情的设计,开发人员完成对于unity的学习和初步场景搭建,同时完成初始界面、菜单界面的设计

产出:

时间计划角色分工
第0.5周完成对于剧情相关资料收集,初步设计故事线,学习unity基本使用,制作人物动画并导入项目后端:完成Creator Kit:RPG框架的搭建,熟悉框架的结构和使用方法。
前端:学习Creator Kit:RPG框架中搭建地图的方法。
美工:制作部分角色、NPC的概念图及动作设计及地图元素的绘制。
第1周设计主线剧情,对任务以及NPC对话内容进行编写,继续学习unity同时初步完成对于地图场景的搭建以及NPC.的摆放,设计初始界面后端:完成部分NPC的基本对话功能。
前端:完成初始地图搭建,放置部分NPC。
第2周完善剧情设定,设计支线任务剧情,优化场景设计,补充细节,实现初始界面后端:学习游戏场景切换方法。
前端:完善初始场景,继续搭建地图。
策划:完成主线剧情大纲。
美工:绘制更多角色形象及动作动画。

里程碑2:像素原神1.1版本

  • 预计实现:在此阶段完成主角的移动和NPC的交互,实现第一部分主线剧情,初步完成存档界面,同时完成第二部分主线设计

产出:

时间计划角色分工
第3周完成主角的移动和NPC的交互,初步实现第一部分主线剧情,初步完成存档界面,完成第二部分主线设计,继续学习相关开发技能为下一阶段打基础后端:实现角色角色动作切换和NPC交互,实现存档功能。
前端:搭建地图,完成游戏界面图标分布。
策划:完成主线第一章剧本。

(5.9-6.11,共6周)
里程碑3:像素原神2.0版本(测试版本)

  • 预计实现:完成背包界面、地图界面,人物界面,完成主线设计和支线设计,实现大世界战斗、回合制战斗界面,同时放出测试版本供玩家游玩收集改进意见
    产出:
时间计划角色分工
第4周完成主线剧情设计,增加新人物并设计相应技能,完成背包界面的设计后端:实现角色释放技能的功能,完成第一章主线剧情的全部交互。
前端:实现游戏主界面、背包界面等。搭建新地图
美工:设计大世界怪物外形和动作动画。
第5周设计支线剧情,增加新人物并设计相应技能,完成背包界面的设计,增加相应物品和武器,实现第二部分主线剧情,增加大世界怪物,基本实现大世界战斗后端:实现大世界怪物动作逻辑,实现基本的大世界战斗。
前端:继续搭建地图场景。
美工:继续绘制角色外形、动作动画、地图元素
策划:完成部分支线任务剧本。
第6周实现主线剧情,完成支线剧情设计,完成人物界面,实现简单回合制副本后端:实现简单回合制战斗副本。
前端:实现人物管理界面。
美工:继续搭建剧情需要的地图。
策划:完成第二章主线剧情和支线剧情。
第7周实现支线剧情,同时对之前实现功能进行全面测试,放出试玩版本,收集玩家意见后端:实现简单回合制战斗副本。
美工:继续搭建剧情需要的地图。

里程碑4:像素原神3.0版本(正式版本)

  • 预计实现:对玩家建议部分进行修改,增添相应建议系统,对剧情以及玩法瑕疵进行修改,放出正式版本
时间计划角色分工
第8周整理玩家建议与意见,增加相应系统和玩法,修改瑕疵后端前端:根据玩家建议和意见对游戏进行优化。
第9周测试并修复相应bug,发布正式版本

6.链接

GitCode团队仓库链接

系统设计说明书.pdf

数据库设计说明书.pdf

系统设计和数据库设计答辩PPT.pdf

...全文
677 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复

1.是体系结构设计还是业务流程图?请参考课程介绍和其他组的体系结构设计修改。
2.功能模块层次图中各个构件包含的功能是否合理?
3.考虑到角色在不同状态下的行为不同,运用状态模式,不错!但是请将状态模式表达准确。

RPG_MAKERS 团队 2023-06-05
  • 举报
回复
@2023年福大-软件工程实践-W班 A1:我们做的可能更接近是一种流程图,我们应当把我们游戏各个部件的设计、运用到的框架和部件间的关系描述清楚形成一个整体的游戏架构。 A2:功能模块层次图中各个构件包含的功能有些过于详细,功能模块应当是比较大的模块,是实现某一种功能的一个部分。 A3:我们会对角色行为模式的状态图进行补充完整

688

社区成员

发帖
与我相关
我的任务
社区描述
2023年福州大学软件工程实践课程W班的教学社区
软件工程团队开发软件构建 高校 福建省·福州市
社区管理员
  • FZU_SE_teacherW
  • 张书旖
  • 郭渊伟
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧