【游戏设计】游戏中的脚本语言到底是什么?
什么是游戏脚本?
使用c/c 开发项目,随着项目的扩大,源码的编译时间也会越来越长。有时修改一些常量就需要重新编译整个项目。是否感觉到了痛苦?

见招拆招,为了解决这个问题,可以将很多常量放到一个初始化文件中。并且编写一段代码去读取并解析这个文件。这样,常量就以初始化文件/配置文件的形式独立出来了。修改常量的值再也不用重新编译整个项目了!
这就是一个最初级的游戏脚本!而且初始化文件中的文本就是最基本的游戏脚本语言。
但是,仅仅是提供一些常量的读取和解析似乎还不能够满足游戏开发的需求,为了提高游戏开发的效率,节约编译c/c 项目时泡咖啡的时间,更高级的游戏脚本语言显然有必要引入。
So,更高级的脚本语言增加了脚本和c/c 的交互性,我们不但可以初始化变量,而且可以创建游戏逻辑甚至时游戏对象。

游戏脚本的运行通过虚拟机来进行,我们使用脚本语言的语法编写的函数可以被虚拟机读取并运行。换言之,脚本可以通过虚拟机与c/c 进行通信,使得数据可以在两者之间来回传递。
脚本可以是解释执行的,也可以是编译执行的。解释执行的脚本通过解释器,逐行的读取、解析和执行。但是,为了节约在运行时的开销,一些解释执行的脚本会自动编译脚本。Lua便是其中的代表。

当然,脚本还可以是编译执行的。编译执行的脚本是通过这种脚本语言的编译器编译为某种形式的中间语言(IL)的脚本。虚拟机是可以直接执行这种中间语言的。
这种中间语言是平台无关的,换言之,这种中间语言是供虚拟机使用的,而不关心具体的平台。
例如现在很流行的Unity引擎所使用的C#语言。

在使用Unity开发游戏的过程中,脚本代码的编译只需要分为两部分就可以了:
第一部分是从C#代码本身到CIL的编译(其实之后 CIL还会被编译成一种位元码,生成一个 CLI assembly);
第二部分 是运行时从 CIL(其实是 CLI assembly,不过为了直观理解,此处不必纠结这种细节)到本地 指令的即时编译(这就引出了为何 Unity 3D官方没有提供热更新的原因:在 iOS平台中 Mono 无法使用 JIT 引擎,而是以 Full AOT 模式运行的,所以此处说的即时编译不包括 iOS 平台)。

脚本的现状
脚本解决了C/C 无法解决的开发效率难题,而且降低了成本和风险。脚本在游戏业中就此蓬勃地发展了起来,现在脚本技术已经成为游戏业中不可或缺的一环。横看当前脚本技术,一片大好形势就如同八九点钟的太阳。 不仅语言百家争鸣,而且书籍也层出不穷;不仅在游戏业开花结果,在 web 等其它应用也大放异彩。
再把焦点重新聚集到游戏开发行业中来,可以发现脚本言语已经在游戏业中开发结果,硕果累累。除了前文提到的《魔兽世界》和网易经典“西游系列”都使用了脚本外,现在大多数流行程序都使用脚本,如腾讯的《QQgame》和搜狐的《天龙八部》等。现在的游戏引擎也都提供了脚本接口,无论是商业的Unreal引擎还是开源的OGRE,无一例外。

脚本的优势
一、易于学习、代码可维护性强。通常脚本的语法都非常简单,也没有太多高阶的特性,学习的门槛较C/C 低得多。如Python号称只需要花一个下午即可学会。这使得游戏开发公司可以招聘完全没有脚本编程经验的新手,通过低成本的培训,迅速走上工作岗位。除易于学习外,脚本代码也有更好的可维护性。
因为脚本不会有很多高阶特性,所以脚本程序员有更多精力关注架构、模式、重用和测试,从而提高了代码的质量;相应地,没有那么多让人困惑的高阶特性,也使得代码“简洁”不少。
二、降低开发成本。如第一点所言,脚本易于学习,使得游戏开发公司可以大量应用新手,是降低成本的有效手段。那么如何来保证新手写的代码的质量呢?这需要我们辩证地看问题。从经验上看新手写的程序无论用什么言语,bug肯定不少。

