返回首页

如何开发一个游戏技能编辑器?

112 2024-11-19 13:39 辉远手游网

一、如何开发一个游戏技能编辑器?

先简单演示下技能编辑器的功能。我们最初使用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),切换到招式xx
change To 招式 id
  • SkillCtrl:各种技能处理,播放音效,特效,设置速度等等
各种控制
  • Trigger:各种判断条件,条件达成,才会执行ChangeCtrl或SkillCtrl
各种Trigger

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

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

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

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

欢迎关注专栏

Unity 游戏开发总结

二、卡牌类游戏中如何设计角色的技能体系?

跟策划朋友们聊到策略框架,说喜欢引用阴阳师的技能和套装设计,并在此基础上进行策略的二次改造。然后发现实现出来的技能功能重合度很高,多数体现在只能附加数值BUFF和控制BUFF上。

有时候为了提升策略丰富度只能强行往上再加新的策略层,但尴尬的是,新的策略层的组成还是那些模块。如果设计独立闭环的战斗机制,则会带来数值平衡上的长期维护量剧增。

问了一下操作,发现他们在分解战斗元素时是按效果去分类的,在写开发需求时也是以效果为基础单位去设计。于是涉世不深的程序在实现时直接敲出完整效果作为基础单位。请注意,一些效果其实是多个策略元素组成的。当你想单独调用这个效果中的一部分元素设计新的策略体系时,发现几个元素之间已经绑定封装了。如果在设计底层时就发现还好,但通常发现的时候已经是技能体系开发完成进行测试,甚至是上线后进行版本迭代时。这时候去调整是令人崩溃的。

那如何避免底层桎梏影响自由设计呢?

很简单啊,设计时策略元素足够细就行了。

我们来解析一下这类游戏的设计底层,从更底层的设计看策略元素可以怎么划分

我们先选择一个解析目标。策略卡牌领军者为魔灵召唤和阴阳师。

其中魔灵召唤中的速度条延续了传统回合制的设计,对速度属性的体验感非常清晰,这是策略设计里的传统核心亮点之一。而阴阳师的设计转向了通过鬼火前置控制技能释放。

我们选择更传统的魔灵召唤,去解析这个半回合制卡牌的策略设计思路:

元素分层、状态设计、状态联动、流派设定。

一、元素分层

首先我们分拆一个攻击过程:从指令调起动作(攻击),调用属性计算动作结果(命中及伤害),到展示动作结果。

这个过程的所有元素可以分为动作层、结果层、属性层。

拆分的意义在于,策略的实现依赖于这些元素,而分层能够很好地对策略进行分类指导

  • 动作层,由卡牌直接发起的动作:攻击、治疗、复活等,一般统一为技能,范围自身。
  • 结果层,实际上是被动动作层,如受击、死亡、被暴击,被控限制动作,行动条增减等,范围全局(自身队伍+敌方队伍)。
  • 属性层,参与伤害计算的所有值。

一些组合属性也经常被归类为属性。如绑定动作的属性,反伤吸血等。这些组合属性也被玩家称为策略属性,即已经初步具备了改变战斗方式的策略。由于一些奇怪的属性被做成了可养成经常被调用,所以确实有程序是直接按属性做了。

二、状态:元素改变

而让我们认为一款游戏划策略强的依据,多数是游戏中状态种类的丰富程度。

那么状态是什么。状态实际上是对战斗内元素的额外改变

魔灵的常规状态有三类:

  • 数值BUFF,获得正负数值的附加,加入属性层进行伤害计算
  • 行动BUFF,获得和限制行动的附加,展示在结果层
  • 结果BUFF,以魔灵召唤为例,进入或免除结果(如免死免伤)、增减改变结果(增减行动条、行动回合)

//这部分就是在找出所有的元素之后,预设出这些元素可以如何发生变化

这里的设计工作就是设计元素可以如何变化的参数组合,以最通用易拓展的的方式。如:

  • 中毒(每回合开始时进行无动作的攻击,扣除a类伤害X,持续Y回合,不可叠加,同名最多n个同时生效)
  • 沉默(本回合仅进行普通攻击和反击,不参与合击,持续Y回合,不可叠加,同名可刷新,结束追加n%免疫抗)

这看起来,状态更像是一个结果,事实上当卡牌被赋予状态这个结果,确实是被归类在结果层

既然是结果,那么它需要触发。后面触发机制就是基于状态的骚操作了。

三、技能:状态联动

我们重温一下攻击流程。

