`
jian0487
  • 浏览: 96215 次
  • 性别: Icon_minigender_1
  • 来自: 宁德
社区版块
存档分类
最新评论

游戏中的脚本语言

阅读更多
游戏业中的脚本
       脚本不是游戏业的新技术,但脚本为业外的人所知悉,却应归功于《魔兽世界》(以下简称Wow)在世界范围的流行。通过Wow伟大的自定义界面系统,Lua这一脚本语言一举成名天下知。
       虽然Lua的出名有点横空出世的感觉,但游戏业内早就使用脚本来开发游戏了。即便是在国内,我们所熟悉的网游大多数是用脚本开发的。此前已有人士透露,网游的长青树《梦幻西游》和《大话西游2》就大量应用了脚本技术;特别是《大话西游2》,比Wow早几年做了基于Lua脚本的游戏开发。可以说,国内与国外在脚本技术上并不存在差距,大家都是站在同一起跑线上的,这为国内游戏行业赶超国际水平提供了强大的保障。
       回顾过去,我们发现单机版游戏时代很少听到脚本这个词。那么,为什么在网游时代脚本成了业界宠儿?原因是多方面的。比如在单机时代,无论游戏机还是PC的性能都非常低下,需要具有更高执行效率的编译型语言来“压榨”机器性能。但硬件性能的提升并不是脚本流行开来的决定性因素,真正的原因是市场的需要。
网游时代的市场需求快速变化、竞争激烈,如果延用单机时代一年半载才出一个新版本的开发方式,那必然会被市场淘汰。正是这种快速变幻的市场需要和低效的开发工具之间的矛盾,引发了开发工具的革命——脚本语言风生水起。脚本的兴起因为游戏业中传统的编译型语言(asm/C/C++)的性能优势在硬件性能大幅攀升的今天已经不复存在。在网游时代,游戏业中的主要矛盾已经由性能低下的硬件与游戏执行效率之间的矛盾转变为快速变化的市场需要与低效的开发工具之间的矛盾,脚本在网游时代的辉煌是历史的必然。
       除了市场和硬件因素外,还有一点不能忽略。那就是C/C++进行游戏开发的高成本性和高项目风险。随着java/.net逐年流行,大学生中学习C/C++编程语言的人越来越少。物以希为贵,人亦如是。C/C++程序员新鲜血液补给少,而网游开始流行,巨大的网游市场需求造成大量的人才空缺,这时也就带来了C/C++的高成本。即便是资本雄厚的公司,可以雇佣大量C/C++程序员开发游戏,也不能无视C/C++高级特性和高度的灵活性带来的高项目风险。C/C++是易学难精的编程语言,应用在大型项目的时候极容易因为程序员的水平参差不齐而引起沟通不畅,还有滥用的高级特性也容易引入大量的bug。游戏公司希望找到一个方案以解决高成本、高风险的问题——这个方案就是在游戏中使用脚本。
脚本的现状
       脚本解决了C/C++无法解决的开发效率难题,而且降低了成本和风险。脚本在游戏业中就此蓬勃地发展了起来,现在脚本技术已经成为游戏业中不可或缺的一环。横看当前脚本技术,一片大好形势就如同八九点钟的太阳。不仅语言百家争鸣,而且书籍也层出不穷;不仅在游戏业开花结果,在web等其它应用也大放异彩。
       首先,我们来看看现在比较流行的脚本: Python、Lua、ruby和Erlang。Python和Lua是网络游戏开发的中坚力量;ruby凭借ruby on rails的web开发框架的强劲力量,不可小瞧它在游戏业的前途;erlang在高并发性上的原生优势吸引了无数追求高性能的网游服务器的开发人员的目光。
       然后让我们来看看书籍和资料方面。大家都知道,文档对语言的普及起到正向催化剂的作用,甚至可以看作是语言的有机组成部分,必不可少。Python经过基金会的多年经营和在NASA、Google得到重用的原因,书籍方面比较丰富;ruby随着RoR的流行水涨船高,这两年行情看好,书籍也出版得越来越多了;反观Lua,虽然流行度一直走高,但出来的书却没有几本,跟他苦涩的接口设计和缺乏针对大型应用的原生支持不无关系;Erlang是典型的少众语言,但随着多核时代的来临和高并发网络应用的需求,有着光明的发展前景,现在《Programming Erlang》等书已经在策划出版了。
       最后把焦点重新聚集到游戏开发行业中来,可以发现脚本言语已经在游戏业中开发结果,硕果累累。除了前文提到的《魔兽世界》和网易经典“西游系列”都使用了脚本外,现在大多数流行程序都使用脚本,如腾讯的《QQgame》和搜狐的《天龙八部》等。现在的游戏引擎也都提供了脚本接口,无论是商业的Unreal引擎还是开源的OGRE,无一例外。
脚本的优势
       脚本在游戏业中找到自己的一席之地,是因为网游市场需要一个快速开发方案来避免C/C++开发带来的项目高成本和高风险。那么,具体而言脚本相对于C/C++这类编译型语言有什么优势呢?
一、易于学习、代码可维护性强。通常脚本的语法都非常简单,也没有太多高阶的特性,学习的门槛较C/C++低得多。如Python号称只需要花一个下午即可学会。这使得游戏开发公司可以招聘完全没有脚本编程经验的新手,通过低成本的培训,迅速走上工作岗位。除易于学习外,脚本代码也有更好的可维护性(尽管写出没有人看得懂的Lua代码也非难事)。因为脚本不会有很多高阶特性(如C++里的模板元编程就是高阶特性),所以脚本程序员有更多精力关注架构、模式、重用和测试,从而提高了代码的质量;相应地,没有那么多让人困惑的高阶特性,也使得代码“简洁”不少。
二、降低开发成本。如第一点所言,脚本易于学习,使得游戏开发公司可以大量应用新手,是降低成本的有效手段。那么如何来保证新手写的代码的质量呢?这需要我们辩证地看问题。从经验上看新手写的程序无论用什么言语,bug肯定不少。但一个C新手编写的代码和Python新手编写的相同功能的代码相比,C版本应该会有更多的bug。由于C程序需要编译,而脚本程序(大部分)都可以直接解释执行,所以在排除bug方面脚本也有先天的优势,这使得脚本在低成本的同时能够更好地保证代码质量。
三、形成人才壁垒。软件开发行业是一个动荡的行业,无数的程序员都在跳槽和谋划跳槽的状态中过日子。使用脚本开发,形成人才壁垒是游戏业减少人才流动的有效手段。因为脚本现在除了在游戏业中大红大紫外,并没有在其它行业形成杀手级应用(虽然在web开发方面也有燎原之势,但终究不似在游戏业中的地位高尚)。这就让游戏程序员很少会考虑非游戏业的职位,而其它行业的程序员却可能会因为脚本的易学习性转投游戏业。脚本除了能有效形成行业间的人才壁垒外,也能有效地形成企业间的人才壁垒。因为现有的脚本种类繁多,不同公司往往有不同的选择,甚至有些公司使用自己开发的脚本语言。程序员从公司A跳槽到公司B可能就要学习使用另一种脚本,这提高了跳槽的成本,从而使人才流动减少。
脚本的发展趋势
       依照目前的趋势来看,脚本语言也一定会更加普及开来,而且会渗透到其它行业中去。随着网游从业人员的增长,脚本程序员也一直相应地增长着,而且Web2.0热潮引起的网络需求,也促生了一批批新的脚本程序员。网游市场就像一个正在滚动的雪球,带动着脚本的普及。
       随着脚本在游戏业中越来越流行,市场就会需要更高的生产效率。脚本虽然一定程度上缓解了市场与生产工具之间的矛盾,但仍然不够彻底。由于市场竞争趋于激烈,而网游在很多功能实现都相差无几:如网络、数据库、图形甚至部分逻辑。这必然会催生网游生产组装化——大量的中间件相互组合形成新的网游。从现在来看,Bigworld、PhysX和Unreal等都是比较流行的网游中间件。脚本语言是粘合各个中间件的良好胶水语言,所以随着网游生产组装化,脚本有良好的发展空间。
       那么,当脚本发展到如日中天的时候,会取代C/C++这些编译型语言吗?我认为不会。脚本语言和编译型语言在生产效率和执行效率上各擅胜场,网络游戏既需要能快速应变的脚本,也需要能快速执行以提供更绚丽游戏效果的编译型语言,在未来,它们之间会保持长久的和谐互补关系,相辅相成。
结语
综上所述,网游时代是上帝赐予脚本语言的绝好时机,脚本语言很快将迎来自己光芒四射的世代。脚本语言拥有编译型语言无可比拟的生产效率优势,它们将并肩奋战在游戏最前线。
 
 
想要了解更多关于脚本??http://book.csdn.net/bookfiles/207/  《游戏脚本高级编程》这本书值得看看.
分享到:
评论

相关推荐

    Python游戏脚本语言(精讲)

    Python游戏脚本语言精讲 Python 是一种优秀的游戏脚本语言,因其强大、易于嵌入、可与 C/C++ 代码无缝集成、拥有多种高级特性且可用于自动化生产过程。游戏开发中,使用脚本语言可以快速开发游戏行为,而不需要陷入...

    游戏脚本语言(ruby初步)

    Ruby语言和Python语言是游戏脚本语言中两个最流行的语言,它们之间的比较也非常有趣。 Ruby语言的优点在于它的语法简洁、易于学习,而 Python语言的优点在于它的标准库非常丰富。 Lua语言是另一款流行的游戏脚本...

    在delphi中嵌入脚本语言

    1. **游戏逻辑**:许多游戏使用脚本语言来编写游戏规则和AI,以便在不影响游戏引擎的情况下进行更新。 2. **自动化工具**:在自动化测试或自动化工作流中,脚本语言可以方便地控制和定制流程。 3. **用户界面配置**...

    脚本语言做的Game

    本文将深入探讨“脚本语言做的Game”这一主题,介绍脚本语言在游戏开发中的重要性、常见脚本语言以及它们如何使游戏变得有趣且实用。 首先,脚本语言是一种高级编程语言,其主要特点是简洁、易读,通常用于控制软件...

    一个用lua写的游戏脚本实例

    "游戏脚本设计与实现" ...从提供的游戏脚本实例中,我们可以了解到游戏脚本设计的基本结构、游戏任务的设计、游戏机制的实现、游戏逻辑的编写、lua语言在游戏脚本中的应用、游戏脚本的优化和游戏脚本的测试等知识点。

    python游戏项目脚本大全.zip

    python游戏项目脚本大全 python游戏项目脚本大全 python游戏项目脚本大全 python游戏项目脚本大全 python游戏项目脚本大全 python游戏项目脚本大全 python游戏项目脚本大全 python游戏项目脚本大全 python游戏项目...

    GameMonkey脚本语言包装类

    在GameMonkey脚本语言中,"包装类"通常指的是C++中用来封装脚本对象的类。这类包装类的主要目的是将C++的对象和功能暴露给脚本环境,以便于在脚本中调用。包装类通常会有一个与之对应的脚本类型,它们之间通过注册和...

    Delphi支持多种脚本语言演示.rar

    其次,Lua是一种轻量级的脚本语言,常用于游戏开发和嵌入式系统。`luadebugger.exe`可能是用于调试Lua脚本的组件,它可能提供了类似的功能,如线性调试、调用堆栈查看等,帮助Delphi开发者调试嵌入到Delphi应用中的...

    FLASH脚本语言详解.doc

    FLASH脚本语言详解 FLASH脚本语言是用于创建交互式FLASH动画和应用程序的脚本语言,具有强大的编程能力和灵活的应用性。 FLASH脚本语言可以用来控制FLASH电影的播放、交互、动画和其他效果。 FLASH脚本语言的主要...

    如何在vc程序中嵌入脚本语言

    在VC(Visual C++)程序中嵌入脚本语言是一种常见的技术,它允许开发者通过脚本动态控制程序的行为,而不必重新编译整个程序。这种技术广泛应用于游戏开发、自动化工具、配置系统等多个领域。本文将详细介绍如何在VC...

    Lua游戏脚本语言入门.doc

    Lua 游戏脚本语言入门 Lua 是一种轻量级、灵活的脚本语言,广泛应用于游戏开发领域。下面是 Lua 游戏脚本语言入门的知识点总结: 注释 在 Lua 中,有两种类型的注释:单行注释和多行注释。单行注释以 "--" 开头,...

    游戏脚本高级编程附带资料.7z

    游戏脚本高级编程是游戏开发领域中的一个重要环节,它涉及到如何使用特定的编程语言和工具来创建、管理和优化游戏逻辑。在这个压缩包“游戏脚本高级编程附带资料.7z”中,我们可以期待找到一系列关于游戏脚本的深度...

    各类游戏脚本制作教程,简化你的操作

    游戏脚本制作是一种利用编程语言来控制游戏内角色行为的技术手段,它可以用来开发各种游戏脚本或用于简化工作中重复性的操作。 #### 关键知识点 ##### 游戏脚本的基础概念 游戏脚本是程序员通过特定语言编写的代码...

    Lua脚本在游戏引擎中的应用

    因此,有专家建议采用已有的脚本语言,如Lua、Python、Tcl等,这些语言可以集成到游戏引擎中,这样不仅可以缩短游戏开发周期,还能利用这些脚本语言的灵活性和健壮性。 Lua作为一种中间代码型脚本语言,特别适合被...

    易脚本 中文 脚本语言 引擎

    全中文的脚本语言、结构灵活、语法简单,最初是作为报表设计程序使用,因其扩充性好,开发调用容易,也可方便的嵌入到其它程序中,让软件产品更灵活,让普通用户享受中文编程,让编程更有乐趣。整体脚本引擎执采用...

    林登脚本语言编译器(second life)

    林登脚本语言(Linden Scripting Language,简称LSL)是Second Life(第二人生)虚拟世界中使用的一种内置编程语言。它允许用户为虚拟对象编写脚本,以实现交互性和自动化功能,如物体的行为、动画、触发器等。这款...

    游戏脚本-其他脚本.zip

    游戏脚本在IT行业中扮演着至关重要的角色,特别是在游戏开发领域。"其他脚本.zip"这个压缩包可能包含了各种非主流或特定用途的游戏脚本,这些脚本可以帮助开发者实现游戏内的特定功能,增强游戏体验,或者优化游戏...

    Lua脚本语言在自动测试中的应用

    【Lua脚本语言在自动测试中的应用】 Lua是一种轻量级的脚本语言,因其高效、易用和可扩展性而在自动测试领域中得到广泛应用。它允许开发者快速编写测试脚本,实现对软件和硬件的自动化测试,从而提高测试效率,减少...

    用php脚本语言编写的一些小游戏(简单)

    ### PHP脚本语言在游戏开发中的应用 #### 引言 随着互联网技术的快速发展与普及,各类编程语言在游戏开发领域扮演着越来越重要的角色。PHP作为一种广泛应用的脚本语言,其简洁性和易学性使其成为游戏开发入门的...

Global site tag (gtag.js) - Google Analytics