但一个C新手编写的代码和Python新手编写的相同功能的代码相比,C版本应该会有更多的bug。由于C程序需要编译,而脚本程序(大部分)都可以直接解释执行,所以在排除bug方面脚本也有先天的优势,这使得脚本在低成本的同时能够更好地保证代码质量。
三、形成人才壁垒。软件开发行业是一个动荡的行业,无数的程序员都在跳槽和谋划跳槽的状态中过日子。使用脚本开发,形成人才壁垒是游戏业减少人才流动的有效手段。因为脚本现在除了在游戏业中大红大紫外,并没有在其它行业形成杀手级应用。这就让游戏程序员很少会考虑非游戏业的职位,而其它行业的程序员却可能会因为脚本的易学习性转投游戏业。
脚本除了能有效形成行业间的人才壁垒外,也能有效地形成企业间的人才壁垒。因为现有的脚本种类繁多,不同公司往往有不同的选择,甚至有些公司使用自己开发的脚本语言。程序员从公司A跳槽到公司B可能就要学习使用另一种脚本,这提高了跳槽的成本,从而使人才流动减少。

游戏开发中常见的10种编程语言
游戏开发是非常有经验和熟练的程序员的工作。 它可能花费数亿美元。 这是一项非常有创意的工作,也需要技术水平。 他们需要具有特定需求的编程语言。

以下是用于游戏开发的十大编程语言的列表。
1、C#
C#如今在许多游戏引擎中广泛使用,并且是游戏开发所需的很流行的语言之一。 它具有XNA框架,该框架是Microsoft的一组工具和运行时环境,使其特别适用于Xbox或Windows上的游戏。 如果您希望使用monogame在几乎任何平台上分发游戏,这是一种很好的语言。
2、C
C 是一种面向对象的语言,被认为是最难学习的语言之一,但它是游戏开发人员的重要语言。 它允许对硬件和图形过程进行更直接的控制,这对行业很重要,对于某些很受欢迎的游戏引擎来说,它是很受欢迎的语言。 它还提供了对参数和内存管理的大量控制,从而增加了游戏的性能和用户体验。
3、Java
Java使用与C 相同的面向对象原理,但是提供了范围更广的系统。 Java代码通常在Java虚拟机(JVM)上运行,并转换为可在任何系统上执行的通用字节码。 因此,Java是使开发人员能够为任何给定系统开发游戏的少数游戏编程语言之一。 它是游戏的优秀编程语言之一。
4、JavaScript
JavaScript是很流行的游戏编程语言之一,作为在线交互语言更是如此。 使用JavaScript,可以更轻松地将代码与HTML和CSS等传统网络技术集成,从而导致越来越多的跨平台手机游戏。
5、HTML5
HTML5已成为网络上最常见的游戏编程语言之一。 您今天玩的绝大多数手机游戏都使用这种标记语言。 通过与JavaScript协作创建复杂的基于Web的游戏很容易。 该语言易于学习,并不一定需要学习复杂的算法编程知识,因此已成为游戏开发人员的热门选择。
6、SQL
SQL用于播放器访问后端帐户并在服务器上执行其他操作的后端数据库工作。 有新的语言,库,框架,尤其是关于AR,VR,图形,物理和游戏性的框架。
7、Python
Python是另一种提供OOP方法的语言,是游戏开发人员使用的最容易使用的通用编程语言之一。 它具有Pygame框架,可让程序员快速开发游戏原型。
8、Rust
Rust被吹捧为C的继任者之一。它主要是由Mozilla Foundation作为系统编程语言。 它具有面向对象到面向数据的方法,有助于游戏开发。
9、UnrealScript
UnrealScript是Unreal引擎的本地脚本语言。 它结合了OOP等复杂功能以及多重继承和功能丰富的游戏。 该语言支持所有主要的游戏平台,例如Microsoft Windows,MacOS,Linux,SteamOS,Android和PlayStation VR。
10、Lua
Lua具有简单的语言结构和语法,正在成为游戏行业很受欢迎的语言之一。 它是一种多平台脚本语言,许多现代游戏引擎都将Lua用作其主要的游戏设计编程语言。

转载声明:本文来源于网络,不作任何商业用途。
全部评论

暂无留言,赶紧抢占沙发
热门资讯

什么!参加王座杯能瓜分25000元?先让旺旺哒我康康!...

cgwang王氏教育靠谱吗?

cg王氏教育好不好?

28岁学什么技术可以从头再来?

游戏美术设计师的重要性

男孩喜欢画画学什么专业好?

18岁学什么技能可以赚点零花钱?

UE4课程培训的内容包括哪些?

【游戏开发】游戏中的平面阴影怎么做



