这篇文章可以叫做《阅读游戏人工智能变成案例精粹》的第6.2.1有感。
文中说道:
现在,你看到了在游戏中使用脚本语言的一些好处,下面让我们通过特定的例子看一下游戏开发人员是如何使用脚本语言的。
6.2.1 对话流
在游戏中,脚本语言的最简单也是最早的用途是管理大量的较色扮演类游戏(PRG)里的对话。脚本被用来控制一个较色和玩家的对话流。一个典型的脚本可能像下面这样。
**Eric the Gross Nosed的对话脚本1 **
FUNCTION DialogueWithGross NosedEric(Player plyr)
。。。。。。。。。。。。。此处省略。
没有必要仅仅停留在对话上。脚本可以用来控制一个角色的动作、摄像机的位置、声音、动画,等等。
/*本博主添加注释 : 玩cs时,屏幕经常能蹦出来一些语句,这种情况就有可能用脚本写的吧*/
6.2.2舞台指示(StageDirection)
在本书出版时,舞台指示可能是脚本语言的最常见的应用了。这些类型的脚本把一个普通的游戏设计师编程了一个虚拟的电影的导演。脚本是一个真正的计算机斯皮尔伯格,他能够按自己的医院操纵游戏角色的动作和环境,并且使游戏设计师能够在不麻烦AI或者游戏引擎程序员的情况下创造出具有陈进兴的、娱乐性的游戏场景,这种脚本把游戏引擎的可能性完全展现给你的开发团队中那些渴望成为Scorsese的人,使得他们能轻松地创建和控制有些的对象和事件。脚本看起来可能像下面这样。
FUNCTION script_castle_guard (player)
**在城堡的可开闭的吊桥边创建一个守卫
guard =。。。。
guard.Speak("Good Evening" +player.Name()....)
guard.move(GetPos(tHRONE_Room))
player.Follow(guard)
/*本博主注释: 这个程序编写的还真有点面向对象的味道。可以想象到,这个lua脚本还真是起到恨到的作用*/
使用的正确的话,被脚本编排的过程会提升玩游戏的体验,这是一种很好的让故事向前发展的方法。Lionhead的《黑与白》(Black& White),见截图6.5)就很好地使用了这种类型的舞台知道,以满足游戏的要求。
6.2.3 AI逻辑
调试游戏角色的AI是AI程序员工作的很大一部分。如果项目的规模特别大,这就会成为一个令人非常沮丧的经历,因为每一次的代码更改都可能需要进行一次荣昌的重编译。幸运的是,通过使用脚本语言我们可以避免这一点。这并不意味着脚本语言应该被用来编写对速度要求很高的AI代码部分(比如进行一次图搜多的代码)但是脚本可以被用来编写你的游戏只能提的决策逻辑。比如,如果智能体使用一个游戏状态自动机,你可以公开智能体类的接口(和其他相关的类)给脚本语言并且为每一个状态编写脚本,而不是直接编写状态的代码。这可以使智能体的逻辑流更容易地修改。这就意味着再也不会有往常那种坐着没事干苦等编译的烦恼了,你可以不断的进行调试,《孤岛惊魂》(FarCry)和《虚幻竞技场》(UnrealTournament)都是用这样的方法来使用脚本语言的例子。