脚本的世界

发表于2015-05-21
评论5 2.6k浏览

脚本的世界

编译:raty

大纲

脚本含义介绍

游戏脚本的应用范围

脚本的编译

脚本事故

 


 

第一节  脚本?!

脚本的含义

         脚本(noxss),度娘翻译即剧本、脚本、讲稿。直接的理解是一种表达的形式或途径。在计算机领域,脚本是一种嵌入式的动态代码,是一种基于命令的语言系统。计算机脚本依据一定的语法规则编写,包含了一定的逻辑分支。

游戏脚本,继承了计算机脚本的先天特质,作为一种基于命令的编译型代码。在游戏中的具体表现为让指定的程序代码或者玩家行为按照它规定的一系列逻辑来严格执行,像现实世界里的红绿灯功能一样。

 

脚本是游戏策划掌握的其中一种工具,用来在游戏世界中表达策划的思想。

脚本工具

         脚本工具针对不同领域有很多很多,比如大名鼎鼎的LuaPythonRuby等等等等。而游戏脚本大致分为2类:自定义游戏脚本工具和公共游戏脚本工具。在公共游戏脚本工具中,最牛X最耳闻能详的要属《WOW》(“魔兽世界”)中大放异彩LuaLua不仅与应用程序配合的很好,而且还可以编译成配置文件更容易维护和理解。《WOW》后的很多MMOG都使用了Lua,感兴趣的可以自行查找关于Lua的相关书籍,有CC++语言基础的同学相信很快就能上手。

         另外一类自定义游戏脚本工具往往都只是针对与当前游戏应用程序上由程序员进行开发。它的应用环境相对来讲非常狭窄,但是在安全上有更高的保护等级不容易被破解。

 

游戏脚本的特点

l  它是一种游戏设计的方法

通过脚本,可以把游戏内容结构化。

l  它是一种体验式的代码

在游戏中,脚本先天具有的描述性和表现性特点得以发挥,玩家在游戏中直接体验到的世界,很大部分上通过脚本表现出来。比如说最常见的和NPC谈话。

         

第二节  游戏脚本的应用范围

通过脚本,游戏策划可以随心所欲地对游戏中的各种对象进行操作。脚本常见的操作对象有如下几种:

 

让我们通过一个例子来详细说明游戏脚本的应用范围:

猫猫城美丽的城主白富美最喜爱的黄瓜被潜伏在城郊的顽皮屌丝偷走了,非常的伤心。如果你在一个小时内帮她找回这条黄瓜她将会送一件礼物,这个礼物打开可以让你在短时间内变成美丽的舞者,并且你如果足够幸运的话还可能获得一只可爱的坐骑宠物。于是你走出了城门,来到了城郊,找到屌丝将它打败并抢回了黄瓜。白富美城主遵守承诺给了你礼物,使用后你立刻变成了最美丽的舞者。

好了,让我们来看看作为游戏策划,我们要做哪些事儿:

l  城主白富美:任务对话、接受任务、领取任务奖励。

l  Monster屌丝:死亡后改变任务状态为完成任务。

l  城门:踩上去之后触发脚本,传送到屌丝的小岛副本。

l  副本初始化:初始化玩家的一些基本信息,并在副本内刷新猥琐的屌丝。

l  Item美丽礼服:使用后激活化妆卡效果,把主角变成美丽的舞者。低概率获得宠物。

l  活动控制:玩家获得宠物向服务器申请宠物,假如当天没有分配完则给与玩家宠物并给全服发送广播。

l  任务:如果在一小时后没有完成任务,系统会自动取消该任务,调用此脚本清空相关状态。

NPC脚本

        

触发方式:以鼠标点击游戏中的NPC触发。

         NPC脚本分为对话文字部分和交互接口部分。对话文字部分可以通过玩家点击对应的交互接口呈现不同的文字对白,而交互接口则提供的是强大的选择功能,让它来告诉程序应该怎么处理玩家的选择。

         在上面的例子中,玩家在城主白富美处对话领取任务以及最终完成任务领取奖励都通过城主白富美所关联的脚本进行处理。

Monster怪物脚本

        

触发方式:一般来讲,怪物的刷新(或重生)、受击、死亡和消失等几种常见的方式都可以触发脚本。甚至是AI上都可以通过脚本来呈现更为强大的效果。

         刷新(或重生)可以改变怪物的刷新地点,刷新频率等;受击可以统计怪物的承受伤害以及攻击者;死亡可以控制产出、事件的触发等,这个最常用;最后消失可以用来控制触发。刚才讲到的这些也只是笔者最为常用的几种功能,实际应用上则更为广泛。

         好了,回到我们刚才的例子。怪物屌丝死亡以后,会改变玩家的任务状态,这里就用到了怪物脚本,当然,能做的可不只这些。

