最近在阅读《游戏脚本高级编程》,这本书的内容涵盖很广,讲述了解释器在游戏领域的一个实现,很适合学习编译原理,虚拟机设计。如果有同学看《龙书,虎书》等看的云里雾里,可以先以此书接下地气,不至于丧失了信心,以及继续学下去的动力。
好回到命令脚本。
大家有没有想过同样是文本,同样是由主程序读取,然后按文本文件的逻辑执行,命令脚本与配置文件的差别?
命令脚本是不涉及到变量,循环,条件逻辑的脚本。我们以一个创建窗口后移动窗口,在闪烁窗口的功能来举例,通常格式内容如下:
script_create_windows(0,0)
script_move_windows(12,34)
script_windows_hide(1)
script_sleep(1)
script_windows_hide(0)
或者是这样:
script_create_windows 0 0
script_move_windows 12 34
script_windows_hide 1
script_sleep 1
script_windows_hide 0
配置文件一般是:
windows_first_pos_x = 0
windows_first_pos_y = 0
windows_move_pos_x = 12
windows_move_pos_y = 34
sleep_time = 1
windows_flash = 1
两者同样没有 高级语言中的 本地遍历,也没有逻辑。
其实他们的主要差别就在于 命令脚本中 的命令对应的是主程序里面的一个个函数,或者你可以理解成API , 命令脚本按照顺序执行 各个API;而配置文件则是没有顺序的,逻辑的执行顺序被包含在主程序中,配置文件只是单纯的键值对,改变配置文件每行的顺序,不会改变程序的行为。(当然这里排除那些高级配置文件,他们也支持变量,循环,条件逻辑,这种配置文件其实就是脚本)。
PS:回想起当时做绿色征途时,由于对Lua的粗浅掌握,把Lua就当成了命令脚本,然后VC编写“粘合函数”,也能做出个自动升级到70级的 辅助程序。缺点自然是一大堆,例如脚本必须从新手村开始,如果中途游戏崩了,就不支持从脚本中间运行,因为一个是没有编写太多获取人物任务完成情况等API,当时也不会Lua的 流程控制,条件逻辑的编写。