<<游戏人工智能编程案例精粹>>读书笔记二
2017-11-07 21:26
99 查看
<<游戏人工智能编程案例精粹>>读书笔记二
全局状态和状态翻转(State Blip):当设计一个有限状态机时,如果加入一个新的状态,且这个状态可能从任何一个状态或任何时间切换。容易想到的一个方法是:直接复制条件逻辑加进每个状态中,但这个方法是不提倡的,因为你需要对每个状态进行逻辑的修改,一个,五个容易改,十个百个呢? 还有一种方法是将状态放进智能体中,在每次更新时调用,但这个也不好。因为我们前面的目标就是对人工智能体和智能体的状态进行了解耦,这个时候加进去犹如画蛇添足。因为我们当时设计时,是将FSM的逻辑都被包含进状态中,从而实现智能体类和FSM的解耦(这么做原因有很多比如当有状态添加或者删除的时候我们不必对智能体类进行修改,对应的OO原则就是封装变化,对修改关闭。如果不这么做我们将要经常进入智能体类的设计中徒增重复工作和增加复杂程度)这时我们可以考虑创建一个全局状态,每次FSM更新时就会被调用。这样,所以用于FSM的逻辑被包含在状态中并且不在拥有FSM的智能体类中!
状态翻转 其实就是当状态退出时,智能体返回前一个状态。这个很简单我们只需添加一个变量对上一状态进行保存就行了,这样当当前状态结束时,可以用保存的上一状态作为鼻白刺?迪肿刺???⑦还有一个需要记下的是消息结构体Telegram中 void* ExtraInfo的使用,非常值得学习。作为消息的额外信息,因为我们不知道额外的消息是什么类型,用void类型指针可以保持任何类型例如:传的消息是Msg_MoveToPosition消息ExtraInfo可以用于存储那个位置的坐标。 当然如果还要增加总结的话,书上的代码唤起了我初学C++primer时map容器和Set容器支配的恐惧,然后Set容器又唤起了我被重载运算符支配的恐惧~~~
End
全局状态和状态翻转(State Blip):当设计一个有限状态机时,如果加入一个新的状态,且这个状态可能从任何一个状态或任何时间切换。容易想到的一个方法是:直接复制条件逻辑加进每个状态中,但这个方法是不提倡的,因为你需要对每个状态进行逻辑的修改,一个,五个容易改,十个百个呢? 还有一种方法是将状态放进智能体中,在每次更新时调用,但这个也不好。因为我们前面的目标就是对人工智能体和智能体的状态进行了解耦,这个时候加进去犹如画蛇添足。因为我们当时设计时,是将FSM的逻辑都被包含进状态中,从而实现智能体类和FSM的解耦(这么做原因有很多比如当有状态添加或者删除的时候我们不必对智能体类进行修改,对应的OO原则就是封装变化,对修改关闭。如果不这么做我们将要经常进入智能体类的设计中徒增重复工作和增加复杂程度)这时我们可以考虑创建一个全局状态,每次FSM更新时就会被调用。这样,所以用于FSM的逻辑被包含在状态中并且不在拥有FSM的智能体类中!
状态翻转 其实就是当状态退出时,智能体返回前一个状态。这个很简单我们只需添加一个变量对上一状态进行保存就行了,这样当当前状态结束时,可以用保存的上一状态作为鼻白刺?迪肿刺???⑦还有一个需要记下的是消息结构体Telegram中 void* ExtraInfo的使用,非常值得学习。作为消息的额外信息,因为我们不知道额外的消息是什么类型,用void类型指针可以保持任何类型例如:传的消息是Msg_MoveToPosition消息ExtraInfo可以用于存储那个位置的坐标。 当然如果还要增加总结的话,书上的代码唤起了我初学C++primer时map容器和Set容器支配的恐惧,然后Set容器又唤起了我被重载运算符支配的恐惧~~~
End
相关文章推荐
- 【<私活案例1>】 某游戏网首页PS设计和Html静态效果源码
- 【<私活案例1>】 某游戏网首页PS设计和Html静态效果源码
- 面向组件编程之Unity 6.怎样复制游戏物体 关键字:time/<GameObject>/Instantiate/Debug
- 【<私活案例1>】 某游戏网首页PS设计和Html静态效果源码
- 我也写书评1---<[网络游戏服务器编程].(韩)全洪)>
- 如何成为一个游戏制作人——第三章:过程式编程语法(详细请自学<<C++Primer>>)
- 读<<游戏之旅-我的编程感悟>>
- <寒江独钓>Windows内核安全编程__传统键盘过滤程序
- 【Qt编程】基于Qt的词典开发系列<一>--词典框架设计及成品展示
- 雄踞AppStore榜首的游戏<别踩到白块儿>源码分析和下载(一)
- Reality is broken <游戏改变世界> 笔记
- iOS开发之网络编程--4、NSURLSessionDataTask实现文件下载(离线断点续传下载) <进度值显示优化>
- GameKnifeEngine第一个游戏<TANK 3D> Demo版完成!
- Cocos2d-x简单游戏<植物大战僵尸>代码实现|第五部分:公用类<后续会提供源码下载链接>
- C# 游戏外挂 编写的<植物大战僵尸>作弊器源码
- Spring-hibernate-事务处理详解及案例<六>
- <<人工智能及其演化>>随手记录
- 游戏编程中的人工智能技术【1】
- <报备>HTML5_游戏开发_简单的<找不同汉字版>游戏
- 区块链编程一翻译篇<一>:web3j介绍