首页 > 一:Unity ACT技能编辑器的制作(上)

技能,一:Unity ACT技能编辑器的制作(上)

互联网 2021-05-13 13:20:33

先简单演示下技能编辑器的功能。我们最初使用unity版本为5.4.0,现升级到5.6.4p4。

缘起

在一个新组建的团队里,只有一个策划兼制作人,加我一个客户端(公司美术内包),需要在一个月之内快速出一个ACT动作的demo,demo需要有至少三个角色和若干小兵,demo通过评审会正式立项。当时我并没有做过这类act游戏,对这类游戏所知甚少,在策划的讲解,以及恶补了一些文章后,我们定下了计划:

1,在半个月内做一个技能编辑器,要支持编辑动作每一帧的攻击受击框,配置按键指令的招式转换,以及各种攻击数据的配置。

为什么要要做技能编辑器?

为了提高后续策划的工作效率,技能编辑器,必不可少。

2,同时制定美术制作动作的规范,以及我们如何切分动作,动作的复用和衔接

3,第三周做runtime的战斗逻辑,第四周整合资源,编辑器的配置,出demo包

计划

时间紧,任务重,我给自己的任务是不加班完成,并尽可能将编辑器功能提前完成,给后续留出更多的调整和debug的时间,所以,需要:

1,尽可能和新策划搞清楚需求,做prototype的推演,推演editor下如何配置,runtime如何执行。有经验的程序,会花更多的时间在前期的需求整理和逻辑推演上。

2,和美术梳理工作流程,让美术可以立刻开始做事情,后续能和我们的编辑器很好地对接。所以,在demo阶段,美术只提供模型fbx和动画fbx,剩下由程序整合。

常用的动画分割方式分析和选择

接下来,有几个技术点,需要做出选择:

1,是使用animator 的状态机来做逻辑,还是自己做切换逻辑?

最终选择了自己做逻辑切换,核心就是工作流可定制。

animator状态机自动生成,最简化,不包含任何逻辑和数据

2,是使用unity的GUI来做编辑器,还是UGUI做?

最终选择用UGUI,主要是怕用GUI时间来不及。另一个原因是我希望策划能在一个技能编辑器下做所有的操作,流程一体化不要那种在A prefab上挂个脚本,再在B prefab上挂个脚本,最后把A和B拖到C prefab脚本的field上这种编辑方式,这不利于策划理顺思路。(可对比白鹭引擎一堆Editor和Unity All in one)

3,如何做编辑器数据的序列化?

最终选择了自己做序列化,最主要的是数据和资源分离,以及热更新。

4,是使用unity自带的Collider(物理系统)来做碰撞,还是自己做碰撞检测?

因为我们是横版游戏,所以,按传统的格斗游戏做法,只需要做box,而且是不需要旋转的box,自己实现的复杂度大大降低,那肯定自己做更可控。

简单总结下选择方案的思路:

没有方案是对所有项目都合适的,选择适合自己项目类型以及开发周期,人员配置的方案要着重考虑数据和资源的分离,热更新。考虑好和美术,策划的衔接工作流程,这些比逻辑本身更重要可控性和开源,尽量使用自己熟悉和可控的实现方式,尽量选择开源的插件和工具

关于ACT游戏,我的理解

我作为非act游戏玩家,我理解的act游戏和mmorg,arpg这类游戏的战斗表现上,区别如下:

所以,arpg是介于act游戏和mmorpg之间,arpg和act游戏,有着重大的区别(按策划的话:市面上太多所谓动作游戏,只能说是arpg)。

act游戏,需要:

快速的操作反馈,需要玩家衔接好操作,才能输出最大化招式衔接的丰富,不同招式下,不同时刻,不同按键,要切换到不同的招式打击反馈的丰富,被击需要有动作反馈,轻中重,浮空等各种击中方式,被击者需要不同的动作反馈

以上是一个非act玩家,做为程序开发者的理解,方便我区分当年做MMO的经验。

开动:以数据为基础来搭建框架

编辑器的目的是为了数据,所以,对于技能(这里只包含按键触发的主动技能)的数据组织如下:

角色数据图ActorCfg:角色数据的根,包含所有角色相关数据ActorAttr:基础数据,包含资源prefab id,移动速度,重力,指令起始招式id等指令ActInfo:一个动作的信息,对应美术制作的一个动画(animation)动作列表FrameInfo:每一帧的信息,一般包含攻击,被击框的信息(position,scale),以及一些复杂逻辑使用的标记动作游戏,需要给攻击和被击都打上框,没有被击框的帧,就不会被击中。SkillInfo:招式信息。每个招式可以由一个或多个动作(ActInfo)组成,并可以选择动作的帧范围,这样最大程度地复用美术动作,并可以由策划自由发挥,组合出新的动画。不同的ActInfo(animation)组合出不同的招式BoxInfo:不同类型的box,不同信息。比如攻击,被击,霸体等不同box的信息不同。攻击类box数据HitInfo:攻击类box,击中以后的数据配置当击中后,需要的数据,根据策划的需求来ChangeCtrl:切换招式的数据。比如在帧范围(0~10内)触发了指令(Up),切换到招式xxchange To 招式 idSkillCtrl:各种技能处理,播放音效,特效,设置速度等等各种控制Trigger:各种判断条件,条件达成,才会执行ChangeCtrl或SkillCtrl各种Trigger

以上是主要的数据模块,ActInfo主要保存每一帧框的位置缩放信息,SkillInfo保存各种ChangeCtrl和SkillCtrl,并用Trigger来做为生效条件。

后续按策划需求对技能编辑器的扩展,更多是SkillCtrl的添加和Trigger的添加。

通过这一套技能编辑处理,策划可以配置出丰富的表现效果。只要数据组织好了,同一数据,有不同的表现形式,这也是基础的MVC的适用。

对于习惯使用类似TimeLine编辑方式的,可以用frameline方式(gif压缩有点糊了)

上半部分,就先写到这里。

下半部分,再分享一些:

序列化数据编辑器和excel表数据的配合SkillCtrl 和 Trigger的设计一些做得还不够好的地方,以及一些思考

更新,加一句,我们编辑器的界面,选项,提示,尽可能用中文。大多数策划的英语水平,大家懂的。

免责声明:非本网注明原创的信息,皆为程序自动获取自互联网,目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责;如此页面有侵犯到您的权益,请给站长发送邮件,并提供相关证明(版权证明、身份证正反面、侵权链接),站长将在收到邮件24小时内删除。

相关阅读