发起动作,调用属性,展示双方结果。

以上三段中,动作和展示结果(被动动作)广义上都属于动作层。而动作是默认的触发条件,于是动作跟状态的联动开始了。

  1. 发起动作,触发状态
  2. 展示自身结果,触发状态
  3. 展示目标结果,触发状态

这时候我们想起来,状态中有2类状态分别对动作和结果进行了改变,且状态完成赋予后本身也属于一个结果。于是我们有了这个联动模型:

发起动作【触发状态(动作类)】……【触发状态(非动作类)】——调用属性——展示自身结果【触发状态(动作类)】……【触发状态(非动作类)】,展示目标结果【触发状态(动作类)】……【触发状态(非动作类)】

//这里可以看出触发结果为动作的状态收益极高

技能就是对联动模型的封装。

这里有人就问了,既然状态可以触发动作,那不是可以动作触发动作无限循环。理论上是可以的,魔灵中有一些特殊的技能就是A技能概率触发A技能。也有A触发B,B触发C的技能环。只是为了避免无限连环,它用概率去限制。

分层的作用在这里体现了一个指导意义:触发条件和触发结果一般不用同一层,如果一定要设计在同一层,那么最好在收益和触发概率上进行限制。

那结果触发结果呢?不存在的,任何结果都需要一个动作作为前置。哥们又问了,那我打出暴击,然后特性是暴击时目标瞬间秒杀。这不就是结果触发结果吗。其实这里属于我们语言描述的简化,正确的描述是:

如A攻击时对B打出暴击,则使B瞬间被击杀。

这里B的死亡结果,是A追加了一个无需展示的攻击动作,这个动作导致B被秒杀。因为秒杀特性是在A的身上,所以A需要追加动作使B死亡。而不是B带个特性叫“被暴击就去死”,那这B也太玻璃心了,不可取哈。这叫弱点,不叫策略。

从上面的联动模型看,联动可以做得非常花哨,五花八门的,一不小心就成开放式无限递归了,那怎样利用这个模型进行合理的框架搭建呢。流派预设就应运而生了。

四、流派设定

策略卡牌的核心在于队伍构建,构建目的自然是特性最大化,即最强流派。而流派的实现依赖于各层之间要素的联动即技能组合。

联动的结构一般是(特定数值最大化+此数值带来的联动终结效果)。如队伍为5张卡,则某一张卡为将数值转化为最终特性收益,其余卡为该卡叠加数值。

所以我们设定流派时,首先需要定下的是这个流派进行最终特性收益的技能方式,可以理解为魔兽世界里盗贼的终结技。所以设定流派的第一步:

1、设定终结技

以暴击为例子看下关联。

终结技一般是对暴击效果的放大,如被动自带巨额爆伤提升,或是关联了极大收益的特性效果。如:

  • 暴击概率再次攻击,这是与动作层联动。可以作为终结技但需要终结者本身具备不错的输出能力
  • 暴击概率提升攻击力,与属性联动。提升能力一般作为蓄力而不是终结
  • 暴击概率附加行动状态,与debuff联动。debuff为最后结果时,一般还不如直接上debuff的技能实用

一个技能中可以包含多重联动,所以只要设计者愿意,可以有无限种关联形式。但作为终结技时,默认伤害最大化作为终极流派标准。//正常情况下,暴击伤害被动提升的技能会作为最稳定的终结技。

当然只要设计者愿意,也可以把控制流作为终结去设计,用来防守非常恶心对手。

也就是说,终结技决定了流派核心。于是衍生出了各种诸如一波暴击流华山派,寒冰控制流嵩山派,自虐反击流青城派等剑派。

而围绕着终结技,为终结者提供属性支援的部分则是蓄力技了。

2、设定蓄力支援

在魔灵召唤中,为了避免4个队员集中给1个终结者过度叠加状态,一般属性类buff被设定为不可叠加以免失控。所以魔灵的流派设计基础思路是:

【终结者+队伍光环者+上状态者+上目标负面状态者+其他治疗攻速保护等】

又有人说魔灵召唤可以给一个目标上多个中毒状态啊。其实我们看中毒的状态设计:

中毒(每回合开始时进行无动作的攻击,扣除a类伤害X,持续Y回合,不可叠加,同名最多n个同时生效)

可以看出中毒实际上是一个在回合开始时自动攻击的行动状态,而不是赋予属性的状态,因此叠加并不会崩坏伤害公式。

3、流派赋值范围

