loading请求处理中...

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

2021-12-01 11:25:24 阅读 10503次 标签: 开发 作者: 韩旭东
    0x00 前言

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


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


    0x01 Why?从为何需要游戏脚本开始


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


    为何需要有脚本系统呢?脚本系统又是因何而出现的呢?其实游戏脚本并非一个新的名词或者技术,早在暴雪的《魔兽世界》开始火爆的年代,人们便熟知了一个叫做Lua的脚本语言。而当时其实有很多网游都不约而同的使用了Lua作为脚本语言,比如网易的大话西游系列。

    但是在单机游戏流行的年代,我们却很少听说有什么单机游戏使用了脚本技术。这又是为什么呢?因为当时的硬件水平不高,所以需要使用C/C++这样的语言来尽量压榨硬件的性能,同时,单机游戏的更新换代并不如网游那么迅速,所以开发时间、版本迭代速度并非其考虑的第一要素,因而可以使用C/C++这样开发效率不高的语言来开发游戏。


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


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


    而到了如今手游兴起的年代,市场的需求变得更加庞大且变化更加频繁。这就更加要求需要有脚本语言来提高项目的开发效率、降低项目的成本。
 
    而作为游戏脚本,它具体的优势都包括哪些呢?


    易于学习,代码方便维护。适合快速开发。开发成本低。由于上述第一点,因为易于学习,所以可以启用新人,同时开发速度快,这些都是降低成本的方法。


    因此,包括Unity3D在内的众多游戏引擎,都提供了脚本接口,让开发者在开发项目时能够摆脱C/C++(注:Unity3D本身是用C/C++写的)的束缚,这其实是变相的降低了游戏开发的门槛,吸引了很多独立开发者和游戏制作爱好者。


    而Mono则提供了这种脚本机制实现的可能性。即允许开发者使用JIT编译的代码作为脚本语言为他们的应用提供拓展。


    目前很多脚本语言的选择趋向于解释型语言,例如cocos2d-js使用的javascript。因此效率无法与原生代码相比。而Mono则提供了一种将脚本语言通过JIT编译为原生代码的方式,提高了脚本语言的效率。例如,Mono提供了一个原生代码生成器,使你的应用的运行效率尽可能高。同时提供了很多方便的调用原生代码的接口。


脚本开发公司推荐

成为一品威客服务商,百万订单等您来有奖注册中

留言( 展开评论

快速发任务

价格是多少?怎样找到合适的人才?

官方顾问免费为您解答

 
脚本开发相关任务
DESIGN TASK 更多
可视化展示工具,开发

¥1000 已有2人投标

做DY协议相关的 开发

¥3000 已有0人投标

游戏开发,微信沟通

¥10000 已有0人投标

点击器开发

¥5000 已有0人投标

传奇引擎gom登录器开发

¥1000 已有0人投标

手游APP开发

¥5000 已有0人投标

开发H5游戏

¥3000 已有0人投标