从游戏脚本语言说起,剖析Mono搭建的脚本基础

jopen 7年前

前言

在日常的工作中,我偶尔能遇到这样的问题:“为何游戏脚本在现在的游戏开发中变得不可或缺?”。那么这周我就写篇文章从游戏脚本聊起,分析一下游戏 脚本因何出现,而Mono又能提供怎样的脚本基础。最后会通过模拟Unity3D游戏引擎中的脚本功能,将Mono运行时嵌入到一个非托管(C/C++) 程序中,实现脚本语言和“引擎”之间的分离。

Why?从为何需要游戏脚本说起

首先聊聊为何现在的游戏开发需要使用游戏脚本这个话题。

为何需要有脚本系统呢?脚本系统又是因何而出现的呢?其实游戏脚本并非一个新的名词或者技术,早在暴雪的《魔兽世界》开始火爆的年代,人们便熟知了 一个叫做Lua的脚本语言。而当时其实有很多网游都不约而同地使用了Lua作为脚本语言,比如网易的大话西游系列。但是在单机游戏流行的年代,我们却很少 听说有什么单机游戏使用了脚本技术。这又是为什么呢?因为当时的硬件水平不高,所以需要使用C/C++这样的语言尽量压榨硬件的性能,同时,单机游戏的更 新换代并不如网游那么迅速,所以开发时间、版本迭代速度并非其考虑的第一要素,因而可以使用C/C++这样开发效率不高的语言来开发游戏。

 从游戏脚本语言说起,剖析Mono搭建的脚本基础

但是随着时间的推移,硬件水平逐年提升,压榨硬件性能的需求已经不再迫切。相反,此时网游的兴起却对开发速度、版本更迭提出了更高的要求。所以开发 效率并不高效,且投资、巨大风险很高的C/C++便不再适应市场的需求了。更加现实的问题是,随着Java、.Net甚至是JavaScript等语言的 流行,程序员可以选择的语言越来越多,这更加导致了优秀的C/C++程序员所占比例越来越小。而网游市场的不断扩大,对人才的需求也越来越大,这就造成了 大量的人才空缺,也就反过来提高了使用C/C++开发游戏的成本。而由于C/C++是门入门容易进阶难的语言,其高级特性和高度灵活性带来的高风险也是每 个项目使用C/C++进行开发时所不得不考虑的问题。

一个可以解决这种困境的举措便是在游戏中使用脚本。可以说游戏脚本的出现,不仅解决了由于C/C++难以精通而带来的开发效率问题,而且还降低了使用C/C++进行开发的项目风险和成本。从此,脚本与游戏开发相得益彰,互相促进,逐渐成为了游戏开发中不可或缺的一个部分。