安排好基础流派的最佳承担者之后,这个流派的最高赋值参考就出来了。完美流派的天花板数值,用于卡牌的赋值分配

然后根据这个基础流派做2~3个变种流派用于混淆视听。如:

【终结者+队伍光环者+上状态者+上目标负面状态者+其他】中,每个位置都提供可替换的卡牌,赋值低于模板卡牌但可以附加更多特性。

或者调整基础位置:

【终结者+次终结者+队伍光环者+上状态者+上次要状态者+其他】

【终结者+队伍光环者+非流派增益状态+其他】

……

从基础流派中蓄力角色的穿插变换,到终结者的变化调整,始终坚持最少3个套路变化,才能使流派的策略构建具备灵活性。

这个部分有很多设计上的奇淫巧技,后面有时间再总结一下。

然后有人说了,你这连克制都没设计,怎么体现策略性啊。

于是又多了一段充数的废话出来了。

五、克制设计

先问一个问题,策略框架里克制是否必需机制?

很多人觉得需要,这样才更能体现智力游戏的乐趣。你看魔灵召唤也是有属性克制的嘛。

我们还是从底层伤害计算来看看魔灵召唤的属性克制设计:

魔灵召唤中,属性克制影响命中、效果命中、暴击概率、最终伤害(10%)。

你会发现这些属性都是可以作为独立模块去计算的,也就是说,其实属性克制可以看作上层策略层,可以独立添加或去除。

当然魔灵召唤是一开始就以属性克制为基础设定去开发内容的,所以五系魔灵在设计之初就定好了不同的属性偏向,以及后续开发自动战斗时,也将属性克制纳入了AI机制。

实际上如果要设计属性克制,可以这样进行。

  1. 先设计好多个基础流派的卡牌,即所有卡牌
  2. 把所有卡牌复制5份
  3. 分别赋予5系属性
  4. 设计整体作为属性克制的独立算式
  5. 根据属性偏向对流派进行调整,如魔灵会调整卡牌技能甚至(胎生)品阶

这不纯粹在扩卡池么?对啊。(就这么无耻地承认了)

只是很尴尬的点在于,如果属性克制的受益过高,那么流派构建的收益就相对降低。反之会被忽视(比如风丑的辉煌)。

总之目前魔灵属性克制对伤害的影响是10%,更多的影响体现在概率性的数值和自动战斗时的目标选取上。

仅仅是这样的低收益,魔灵召唤也付出了极高的数值平衡维护成本。

所以阴阳师选择了去除属性克制,走了鬼火路线去调教技能了,当然也跟它的世界观有关。

就到这,都不知所云了。

三、游戏王角色技能怎么开启?

1.首先进入游戏,在游戏的右下角会显示玩家现在正在使用的角色,点击角色就会进入角色信息以及编辑卡组界面;

2.在当前界面的上方有一个绿色的盒子,就是编辑卡组的地方,点击进入;

3.然后选择想要开启技能的卡组,同样是点击绿色盒子进入,进入之后在界面的上方可以看到有【技能未开启】的选项;

4.点击【技能未开启】即可进入技能选择界面,选择好技能之后点击保存就开启成功了。

四、从事游戏开发,需要什么技能?

看你要去哪个方向了,策划、程序、美术,每个方向又有细分。

策划有剧情策划,关卡策划,数值策划等等。

程序有客户端编程,服务器编程,引擎编程,脚本编程,手机游戏开发, 网页游戏。

美术有3d建模,2d美术。

方向不一样需求不一样。

较了解程序,就程序俩说吧。

如果要说只为干活,客户端你得学windows编程,socket等

服务器当然就是各种数据库操作,各种通讯操作。

引擎编程需要了解底层,directx,opengl,3d数学,物理基础等。

脚本的话就学脚本就够了。

手机游戏开发分ios、android,对应使用不同引擎需要不同的学习。

网页游戏前端目前flex流行,js,html也在发展。

以上只是速成。但是真正建议的是,

学好c++,数据结构,socket编程,了解windows编程,学习数据库编程。

先学3d数学,再学directx,然后试着做个小游戏。

学习设计模式。研究开源引擎。

会是个比较漫长的过程,但是基础扎实,各种开发都不怕。

可以专挑一条喜欢的道路深入研究,也可以专注游戏逻辑实现。

这个话题其实有点儿大。这里面有一个重要的区别是:你是想当独立游戏开发者,还是想当游戏行业的从业人员。

