Unity 中用有限状态机来实现一个 AI

最近在阅读《游戏人工智能编程案例精粹(修订版)》,本文是书中第二章的一篇笔记。

有限状态机(英语:Finite-state machine, 缩写:FSM),是一个被数学家用来解决问题的严格形式化的设备,在游戏业中也常见有限状态机的身影。

对于游戏程序员来说,可以用下面这个定义来了解:

一个有限状态机是一个设备(device),或是一个设备模型(a model of a device)。具有有限数量的状态,它可以在任何给定的时间根据输入进行操作,是的从一个状态变换到另一个状态,或者是促使一个输出或者一种行为的发生。一个有限状态机在任何瞬间只能处在一种状态。
——《游戏人工智能编程案例精粹(修订版)》 Mat Buckland

有限状态机就是要把一个对象的行为分解成易于处理的“块”或者状态。拿某个开关来说,我们可以把它分成两个状态:开或关。其中开开关这个操作,就是一次状态转移,使开关的状态从“关”变换到“开”,反之亦然。

2D 像素风平台游戏 Aretha’s Journey

《我设计的第一个桌游》后,这次带来的是电子游戏的作业—— 2D像素平台游戏 Aretha’s Journey。

游戏背景

来自潘达尼亚的女孩 Aretha 已经离乡别井几年了,回乡之际,发现族人们都被神所诅咒而变成了石头,原因是他们的族人曾尝试反抗神。于是 Aretha 便踏上拯救家园之路……

我设计的第一个桌游

很久没写文章了,这次带来的是游戏设计课中的桌游大作业。

小组成员在第一节课就随机分好了,我们一开始选择每人准备一个桌游原型,然后共同选择一个原型来深入设计,最后一起选择了我的设计原型。

寻路算法-贪婪最佳优先算法

最近开始接触寻路算法,对此不太了解的话建议读者先看这篇文章《如何快速找到最优路线?深入理解游戏中寻路算法》

所有寻路算法都需要一种方法以数学的方式估算某个节点是否应该被选择。大多数游戏都会使用启发式(heuristic) ,以 h(x) 表示,就是估算从某个位置到目标位置的开销。理想情况下,启发式结果越接近真实越好。

——《游戏编程算法与技巧》

今天主要说的是贪婪最佳优先搜索(Greedy Best-First Search),贪心算法的含义是:求解问题时,总是做出在当前来说最好的选择。通俗点说就是,这是一个“短视”的算法。

《流畅的 Python》读书笔记

两个问题

学了 Python 基础就够了吗?

前言的引言给出了答案:

要不这样吧,如果编程语言里有个地方你弄不明白,而正好又有个人用了这个功能,那就开枪把他打死。这比学习新特性要容易些,然后过不了多久,那些活下来的程序员就会开始用 0.9.6 版的 Python,而且他们只需要使用这个版本中易于理解的那一小部分就好了(眨眼) 。
—— Tim Peters
传奇的核心开发者, “Python 之禅”作者