最近的业务上,又回到Animation Tree这块了。

众所周知的是Animation Tree这些概念已经提出很久了,但是使用有着AT支持的CE引擎的项目,却依然义无反顾地没有使用AT,而且,连某些引擎支持人员居然也没搞明白这是个什么东西,前因后果如何,也不去推行这个前期一旦定好后期一劳永逸的事情。

吭哧百度做了一年多,在游戏的上层几乎重新把AT做的事情做了一遍,用一种最糟糕的方式——拿状态机来做状态,谁说角色的状态就一定要状态机做的?那都是上世纪90年代和本世纪最早4、5年的游戏教材才会这么写好伐?状态机做状态我所见过的没有正面的例子,全都是血淋淋的教训。

果不其然,看到了一张似曾相识的长千列,宽千行的大表,技能1,一行一列,技能1受击,一行一列。Oh yeah,嗅到了作死的节奏,维护这样的东西?设计师自信满满的表示几万行的数据都处理了,这个问题不大……

行,问题是不大,问题是人家一个月出十个,你十个月出一个,我知道你能出来,等你出来的时候,永远的毁灭公爵都出3代了……

于是就动了个手术,把状态机和与之相关的Animation彻底废弃重来。

要解释清楚AT,先要解释一下状态机这个坑爹玩意儿。

之前的文章里这里就留了个尾巴,为什么状态不适合用状态机来做?先要从状态这个概念说起。

从逻辑意义上说,状态的组成关系一般不会特别复杂,但组成成分上却并不单纯,很可能不能用一个体系去说明,举个例子:角色技能与否,跟移动有关系吗?现今的大部分游戏,这个答案都是否定的。是否处于技能过程中,并不影响是否同时处于移动流程中,亦不影响死否处于下落过程中,亦不影响角色是否受击,亦不影响角色中毒与否、减速与否。你会说,中毒减速那是Debuff,但你能说清楚中毒减速是Debuff,为何技能不能算作同样的东西吗?当一个技能指令过来后,我需要判断的是什么呢?是否正处于受击,是否正被沉默,是否正被眩晕……也就是说,对于逻辑而言,你需要的只是一堆堆的标记,状态机?受击同时被沉默状态,受击同时正在技能状态,技能同时正在减速状态,技能带位移状态,位移带技能状态。就算把Buff那几个能去掉,最后这俩带Stance的,也是完蛋。

更有甚者,竟然还敢把AI状态也给整进来,再来几个寻路移动状态,攻击目标移动状态,回位移动状态……真实的故事。问题是寻个路、寻个的、接近个的、逃个跑什么的,这到底是跟移动互斥啊还是跟技能互斥啊?以人类的思路理解不能啊。

AI自己形成个状态机不就好了,本身AI就是Controller层面的概念,角色是Actor层面的概念,Controller control Actor,分成两套状态机再正常不过了,合到一起除了给自己添麻烦外有任何哪怕一点的好处吗?

单纯从逻辑上,真正可能到最后有跟状态机有很大关联的,一般只有Stance这种偏表现的逻辑状态:是否正在爬梯子跟是否在走路铁定是没有关系的,是否正在举起箱子跟是否正在走路也铁定没有关系。

从这一点引开来,你会发现真正适用于状态机的,可能只有动画部分了。没错,这个直觉是对的。

这是有道理的,状态机的特点是什么?无论有多少状态,同时可且尽可能处于一个状态。也就是说,从属于状态机的各状态之间,有很明确的互斥关系。技能和移动互斥吗?看游戏设计,有些可以很明确,有些不会很明确。格斗游戏表示技能和移动互斥,旋风斩表示我可以一边技能一边移动。逻辑上可以互斥,就做状态机,不可以,就不要做。有些游戏要做技能过程中仍然有一定的受击导致的IK效果,那这种情况下,逻辑就不互斥,技能和受击就必须作为独立的两个Trigger。

但是动画是基本很明显的,互斥性很强。上下半身融合,头部融合,受击融合,无论怎么融合,每个具体单元都是赤裸裸地互斥性。下半身在跑步的同时就不可能同时做出游泳的动作,非常好理解。

但是,你的逻辑状态很简单啊。即便逻辑上,技能、移动、受击是三个状态,那又怎么样呢?移动中还有中毒移动、减速移动、晕乎乎的移动,受击中还有中毒受击,Debuff特殊受击,这些难道要算逻辑状态吗?正常人都不会这样做的,中毒、减速、眩晕一定是Debuff,本来就是,这三个从逻辑意义上,根本就无法跟移动、技能互斥。怎么可能做成状态机呢?

但是,动画上,确实有着带毒移动,带减速移动这样的需求啊,逻辑上,不能做成状态机,但是动作上,却又需要状态机这样的机制,这样的矛盾怎么破?

灵活而复杂的逻辑结构和相对简单的动画结构的矛盾,这个矛盾客观存在,这就是AT诞生的理由。

