综合讨论组

创建于:2016-06-18

创建人: indienova

1165 信息 3315 成员
这是一个可以畅所欲言的小组

回合制游戏的技能该怎么做呢

bailt 2022-06-09

Image title

Image title


角色具有多个角色,组成一支队伍,角色下存在两个技能,在战斗中只能使用一个技能

一个技能有各种标签,可能类似炉石传说,但不会做

该怎么做呢

 
xin 2022-06-09

你是策划?


 
bailt 2022-06-09

xin 额,我不是炉石的策划,不过做着回合制游戏

 

看图表面你做的是类似SLG的回合制游戏;首先问题提的太模糊,不太清除你说的不知道技能怎么做是指技能逻辑流程怎么做还是技能设计上需要做哪些东西。如果是技能逻辑流程,那么就需要进行技能目标选择 - 技能目标状态判定(判定目标是否能被选择) - 技能逻辑流程处理/技能伤害流程处理 - 是否触发其他流程判断(如击杀再行动)等;如果是技能设计上,则需要考虑有哪些种类的技能,各种技能类型下的框架设计、数据结构等;比如伤害类技能 / BUFF类技能 /功能类技能,一个技能下可能由各种效果组成,怎样处理这些技能流程的顺序与关连等等。

 
bailt 2022-06-18

糖炒栗子ԅ(¯ㅂ¯ԅ) 我在代码上不知道怎么写,技能是写到角色上的还是怎么写的,我没有经验

 

bailt 技能是单独的模块,角色上只挂载一个调用脚本,用来判断角色用了什么技能。在回合制游戏里,表现跟伤害判定是分开的,伤害计算其实在玩家选取完目标之后就已经计算了,不需要像ARPG那样要检测攻击碰撞。释放技能的时候,通过技能ID主键,获取相应的技能数据,技能数据里一部分是表现,即角色使用技能的时候,需要处理攻击角色与受击角色播放什么动画(包括攻击动画、特效播放时间点、伤害显示时间点这些),用状态机管理就可以,特效跟伤害数字的显示,用动画帧事件或者用逻辑帧数据管理都可以;另一部分是伤害判定用的数据,包括伤害倍率、攻击范围、攻击效果等,这部分主要为伤害计算模块提供数据。

 
bailt 2022-06-20

糖炒栗子ԅ(¯ㅂ¯ԅ) 问题不止如此,一个技能具有多种技能特性,比如施法前段,施法、累计道具物,还会上元素标记或个人标记,具有不同元素伤害类型,根据敌人的被附着个人标记特性,当释放对应元素伤害时造成额外效果,当存在元素标记时,特定技能能够对相关的元素标记形成反应、感觉问题太多了,我无法解决,感觉需要整体的游戏方案

 

这块我的建议是由简入繁,想要做到一步到位是很困难的;功能设计上先理清楚流程,再针对各流程里做具体的功能逻辑;在技能与BUFF的处理上,我之前参考的是知乎 Gordon 的这篇文章 五:方便扩展的被动技能,Buffer系统(和编辑器) - 知乎 (zhihu.com),同时参考了网易决战平安京Uni编辑器。整体流程上大致是使用技能 - 判定技能有效性 - 选择技能目标 - 判定技能目标有效性 - 进行目标状态检定 - 遍历我方与敌方词条/buff并执行效果(updata里执行) - 根据词条种类临时存储数据 - 进入伤害计算流程 - 进入状态处理流程 - 进入其余功能模块流程。

 

详细的可以私信个通讯号深入讨论

 
bailt 2022-06-22

糖炒栗子ԅ(¯ㅂ¯ԅ) 我想应该非常需要,感觉比较抽象

 

bailt 我私信发你了

 
zouchongyang 2022-06-26

回合制其实很简单的,什么问题别想那么复杂。

默认你是使用的引擎是U3D,其他引擎一样思路。

创建一个单例战斗管理脚本,回合制使用协程,这个脚本只负责流程。

创建一个UI类,只负责UI事件,为了实现高内聚,让所有的UI控件添加上EventTrigger,使用一个函数统一管理所有的按钮,通过按钮名来区别是哪个被点击,这样你的代码不会很散很乱。

创建一个抽象基类或者接口,提供所有需要方法名,给管理类调用,供所有的角色不管敌我,全部集成自这个类,实现具体方法。

使用技能和物品,通过读取CSV成sripteTable,有相关插件,然后所有的技能和物品都是通过读取数据表,生成prefab,让他们名字是在数据表中的序号,这样可以不用每次使用技能都去查询,直接调用就行了。

实现技能类,物品类,就行了。

战斗管理脚本,主要记录攻击方,被攻击方,敌我双方阵营,战斗状态枚举,等全局的东西就行了。

 

加入 indienova

  • 建立个人/工作室档案
  • 建立开发中的游戏档案
  • 关注个人/工作室动态
  • 寻找合作伙伴共同开发
  • 寻求线上发行
  • 更多服务……
登录/注册