当前位置:   article > 正文

Games104 gameplay系统笔记_gameplay事件

gameplay事件

GamePlay系统
(1)事件系统
(2)脚本系统
(3)可视化脚本
(4)3C
(5)AI
挑战:多样性;可扩展性;快速迭代

一、事件系统
(1)消息定义
(2)回调函数注册
强引用(引用不随对象销毁而删除,保证引用的安全性,但会导致系统内存增大)
弱引用(在回调函数中增加判断引用对象是否销毁的逻辑,智能指针)

(3)消息分发
1、实现机制:消息队列,相同类型的消息放在一个消息队列里
在这里插入图片描述
在这里插入图片描述
2、消息存储:RingBuffer
在这里插入图片描述
3、消息队列的缺陷:不能保证消息执行的顺序

三、AI

1、寻路

(1)步骤:
Map Representation
Path Finding
Path Smoothing

(2) Map Representation
Format: WayPoint Network、 Grid、 Navigation Mesh etc.

WayPoint Network:
在这里插入图片描述

Grid:
缺陷:存储空间大,格子多了访问速度慢(cache miss),难以表达层叠结构

Navigation Mesh:
可以是三角形,也可以是多边形(必须是凸多边形);
灵活性强,寻路速度快;
生成速度慢;不支持3D空间(例如飞机)

2、感知

3、群体

4、决策
有限状态机
行为树
其他决策算法:
在这里插入图片描述

(1)有限状态机
在这里插入图片描述缺陷:增加新的state时需要考虑和其他state的关系 ,难以管理

改进:分层有限状态机,增加了状态机的可读性,但可能速度慢
在这里插入图片描述
(2)行为树
状态机是对AI行为的抽象,但并不符合人们的思考方式
行为树的结点:
1、Excution Node : 行为树的叶子结点,分为条件结点(Condition Node) 、动作结点(Action Node)
动作结点有三种状态,success、fail、running
在这里插入图片描述

2、Control flow Node :
在这里插入图片描述
Sequence: 顺序执行,将子结点依次执行,如果一个结点返回的是false,则停止执行
Selector: 根据条件执行子结点
Parallel:并行执行,行为树强于状态机的点,AI可以同时执行多个任务(人类的行为很多时候也是多线程的)
Decorator,PreCondition:简化条件分支
在这里插入图片描述

行为树的Tick:
行为树每一次都会从根结点重新 tick(而不是从上一个状态)
行为树在running的结点可能不止一个(优化:可以用event驱动)
在这里插入图片描述

行为树的黑板:
在这里插入图片描述

行为树的缺点:
Tick开销大

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/93329
推荐阅读
  

闽ICP备14008679号