下面我们要准备开始往AI文件里面写东西了。但是,具体要怎么写呢?
</br>先打开一个写好的AI文件看看吧。比如说……
![](https://img.kancloud.cn/72/d4/72d41acf4a37f6666c773886e0021e99_159x58.png)
</br>thicket-ai.lua,这是林扩展包的AI文件。
</br>从文件中可以看到,AI文件中的内容,大体上分为两种:
一种,是给某样东西或者某些样东西赋予某些数值;
还有一种,是一些返回true或false的函数。
</br>就像这个样子:
![](https://img.kancloud.cn/b2/11/b21195f97e8b6b41c62d416002ad2fef_804x498.png)
</br>想像一下我们做选择题的过程?
</br>假设现在有一道选择题摆在我们面前:
</br>小明的爸爸有三个儿子,大儿子叫做大毛,二儿子叫做二毛。请问三儿子叫做什么?A:三毛;B:小明;C:不知道
</br>这道题的问题是:“请问三儿子叫做什么?”
</br>当然,只看这个问题是没法回答的,因为我们什么都不了解。不过还好,这道题通过第一句话告诉了我们许多信息:
“小明的爸爸有三个儿子,大儿子叫做大毛,二儿子叫做二毛。”
</br>我们好像可以根据给出的这些信息去尝试着作答了。
</br>但是,当我们尝试着解答这个题目的时候,忽然发现,条件不够用了。题目问的是第三个儿子的名字。而我们只知道前两个儿子的名字,以及另外一个孩子(小明)的名字。这样就有了两种可能:
1. 小明就是第三个儿子,所以答案是小明,选B
2. 小明是女儿的名字,因而我们无法得知第三个儿子的情况,只能选C
</br>此时,如果老师口头又告诉我们了一个信息:小明是个纯爷们!
</br>这下答案就一目了然了~
</br>我们的AI也是同样的道理。
</br>在游戏的某个时刻,电脑会遇到一些需要拿主意的问题(比如:三儿子叫什么?);同时系统会根据游戏当前的状况,提供一些已知的信息,或者说,叫做环境数据(比如:小明的爸爸#@&%¥……)。
</br>电脑会尝试着分析这些信息,找出问题的答案并付诸实施。整个AI系统的核心是一个叫做smart-ai.lua的文件,在这个文件中实现了大多数情况下的分析策略,从而多数情况电脑还是可以自己找到答案的。
</br>然而对于我们自行设计的扩展包来说,环境给出的数据有时就显得不够用了,我们需要额外提供一些更为细致的信息,或者说,叫做特征信息。而且,电脑已有的决策通常只是一般化的策略,不一定适用我们的扩展包,所以我们还要告诉电脑遇到当前问题时我们自己的决策。
</br>所以,为了解决一个问题,所需要的内容就包括了:
1. 问题本身(三儿子叫什么名字呀?)
2. 环境数据(小明的爸爸、大儿子大毛、二儿子二毛……)
3. 特征信息(小明纯爷们!)
4. 问题决策(这题选B。)
</br>问题本身和环境数据都是系统直接给出的,所以我们的AI文件只需要提供那些特征信息和问题的决策就可以了。
</br>所以AI文件的内容分为那两种就可以理解了:
</br>给某样东西赋予数值,其实就是在为解决可能的问题提供特征信息;
</br>而那些返回true或false的函数,就是针对特定问题的决策函数了。
看看,AI文件也是很有条理的哦~
- 编写说明
- 第一章 创建一个新武将
- 1.1 开发环境准备
- 1.2 创建一个新的武将扩展包
- 1.3 创建我们的新武将
- 第二章 添加技能
- 第三章 武将美化
- 3.1 美化环境准备
- 3.2 添加武将卡牌
- 3.3 添加武将头像
- 3.4 添加武将标签
- 第四章 创建一个新技能
- 第五章 添加音效
- 5.1 打造自己的声音工作室
- 5.2 添加技能使用音效
- 5.3 添加武将阵亡音效
- 第六章 添加提示信息
- 6.1 添加代码注释
- 6.2 显示提示信息
- 6.3 启动全屏信息特效
- 第七章 武将变更
- 第八章 启用AI
- 8.1 创建我们的AI文件
- 8.2 真实的AI
- 8.3 动手写AI
- 第九章 修改距离
- 第十章 技能管理
- 10.1 技能判定
- 10.2 创建技能
- 10.3 获得技能
- 10.4 失去技能
- 第十一章 修改手牌上限
- 第十二章 体力变更
- 12.1 流失体力
- 12.2 制造伤害
- 13.3 恢复体力
- 12.4 流失体力上限
- 12.5 增长体力上限
- 第十三章 游戏进程的变更
- 13.1 创建阶段触发技能
- 13.2 跳过回合阶段
- 13.3 插入一个额外的回合阶段
- 13.4 启用翻面
- 13.5 获得一个额外的回合
- 第十四章 启用标记(Mark)
- 14.1 添加标记
- 14.2 获得标记
- 14.3 失去标记
- 14.4 查看标记数目
- 第十五章 卡牌转换
- 15.1 主动牌的转换
- 15.2 被动牌的转换
- 第十六章 卡牌传递
- 16.1 创建摸牌技能
- 16.2 游戏中摸牌
- 16.3 游戏中弃牌
- 16.4 从其他武将处获得牌
- 16.5 判断目标区域是否有牌
- 16.6 移动场上的牌
- 第十七章 用牌实现技能效果
- 第十八章 启用标志(Flag)
- 第十九章 涉足判定领域
- 19.1 启用判定
- 19.2 更改判定
- 19.3 获得判定牌
- 第二十章 私家牌堆
- 20.1 向牌堆中添加牌
- 20.2 查看牌堆中牌的数量
- 20.3 从牌堆中移除牌
- 第二十一章 牌的锁定
- 第二十二章 免疫牌
- 第二十三章 让房间提供牌
- 23.1 提供主动牌
- 23.2 提供被动牌
- 第二十四章 启用标签(Tag)
- 第二十五章 濒死结算
- 第二十六章 交换座次
- 第二十七章 创建主公技
- 27.1 创建由主公发起的主公技
- 27.2 创建由他人发起的主公技
- 第二十八章 强力技能
- 28.1 直接死亡
- 28.2 改换身份
- 28.3 原地复活
- 28.4 立即胜利