Item道具脚本

        

         

        触发方式:使用道具

         这是常见的使用脚本的方式。双击执行获得物品(各种礼包、宝箱)、接受任务、改变自身状态(恢复血量、增加状态)等等操作。由于用途太过广发,所以不一一赘述了,多留心游戏内道具的表现即可。

         在我们的例子中,玩家完成任务得到了一个变身的道具,那么双击道具进行变身就是道具脚本要做的事情。

Trap触发器脚本

        

触发方式:移动到事件区域、计时器或者指定条件触发

         讲到这里,我们得提一下暴雪出的一款经典RTS游戏《WAR3》(即魔兽争霸3),这款即时战略游戏里将触发器的应用到极致,包括后续衍生出来的DOTA更是。通过触发器将动画(战役开始前的过场动画,非CG)、事件(DOTA里的每隔一段时间增加金币数量以及计时)以及功能(玩家购买卷轴以及道具合成更牛X的装备)更细的展现给玩家,从而增强游戏性。

         当我们的玩家接受了任务准备出城,那么到达城门的传送点时,触发了脚本执行了功能。

Task任务脚本

        

触发方式:接受、取消或终止任务

         任务的接受以及完成一般都会在NPC脚本里面进行,主动放弃或者终止有定义好的任务脚本来执行。虽然这个功能笔者还在使用,但不得不说这样效率非常差,还容易出错。更为主流的任务做法是直接将整个任务的流程打包成为一个单独的任务文件,通过不同的触发方式(NPC、道具等)来整个激活,要这么做需要游戏策划规划好整个的任务体系。这么做的好处就是方便维护而且提高了效率。

         在例子中,城主需要玩家1个小时完成任务,那么这里就需要在任务脚本中限定好任务完成的时间。

UI界面脚本

         触发方式:在执行界面某些按钮上操作触发

         通常会结合游戏内一些特定的面板使用,玩家点击界面中的某个按钮,会调用到相关联的脚本,执行对应的操作。一般都是与程序约定好的,通过对脚本名的特殊约定来进行触发。当我们在某些功能或者需要对量进行人为干预的时候使用。

 

         除了上面的这些脚本的主流用法,还有战斗脚本(战斗开始或者结束时触发,主要在回合制游戏中使用,触发后可执行改变玩家某些状态、怪物消失|刷新、增减某些道具等操作。)、活动控制脚本(触发方式:特定时间点触发。主要应用于节日活动或周期活动。按照脚本中设定好的日期,触发活动不同的状态或不同的阶段。)

 

         好了,我们已经通过例子将游戏脚本的应用范围已经大致说明清楚了。而实际上脚本可应用的地方可不止这些。那么多的脚本应用面,说白了就是制定好的逻辑规则套用在不同的地方罢了

第三节  脚本的编译

         游戏脚本通常以纯文本方式编辑和保存,脚本在撰写完成以后,有些是不能让程序或者系统所识别,这时就需要特定的解释器来进行转换。常见的脚本编辑器有UEUltraEdit)、Notepad等,通过这些优秀的文本编辑器可以方便的让我们编辑脚本代码以及查看和维护。

        

什么是编译

         通俗的说,编译就是翻译,就是将人所编辑的高级计算机语言(源代码)翻译成为计算机能够直接识别的可执行代码。编译可检查并跟踪到具体的语法错误。

         脚本调试

         完成脚本后,要进行调试,通常都是在游戏中进行,以幻想为例,脚本的调试是通过在游戏中动态载入脚本后单步跟踪完成的。调试可检查并跟踪到具体的语义和逻辑错误。

         脚本的关联和调用

         脚本需要与相关对象进行关联,才能在触发对象时被调用到。

         以自由幻想为例,脚本通过以下方式进行关联和调用:

脚本配置文件:*.cfg,所有新增加的脚本都必须包含在配置文件里。

NPC配置文件:*.npc,所有NPC脚本都必须在*.npc文件里进行关联。

Trap配置文件:*.link,所有Trap脚本都必须在*.link文件里进行关联。

怪物配置文件:所有怪物脚本都必须在怪物表里进行关联,并且将对应事件的脚本触发条件置为可触发。

道具配置文件:所有道具脚本都必须在道具表里进行关联,并且将可否使用的字段值设为允许触发。


 

第四节  脚本事故

一起来看看,前面的脚本事件中可能出现什么错误呢?

任务脚本完成了,可以正常的领取,体验任务流程,然后悲剧发生了……

 

l  还没到一个小时,任务就不能完成了……

l  仁慈的城主,在我完成任务时让我领取多次奖励???

l  任务奖品给错了……

l  任务奖品可以无限使用???

上面的这些情况我们称之为脚本BUG,这个在游戏或者公告中会经常遇到。由于脚本也是通过代码编辑来完成,在撰写上会出现一些不能通过编译来纠正的错误,这些错误有些是致命的,所以在脚本的编译中要牢记如下几条准则:

u熟知语法,查看帮助,避免语法错误

u脚本全景,了然于心,避免逻辑错误

u细心编写,仔细检查,避免因粗心造成的错误

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引

0个评论