事关Animation Tree的工作随笔(一)相关推荐

  1. 工作随笔0828:领导离职前对我的忠告

    工作随笔0828:领导离职前对我的忠告 直属领导产品线负责人因为职业规划不同刚刚提了离职,让让刚刚有点起色的团队前途又蒙上了一层阴霾. 虽然仅仅几个月的相处,我看到了领导的能力.气度,手把手的教会了我 ...

  2. 新计算机教师工作随笔反思,信息技术反思随笔 (2)

    <信息技术反思随笔 (2)>由会员分享,可在线阅读,更多相关<信息技术反思随笔 (2)(2页珍藏版)>请在人人文库网上搜索. 1.一. 活用教学形式,激发学习兴趣学生的学习动机 ...

  3. python selenium post请求_工作随笔——selenium支持post请求,支持自定义header

    2018-01-10:fix post 请求数据遗漏部分内容 背景: 最近在写一个小程序,发现博主所在的地区访问该网站时有防ddos功能验证导致程序不能正常工作. 经过试验发现可以用国外代理ip解决这 ...

  4. [工作随笔]关于马戏团的故事

    很久没有到blog上写几笔了,最近网站一个栏目的新首页测试上线,所以也得以稍微喘口气. 晚上和一个朋友聊天,不知道怎么把话题引到了职涯上.个人感觉,像我这种工作了几年,而且又跳过槽的人,大多朦朦胧胧的 ...

  5. k8s每天报告服务器状态信息,[工作随笔] 配置 cron 检查 K8s Pod 存活状态以推送钉钉消息...

    背景 前段时间接手了一份维护老系统的任务.该系统使用了早期的 Spring Cloud 全家桶,其中有一个微服务随着时间运行会出现大量 CLOSE_WAIT 状态的 socket 连接以至于堵塞网关, ...

  6. 前端工作随笔日记 Day02

    上午: 凌晨家里那只缺德的猫,估计是发春了,这几天,天天叫个不停,还掉毛.五点多起来抓猫,给它一顿揍,丢阳台去了. 七点起来洗漱,吃了口全麦面包,差点噎死我. 八点到公司,停好车去买了两个包子,两块钱 ...

  7. 前端工作随笔日记 Day01

    前言: 2022.5.16 下午开始面试,线下.线上大概十家左右,收到四个offer,一开始工资要的高,自身技术经验不够,有些眼高手低了 2022.5.20 面试xx科技(项目外包) 2022.5.2 ...

  8. 前端工作随笔日记 Day03

    早上: 昨天晚上刚搬完家,突然进来一个男的,我问他你是谁,你怎么进来的?大门关上了啊!他说也是附近租房的,然后说的啥就走了,我也不好拦.锁了好几道锁,然后问房东怎么解决,交给房东和公司解决去吧. 今天 ...

  9. easyui-03(Tree后端工作)

    1.权限系统  **访问控制策略** 访问控制策略一般有以下几种方式: (1)自由型访问控制:用户|对象来决定访问权限.信息的所有者来设定谁有权限来访问信息以及操作类型(读,写,执行...)是一种基于 ...

最新文章

  1. Antenna Placement--POJ 3020
  2. 第0次作业——读推荐博客有感
  3. HDU 1243 最长公共子序列 动态规划
  4. CentOS7—HAProxy安装与配置
  5. ubuntu12.04 安装 php5.4/php5.5
  6. 大白话,讲编程。前端君又回来了!
  7. es5如何实现promise_ES5实现Promise(1) - 事件循环机制
  8. 新能源补贴退坡 广汽新能源、比亚迪不涨价 蔚来最狠!
  9. 【java】大并发下Timeout waiting for connection from pool 解决方案
  10. string中内容的访问
  11. 自动驾驶“老司机”拼车技,MIT的这个比赛已经飙到了时速123公里
  12. (转)ASP.NET MVC 3.0:基于Ajax的表单提交,A页面认证失败后页面被强转至登录页面,待登录成功将如何回到A页面?...
  13. 40. HTTP 协议(1)
  14. XML中写注释的格式
  15. js 中json对象转字符串
  16. 查看计算机显卡驱动版本,驱动人生检测选择显卡版本教程 电脑显卡公版和官方驱动区别...
  17. Java 的三种 Base64
  18. Maven异常:Could not find artifact
  19. 怎样拨打韩国国际长途电话
  20. ExoPlayer播放器剖析(一)进入ExoPlayer的世界

热门文章

  1. 俄罗斯国家黑客TA505被指攻击金融机构
  2. Pwn2Own 2021温哥华黑客大赛落幕 3个团队并列 Master of Pwn
  3. 谷歌修复十多个安卓高危漏洞
  4. Java之品优购部署_day01(10)
  5. Android 入门篇(一)环境搭建
  6. 从“No space left on device”到删除海量文件
  7. 从数据库查询出来的数据集合转换成 json 类型
  8. HTLM5 小知识点的汇集
  9. 学习设计模式系列之一:单例模式
  10. 10 个非常酷的基于jQuery的菜单效果插件