一切要从这本书《游戏脚本高级编程》说起,2006年我在上海一家公司找到了第一份游戏开发的工作,当时我问了老师一个问题,能不能把游戏中的逻辑,放在外面,游戏运行时才确定游戏里的对白,逻辑。老师说“不能”。但我还是很疑惑,因为在1997年的时候,我买了一盘游戏卡带,名字叫《亚瑟传说》,那是一个MD的RPG角色扮演游戏,把游戏中大量的逻辑和对白直接写在程序中,代码一定特别的乱,开发也会特别的费劲,我总感觉一定有其他的方法来开发RPG游戏。
后来遇到了这本书,解答了我心中的疑惑。
这么说很抽象,我们先看两张图片,
这是写在游戏引擎外面的脚本部分,
api的函数是游戏引擎提供的函数,下面的runStage1是脚本自定义函数,
我们接着看第一关的游戏内容,
我将游戏设置了三个难度,
游戏刚开始,生成三个敌人在屏幕左方,等待一秒后,在屏幕右侧再生成另外三种敌人。
游戏引擎写好后程序就可以先不用动了,策划可以通过脚本编写游戏里的关卡设置,
动作游戏也好,飞行射击游戏也好,还是剧情庞大的RPG游戏,
都可以通过这种方式,让游戏内容和游戏引擎相分离,
实现方法是,写一个编译器,将脚本的内容编译成字节码(汇编码),
在游戏引擎中写一个虚拟机(汇编码解释器),这里对应的是kongfuScript文件夹内的部分,
游戏的内容是通过动态读取外部文件获得的,
所以修改游戏内容,游戏引擎不需要重新编译,完全不需要动。
这就好比是 磁带和录音机之间的关系,游戏内容是磁带,游戏引擎是录音机。
这种开发方式很节约成本,而且确实有效。
比如说,一个游戏公司开发了一款叫《火焰纹章》的GBA游戏,
那么在开发续作的时候,不需要重零开始,再写一遍游戏引擎。
更多的工作内容是修改游戏中的剧情内容。
我在kongfuScript中使用的关键字有
true,void,else,while,number,if,default,do,continue,case,string
switch,bool,break,false,for,return
后来在开发unity项目的时候,又加入了一维数组。
听起来创造了一门语言很牛,而实际上我自己知道,
不过是把《游戏脚本高级编程》这本书从头到尾,一点一点认真的读下来而已,
这并不是多厉害的事。
几年前,我以为自己有点水平,跟几个朋友一起出去创业,结果碰的头破血流,
一头大包,从那以后就连开个小卖店这种看似很简单的事情,我都不敢小看,
曾经的傲气被现实猛扇巴掌,打服了。
如果我能回到十几年前,我可能会对那个一腔热血的自己说,
“你到35岁时,还是买不起北京的房子,虽然你已经倾尽全力了”
如今的我离开了北京,在一座适合生活的城市里安了家,
逐渐适应了这里的生活,才发现自己年少时背井离乡想着到大城市打拼是多么的不值。
十几年,我看过太多游戏公司的辉煌与没落,
就算你今天给公司开发了一款很成功的游戏,那你最多也只能潇洒两年,三年,
五年,七年后,你项目失败了呢?
你能保证每一次游戏开发都是赚钱?
你能保证未来不会出现你无法掌控的意外?
宫本茂那种人,一年能出一个吗?快四十年了,也只出了他一个啊。
年少时,我也曾经辉煌过,也曾经被众星捧月过。
如今再回过头看,可以说,花无百日红,人无千日好。
其实,平平淡淡,才是真的,至于其他的,都是虚的。
上一篇:api接口测试的步骤