借助你手上的说明材料,现在你就可以卷起袖子,尝试编写一些基本的脚本代码了。首先,你将要学习的是一种简单而又实用的脚本编写方法——基于命令的脚本编程。基于命令的脚本编程和你最终所使用的编写脚本的方法大相径庭,它们不具备一些常见的编程语言特征,如变量、循环和条件逻辑等。更确切地说,就像它的名字所具有的含义那样,基于命令的脚本完全基于一些具有可选参数的特定命令。这些命令直接促成游戏引擎完成一些动作,如移动显示屏上的游戏玩家以使得其可以四处行走、更换背景音乐或者是显示位图。按照一定的顺序依次调用一系列指令,你最终可以控制游戏引擎的具体动作,尽管这些动作相对而言比较简单。简而言之,基于命令的语言有很多优点,同时也有很多缺点。然而,最为重要的是尽管它们形式简单、功能单一,但是它们却易于编程实现而且的确能够实现一些很好的效果。
本章将重点学习以下几个方面的内容:
● 基于命令的语言理论以及它们是如何实现的。
● 具体实现一种管理文本控制台的基于命令的语言。
● 使用一种基于命令的语言为一个普通游戏的介绍顺序编写脚本。
● 将基于命令的脚本用于编写一个简单的RPG游戏引擎中的非玩家角色行为。
此外,本章将会介绍一些重要概念,在后面的章节中你将会发现这些概念至关重要。因此,尽管本章内容相对简单,但是在你准备阅读第4章之前务必要阅读并掌握所有这些概念。
3.1 基于命令的脚本编程的基础知识
所有基于命令的编程语言都是基于一个非常简单的概念——对于游戏引擎的高级控制。我称它是高级控制是因为基于命令的脚本通常都是设计用于完成一些主要的工作。例如,它们实现的功能并不单纯是刷新显示多边形和旋转位图,它们更加关注于在游戏世界中移动游戏玩家的位置,打开城堡的大门,为每个场景具体编写对话和事件脚本,并为游戏玩家提供物品和武器等。如果你仅仅从这些方面着眼考虑问题的话,那么游戏引擎的确只是实现了有限的功能。即便是像Quake这样的游戏基本上也是基于一些主要功能,例如:
● 游戏玩家和机器人在游戏世界中的行走。
● 游戏玩家和机器人的射击行为。
● 管理由游戏玩家、机器人(bots)和导弹造成的损伤。
● 向找到武器和物品的玩家分配这些东西,并在当这些武器被使用的时候相应减少其弹药量。
● 载入新地图,更换背景音乐,以及其他面向场景/背景的任务。
但是请你不要误解我的意思——Quake的游戏引擎其实是一个非常复杂的游戏软件。然而 Quake游戏本身尽管也是相当的复杂,但还是很容易就可以归结为这些相对简单的概念。事实上,这个理论对于所有的游戏都很适用,同时它也是基于命令的语言赖以生存的理论基础,如图3.1所示。

图3.1 基于命令的脚本控制着游戏的基本功能






