脚本语言浅介
今天,我想先以一套游戏使用的技术为蓝本,导入实务设计的范畴。你听过“ZZT”这套共享游戏吗。
如果没有,别太在意,这是91年发行的文字模式角色扮演游 戏。我们不谈游戏本身,而把焦点放在游戏的开发系统当中。ZZ T虽然老,所引用的“物件导向”设计概念可是一点都不含糊。
为什么需要额外设计一套游戏专属的程序开发系统?利用现有的程序语言难到不可以吗?首先,现今常见的程序语言中,大 多半都是通用语言,当然也有不少专用语言,严格说来,没有一 套游戏设计的专用语言。(不过,早在八位电脑时代,已有一套 名为“游戏制作者”的软件,它允许使用内建的语言来开发游戏 )就目前游戏主要使用的C语言以及汇编语言来说,程序员必须 从无到有,制作出游戏的引擎系统。
如果有一套游戏开发系统,制作游戏(特别是续集)会大幅 度降低程序设计制作游戏所花费的时间与精力。让我们来看看几个实际的例子:Origin的创世纪系列(人物行程管理、对话皆有 专属系統)等。只要游戏开发系统规划得适宜,一旦制作完成, 对日后制作的游戏程序,绝对有大补益。
我不想在这里就编辑器、编译器之间的差异以及设计的详细原理做讨论。虽然这些都与设计一套游戏开发系统有密切关系, 但这些都属于“系统程序”课程的范畴,我们只需了解就行了。 将程序与游戏资料独立安排有许多好处。你不会因为仅需要修改 游戏资料,就必须重新进行“修改代码、编译、连接”等繁琐的 过程。让我们来看一段ZZT游戏中,某商店老板的“控制”程序
@Vendor
#end
:touch “事件”触发(接触该“物体”)
"Hello, you must be new to town! \
If you want to be successful 讯息显示
around here, you'll need to buy
some supplies!" /
!ba;Ammunition, 3 shots.........1 gem \
!bt;Torch.......................1 gem 选项控制
!bx;Advice......................Free /
#end
:b 选择第一项:购买弹药
#take gems 1 ca
#give ammo 3
"Here's your ammo... Happy hunting!"
#end
:bt 选择第二项:购买火把
#take gems 1 ca
#give torches 1
"Here's your torch..."
#end
:bx 选择第三项:提出忠告
"It is whispered that soon
if we all call the tune,
then the piper will lead us to reason.
"And a new day will dawn
for those who stand long
and the forests will echo with laughter."
-Led Zeppelin
#end
:ca 错误处理(无力购买)
"You can't afford it!"
#end
以上是ZZT程序片段
你是否了解上面的程序,这类经过大量简化后的控制程序,我们把它称做脚本语言。脚本语言除了接近口语化的设计外,另 加上简化后的语法。(除了内建的命令外,通常仅需简单的逻辑 判断与数值计算即可胜任)因此用脚本语言制作游戏,不在是再 是非程序员不可的工作(除了系统本身的修订),企画人员也可 以很快地进入状态。另外,如果将来需要将游戏移植到其他平台 时,比起程序与资料的盘根错节的设计,利用脚本语言来开发的 游戏,只需要修改系统本身,脚本语言部分本身毋须更动,相形 之下出现问题的机会与范围就缩小了很多。
这次以ZZT游戏为例,就是想对脚本语言部分的设计作了概念性的介绍。