https://blog.csdn.net/lhcmt1/article/details/80601414 //原文
https://gpp.tkchu.me/behavioral-patterns.html //博客
一:序列模式:
1. 双缓冲模式
工作原理:
例如计算机的渲染系统。一帧代表显卡读取的帧,一帧代表显卡写入的帧。
何时使用:
可能有可见的错误(撕裂之类的)或者行为不正确。
- 我们需要维护一些被增量修改的状态。
- 在修改到一半的时候,状态可能会被外部请求。
- 我们想要防止请求状态的外部代码知道内部的工作方式。
- 我们想要读取状态,而且不想等着修改完成。
注意点:
<1. 交换需要时间,而且交换时,没有代码可以接触到任何一个状态。
<2. 耗费内存。
2. 游戏循环----//?
将游戏的进行和玩家的输入解耦,和处理器速度解耦。
1. 注意:
例如:
<1. 假设有一颗子弹跨过屏幕: float有四舍五入偏差,同样的浮点数。每次两个浮点数相加,时间越长,偏差越大,使得最终子弹移动后的位置在性能高/低手机上的位置是不一样的。
<2. 游戏物理引擎做的是实际机制法则的近似。 比如一些阻尼运算被小心的安排成以固定时间间隔运行。
. 追逐时间
游戏中渲染通常不会被动态时间间隔影响到。 利用这点。 以固定的时间间隔更新游戏,因为这让所有事情变得简单,物理和AI也更加稳定。
我们将渲染拉出了更新循环。 这释放了一大块CPU时间。 最终结果是游戏以固定时间步长模拟,该时间步长与硬件不相关。 只是使用低端硬件的玩家看到的内容会有抖动。
. 如何管电量消耗?
减少GPU
3. 更新方法
通过每次处理一帧的行为模拟一系列独立对象。
二、行为模式
模式
本章的模式有助于快速定义和完善大量的行为。
类型对象定义行为的类别而无需完成真正的类。
子类沙盒定义各种行为的安全原语。
字节码,最先进,将行为从代码中分离,放入数据文件中。
字节码:
指令集 定义了可执行的底层操作。 一系列的指令被编码为字节序列。 虚拟机 使用 中间值栈 依次执行这些指令。 通过组合指令,可以定义复杂的高层行为。
子类沙盒:
用一系列由基类提供的操作定义子类中的行为。