《脚本策划基础》由会员分享,可在线阅读,更多相关《脚本策划基础(10页珍藏版)》请在金锄头文库上搜索。
1、脚本策划LUA基础(研发中心/抗战项目组张哲)课程目的帮助学员认识游戏策划中脚本策划定位、指责,以及工作内容和特点,给新进行业者一个方向性的指引,建立正确的学习途径和工作价值观。初步讲解LUA语言,让策划最LUA语言有比较清晰的了解,为以后学习、使用LUA语言打下基础适合对象应届毕业生、初级策划、,-、-刖言本课程的主要目的是帮助学员准确认识脚本策划这一职位的工作内容和特点,帮助其准确理解策划职责,提高自身能力。脚本策划在游戏策划中比较容易上手,在对于初步进入游戏策划行业的人来说,脚本策划的入手程度要明显比系统策划、数值策划来的快。因为脚本策划初期所学习的对象就是脚本语言,这些语言有成型的规则
2、和教程,有明确的方向可以学习。比如在这里将讲述的LUA语言。相对于其他方向的策划来说脚本策划的后期发展方向相对单一,工作范围相对狭窄。俗话说“条条大路通罗马”,做某个方向的策划并不能说明以后的发展方向如何,而且事实上很少有策划能只做自己方向的事情不涉及其他方向的内容。需要郑重声明的是,游戏策划行业里的“脚本”和影视制作中的“脚本”完全是两个不同的概念。游戏策划中的脚本不是剧本。由于时间仓促以及作者水平有限,文中的错漏之处还请读者批评指正。脚本策划1.1 概述脚本策划主要负责游戏中脚本程序的编写,有些类似于程序员但又不同于程序员,因为会负责游戏概念上的一些设计工作。通常是游戏设计的执行者。因此游
3、戏脚本策划必须要有编程功底。1.2 职能脚本策划的工作是任务等的脚本编写,以及管理程序提供的各种需要策划维护的脚本接口。如果说开发语言是游戏程序得以运行的基石,那么脚本语言就是游戏世界得以运行的基石。一切剧本、图片、音乐、动画等皆是由脚本语言整合在一起并由程序解释执行的。所以可以说脚本是程序与剧本之间的桥梁。脚本策划的职能就是建立起这个桥梁,脚本语言当前脚本语言层出不穷,在网络游戏行业比较流行的脚本语言是LUA和PYTHON。LUA:Lua是一个小巧的脚本语言。该语言的设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。我们熟知的作品为魔兽世界“大话西游系列”它的主页是。Py
4、thon:PYTHON也是一款比较灵活的脚本语言,但是这里它不作为重点来论述,有兴趣的人可以去找相关资料进行学习。LUA语言概述LUA语言是一款灵活的语言,使用它作为脚本的网络游戏很多大家都耳熟能详,比如RO,WOW,梦幻西游系列等。中青宝网的游戏也是使用LUA语言作为游戏脚本语言。一门语言的学习从来就不可能一蹴而就的,这里也是按照正常的途径一点一点的来教给大家如何学习一门语言。我们将从一个策划对脚本的需求角度来了解LUA语言LUA的基本应用通过上文对脚本策划的描述,我们可以知道脚本策划的大致工作,那么LUA语言就是进行这些工作的基础。在我们所见到的游戏中到底有哪些地方使用了脚本例:梦幻西游里
5、的跑环任务,魔兽世界里的BOSSAI设计,魔兽世界的副本设计等等,在中青宝网的游戏抗战中,UI界面都是使用LUA来进行编写的。LUA语言是怎样来产生作用的我们将在下面的学习中一点点来接触。LUA语言基础学习一门语言必须掌握一些基础,正如学习英语需要学会26个英文字母,学习汉语需要记住基本字形一样。LUA语言中也有需要硬性记忆的东西,没有接触过计算机语言的人必须靠自己的记忆把以下的基础内容记住。这些东西可能没有一点用,但是缺少这些东西,你可能会犯严重的错误。词汇约定:LUA中的标识符可以是任何字符串,数字和下划线,但不能是数字开头。这符合大多数语言的标识符定义规则。(字符的定义依赖于当前的位置:
6、任何字母排序的字符可以做为标识符被使用)以下的字符串是作为关键字被保留的,不能定义为标识符:andbreakdoelseelseifendfalseforfunctionifinlocalnilnotorrepeatreturnthentrueuntilwhileLUA是大小写敏感的语言:and是一个保留字,但And和AND是不同的,合法的标识符。作为一个约定,标识符以下划线开头并紧跟大写字母(如:VERSION)是LUA作为内部变量保留的。下面的字符串指出另外一些标号:=()斜体的字符串是被使用匹配的单引号或双引号定界的。它可以包括类型于C的转义符:值和类型LUA是一种动态类型语言,这意味着
7、变量没有类型,只有值。在这个语言里没有类型定义,所有的值传达自已拥有的类型。在LUA中有八种基本类型:nil、boolean、number、stringfunction、userdata、thread、table。.Nil是空值(nil)的类型。没有语言基础的人理解起以上东西可能比较吃力,但是这些东西必须要记住,这是基础。除此之外,还有很多基础性的知识需要掌握,这些东西需要花费时间去理解,记忆,例如:变量,强制等等LUA脚本实例在了解LUA基础后,这里我们先看一个LUA实例。Speaknum=4随机对白的数量Speak=NPC给出的第一句随机对白,参数一对白,参数二几率Speak1=同志们!我
8、们失去了许多英雄!这意味着我们失败了吗不!这只是个开始!,25Speak2=日寇的国力和军力是我中国的数倍之多!是什么使我们坚持到现在!这是因为,我们进行的是一场正义的战争!,50Speak3=大家的兄弟姐妹们,父老乡亲们,多少人死在了日寇的屠刀下!我们绝不可忘记这悲痛和愤怒!,75Speak4=同志们,同胞们,站起来吧!将悲痛和愤怒化作力量!站起来吧!中国万岁!,100functionClick(npc,player)-点击NPCtemp=GetSpeakNum(Speaknum,Speak)locals=.Speaktemp1.7n/n/n离开player:InitChoose(s,Can
9、cel)endfunctionCancel()end这是一个从“抗战”游戏里拿出的脚本,该脚本的功能是当你点击NPC的时候随机出现三句对话,这三句对话出现的几率通过脚本作出规定。Click是一个程序给出的函数接口,这个接口的作用是:当你点击NPC的时候会调用这个函数。这是NPC和玩家的交互切入点。Speak=这是一个表结构,在这个结构里我们可以定义一系列的想使用的东西。进行预先储存。Locals这是定义一个局部变量,在LUA语言里,变量有着非常广泛的作用,它可以被赋值成数字,字符,字符串等几乎所有的常用值。而InitChoose也是一个程序给出的接口,通过这个接口我们可以让游戏中的玩家和NPC
10、对话。这个脚本只是给出一个前提印象。暂时不深入讨论。LUA常用结构1.6逻辑运算,算术运算逻辑运算和算术运算比较简单,可以轻松掌握,这里不在冗述。1.7函数在LUA脚本制作中,函数是非常重要的内容,它是构成所有脚本的主要构件。如上例中的Click函数。实际脚本多数就是这些函数间的调用。函数有两种用途:1.完成指定的任务,这种情况下函数作为调用语句使用;2.计算并返回值,这种情况下函数作为赋值语句的表达式使用。在我们编写脚本的时候这两类函数都经常使用。比如你想让做完某个任务的玩家获得奖励。那么可以给出一个奖励玩家的函数。例如在抗战里的奖励函数。functionPrize(player)ifpla
11、yer:FinshTask(失恋的海豚)=1thenplayer:AddlteName(蔷薇种子,0)player:Addmoney(1000)endend这里player是指针,我们可以通过函数对指针来进行一系列的操作。这个函数是判断玩家指针有没有完成“失恋的海豚”这个任务,如果完成了就给他一颗“蔷薇种子”同时奖励1000的钱一般来说,游戏脚本使用LUA语言都是对指针进行操作。例如对玩家进行奖励,判断玩家是否在做任务,判断玩家是否有某些物品,判断NPC是否存活等等。这里提到的“玩家”“NPC”实际都是指针。(指针的概念请没有程序基础的人参考相关资料进行理解)在LUA语言中函数是有两部分构成:
12、函数名和参数。在上边的例子中Prize是函数的名称,而player是函数的参数。在刚接触脚本的时候经常会有些人不明白这些参数到底用来做什么,什么时候会出现参数这个概念。一般来说脚本语言中函数有两种出现方式:1.程序按需求给出的接口2.脚本策划自定义的函数。程序按需求给出的接口:在这个接口里程序规定了函数的名称、数值、使用对象等等,这样的函数里参数是固定不变的。比如在抗战中Click(NPC,PLAYER)这个点击触发函数就有两个参数第一个参数是npc指针,第二个是player指针。无论这两个参数是被写成什么样子它们都依然代表这两个指针。在这样的函数里所有的参数是固定的,我们可以省略掉不使用的那
13、部分。自定义函数:在这里我们可以随意写函数名称,任意传递参数,例如上边的Prize函数。1.8表构造器表是Lua特有的功能强大的东西。最简单的构造函数是,用来创建一个空表。可以直接初始化数组。表结构在LUA脚本语言中是非常常用的的一个结构,在这个结构里可以储存大量的数据,而这些数据可以用来进行一系列的操作例如如果我们游戏里进行PK,想对获得比赛的前10名发一些物品,那么就可以用表格来纪录这些名单。PrizeName=PrizeName1=蓝色多瑙河PrizeName2=我是冠军PrizeName3=挪威的森林PrizeName4=江湖PrizeName5=白色恐怖PrizeName6=轻纱漫舞
14、PrizeName7=雪儿PrizeName8=王三力PrizeName9=我只是想看看名字对多能起多长PrizeName10=帅猫当玩家点击领奖NPC的时候我们可以得到当前玩家的名字,如果他的名字是表格里存的名字就可以获得奖品,并设置好不能再次领取,如果不是则可以通过对话告诉玩家“你没获得奖励资格。之类的话来回复。在这个表里PrizeName=是初始化表格,而PrizeName4=江湖这是在表格的第四个位置存入一个字符串“江湖”。这个表格是基础的一元表,如果需要还可以构造多元表格例如PrizeName=我是冠军,number=2PrizeName1=name=蓝色多瑙河,number=1Pr
15、izeName2=name=这样就可以既记载玩家的角色名又记载玩家的名次。对得获得奖励的玩家近一部细分。PrizeName3=name=挪威的森林,number=3PrizeName4=name=江湖,number=4PrizeName5=name=白色恐怖,number=5PrizeName6=name=轻纱漫舞,number=6PrizeName7=name=雪丿儿,number=7PrizeName8=name=王三力,number=8PrizeName9=name=我只是想看看名字对多能起多长,number=9PrizeName10=name=帅猫,number=10LUA的表格有两种书写形式比如PrizeName3name和PrizeName3.name所表示的都是“挪威的森林”