如果是想当游戏行业的从业人员,我觉得就简单了,盯准你想当的职业,培训相应技能就好。事实上,在游戏行业里的开发,无论是精通特定引擎或者架构(如cocos2D,unity3D,OpenGL,DirectX),还是只是对基础(如算法、设计模式、图形学、人工智能等)有一定深度,都能入行。(不是都学,是对其中一个有超过平均水平的掌握或者理解即可,然后就投简历吧。现在游戏也这么火,不难找工作)。

但是对于独立游戏开发者,事情就不一样了。显然需要掌握更多的东西。但是掌握更多的东西不一定是专精。这就要求独立开发者有取舍。首先要思考,自己想在什么平台做游戏?ios?好好看ios sdk;android?好好看android sdk?win8?好好看wpf。网络?flash或者html5等等等等。

我在上面只列出了一个基础,不包括图形引擎或者游戏引擎。事实上,一些游戏不需要引擎的协助。独立开发者的游戏更是注重创意,因此,很多并不依靠引擎的游戏也能有不错的收益。但是,要想更进一步,需要在平台的基础上选择合适的引擎加以研究。

最后,我认为独立开发者需要了解一些美工知识,并且对数值策划有一些感觉。但从美工的角度,很多美术非常简单的游戏也很不错;所以我一向不认为美术是游戏开发的关键。当然,它是一个能增添很多亮点的环节。

而对于游戏策划,我想每一个想开发游戏的人都有当游戏策划的料子。但这个职能类似产品经理,猛地一想很简单,可把一份策划捋顺了,有逻辑,经得起市场验证,难。不过这是一个试错的过程,只能在探索中学习,实践中学习,书本学来的极其有限。

附上出处连接:

五、PHP如何开发游戏?

php单独是没法开发游戏的,除非是文字游戏,一般顶多也只能作为游戏服务端使用,理论上可以用作任何形式的游戏后端。

但这只是理论,一个端游基本不会用php作为后端,就像你非要用php写桌面程序一样,不是不可以,但基本没人这么干。

php最经常用的是web端,所以可以用作比如网页游戏后端,微信小程序后端等等都是可以的。

那前端最起码的技术就是要css,js,canvas等。

六、如何学习游戏开发?

游戏开发分为设计、程序和美工

讲讲游戏编程需要的知识吧:

1。扎实的程序语言功底,主要代表为VC、DELPHI和JAVA。其中VC使用最广,现在比较大的游戏也由此开

发;DELPHI功能也很强,很多网游:比如网金、传奇都用到了DELPHI;JAVA用于开发手机游戏。

2。扎实的算法知识。主要有:树或图的搜索算法、A*算法、碰撞检测算法、BSP树、人工智能

3。相关图形处理知识。比如:Direct X编程、OpenGL编程、图形学的相关知识(三维图形的形体、纹理、

贴图、照明,还有三维对象的消隐算法比如油画算法,Z缓存)和动画处理知识。如果想深入还要学会几

种三维引擎比如OGRE

4。跟游戏优化相关的知识。比如数据库、内存管理等。

5。想做游戏可不是件容易的事,最重要的:要有毅力,要能不断学习!

希望你们成功,加油!

七、不坏之身是哪个游戏角色的技能?

英雄联盟不坏之身是猴子,也就是齐天大圣。他的被动就是不坏之身:对面英雄越多抗性越高。

八、EVE游戏如何创建角色?

1.首先通过EVE登陆器登陆,进入角色选择界面(如果已经创建了人物);

2.如果已经进入游戏界面,需要重新进入人物界面,可以退出游戏再按方法1操作;

3.上个版本中可能通过注销的方式,再重新登陆游戏,实则和方法1是一样的;新纪元版本还未进行尝试过,你可以试下注销功能。注销的方法:在登陆游戏后,通过按ESC键,在弹出的界面中右(或者左)下角找到注销按键。

九、如何介绍游戏技能?

部分1:在战斗系统中,写明技能的主要表现形式、触发条件、限制条件。

部分2:用excel写,技能的所有属性,名称、表现方式、各种条件、分类、数值、对应的特效、音效

部分3:这是针对美术的,写出每个技能的表现形式(描述)、风格、参考图、时长、大小。

十、小白如何自学游戏开发?

我的建议是先学习使用成熟的游戏引擎, 自己或者组队制作几款小游戏, 把游戏开发所涉及的各种知识有个概念上的了解, 再选择自己感兴趣的深入学习. 当然, 主修游戏玩法也可以, 在不断地优化和提升的过程中, 肯定会遇到技术瓶颈, 那时候就有学习和改进的动力了.

120