




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
脚本策划LUA基础(研发中心/抗战项目组 张哲) 课程目的帮助学员认识游戏策划中脚本策划定位、指责,以及工作内容和特点,给新进行业者一个方向性的指引,建立正确的学习途径和工作价值观。初步讲解LUA语言,让策划最LUA语言有比较清晰的了解,为以后学习、使用LUA语言打下基础 适合对象应届毕业生、初级策划1 前言本课程的主要目的是帮助学员准确认识脚本策划这一职位的工作内容和特点,帮助其准确理解策划职责,提高自身能力。脚本策划在游戏策划中比较容易上手,在对于初步进入游戏策划行业的人来说,脚本策划的入手程度要明显比系统策划、数值策划来的快。因为脚本策划初期所学习的对象就是脚本语言,这些语言有成型的规则和教程,有明确的方向可以学习。比如在这里将讲述的LUA语言。相对于其他方向的策划来说脚本策划的后期发展方向相对单一,工作范围相对狭窄。俗话说“条条大路通罗马”,做某个方向的策划并不能说明以后的发展方向如何,而且事实上很少有策划能只做自己方向的事情不涉及其他方向的内容。需要郑重声明的是,游戏策划行业里的“脚本”和影视制作中的“脚本”完全是两个不同的概念。游戏策划中的脚本不是剧本。由于时间仓促以及作者水平有限,文中的错漏之处还请读者批评指正。2 脚本策划2.1 概述脚本策划主要负责游戏中脚本程序的编写,有些类似于程序员但又不同于程序员,因为会负责游戏概念上的一些设计工作。通常是游戏设计的执行者。因此游戏脚本策划必须要有编程功底。2.2 职能脚本策划的工作是任务等的脚本编写,以及管理程序提供的各种需要策划维护的脚本接口。如果说开发语言是游戏程序得以运行的基石,那么脚本语言就是游戏世界得以运行的基石。一切剧本、图片、音乐、动画等皆是由脚本语言整合在一起并由程序解释执行的。所以可以说脚本是程序与剧本之间的桥梁。脚本策划的职能就是建立起这个桥梁,2.3 脚本语言当前脚本语言层出不穷,在网络游戏行业比较流行的脚本语言是LUA和PYTHON。 LUA:Lua 是一个小巧的脚本语言。该语言的设计目的是为了嵌入应用程序中,从而为应用程序提供灵活的扩展和定制功能。我们熟知的作品为魔兽世界“大话西游系列”它的主页是 。Python:PYTHON也是一款比较灵活的脚本语言,但是这里它不作为重点来论述,有兴趣的人可以去找相关资料进行学习。3 LUA语言3.1 概述LUA语言是一款灵活的语言,使用它作为脚本的网络游戏很多大家都耳熟能详,比如RO,WOW,梦幻西游系列等。中青宝网的游戏也是使用LUA语言作为游戏脚本语言。一门语言的学习从来就不可能一蹴而就的,这里也是按照正常的途径一点一点的来教给大家如何学习一门语言。我们将从一个策划对脚本的需求角度来了解LUA语言。3.2 LUA的基本应用通过上文对脚本策划的描述,我们可以知道脚本策划的大致工作,那么LUA语言就是进行这些工作的基础。在我们所见到的游戏中到底有哪些地方使用了脚本? 例:梦幻西游里的跑环任务,魔兽世界里的BOSS AI设计,魔兽世界的副本设计等等,在中青宝网的游戏抗战中,UI界面都是使用LUA来进行编写的。LUA语言是怎样来产生作用的?我们将在下面的学习中一点点来接触。4 LUA语言基础学习一门语言必须掌握一些基础,正如学习英语需要学会26个英文字母,学习汉语需要记住基本字形一样。LUA语言中也有需要硬性记忆的东西,没有接触过计算机语言的人必须靠自己的记忆把以下的基础内容记住。这些东西可能没有一点用,但是缺少这些东西,你可能会犯严重的错误。 词汇约定:LUA中的标识符可以是任何字符串,数字和下划线,但不能是数字开头。这符合大多数语言的标识符定义规则。(字符的定义依赖于当前的位置:任何字母排序的字符可以做为标识符被使用)。以下的字符串是作为关键字被保留的,不能定义为标识符:and breakdoelseelseifendfalseforfunctionifinlocalnilnotorrepeatreturnthentrueuntilwhileLUA是大小写敏感的语言: and 是一个保留字,但And 和AND是不同的,合法的标识符。作为一个约定,标识符以下划线开头并紧跟大写字母(如:_VERSION)是LUA作为内部变量保留的。下面的字符串指出另外一些标号:+-*/=();:,.斜体的字符串是被使用匹配的单引号或双引号定界的。它可以包括类型于C的转义符: 值和类型LUA是一种动态类型语言,这意味着变量没有类型,只有值。在这个语言里没有类型定义,所有的值传达自已拥有的类型。在LUA中有八种基本类型:nil、boolean、number、string、function、userdata、thread、table。.Nil是空值(nil)的类型。没有语言基础的人理解起以上东西可能比较吃力,但是这些东西必须要记住,这是基础。除此之外,还有很多基础性的知识需要掌握,这些东西需要花费时间去理解,记忆,例如:变量,强制等等5 LUA脚本实例在了解LUA基础后,这里我们先看一个LUA实例。Speaknum = 4-随机对白的数量Speak = -NPC给出的第一句随机对白,参数一对白,参数二几率Speak1 = 同志们!我们失去了许多英雄!这意味着我们失败了吗?不!这只是个开始!,25Speak2 = 日寇的国力和军力是我中国的数倍之多!是什么使我们坚持到现在?!这是因为,我们进行的是一场正义的战争!,50Speak3 = 大家的兄弟姐妹们,父老乡亲们,多少人死在了日寇的屠刀下!?我们绝不可忘记这悲痛和愤怒!,75Speak4 = 同志们,同胞们,站起来吧!将悲痛和愤怒化作力量!站起来吧!中国万岁!,100function Click(npc,player)-点击NPCtemp = GetSpeakNum(Speaknum,Speak)local s = .Speaktemp1./n/n/n离开player:InitChoose(s,Cancel)end function Cancel()end 这是一个从“抗战”游戏里拿出的脚本,该脚本的功能是当你点击NPC的时候随机出现三句对话,这三句对话出现的几率通过脚本作出规定。Click是一个程序给出的函数接口,这个接口的作用是:当你点击NPC的时候会调用这个函数。这是NPC和玩家的交互切入点。Speak = 这是一个表结构,在这个结构里我们可以定义一系列的想使用的东西。进行预先储存。Local s 这是定义一个局部变量,在LUA语言里,变量有着非常广泛的作用,它可以被赋值成数字,字符,字符串等几乎所有的常用值。而InitChoose也是一个程序给出的接口,通过这个接口我们可以让游戏中的玩家和NPC对话。这个脚本只是给出一个前提印象。暂时不深入讨论。6 LUA常用结构6.1 逻辑运算,算术运算逻辑运算和算术运算比较简单,可以轻松掌握,这里不在冗述。6.2 函数在LUA脚本制作中,函数是非常重要的内容,它是构成所有脚本的主要构件。如上例中的Click函数。实际脚本多数就是这些函数间的调用。函数有两种用途:1.完成指定的任务,这种情况下函数作为调用语句使用;2.计算并返回值,这种情况下函数作为赋值语句的表达式使用。在我们编写脚本的时候这两类函数都经常使用。比如你想让做完某个任务的玩家获得奖励。那么可以给出一个奖励玩家的函数。例如在抗战里的奖励函数。function Prize(player)if player:FinshTask(失恋的海豚) = = 1 thenplayer:AddIteName(蔷薇种子,0)player:Addmoney(1000)endend 这里player是指针,我们可以通过函数对指针来进行一系列的操作。这个函数是判断玩家指针有没有完成“失恋的海豚”这个任务,如果完成了就给他一颗“蔷薇种子”同时奖励1000的钱一般来说,游戏脚本使用LUA语言都是对指针进行操作。例如对玩家进行奖励,判断玩家是否在做任务,判断玩家是否有某些物品,判断NPC是否存活等等。这里提到的“玩家”“NPC”实际都是指针。(指针的概念请没有程序基础的人参考相关资料进行理解)在LUA语言中函数是有两部分构成:函数名和参数。在上边的例子中Prize是函数的名称,而player是函数的参数。在刚接触脚本的时候经常会有些人不明白这些参数到底用来做什么,什么时候会出现参数这个概念。一般来说脚本语言中函数有两种出现方式:1.程序按需求给出的接口 2.脚本策划自定义的函数。程序按需求给出的接口:在这个接口里程序规定了函数的名称、数值、使用对象等等,这样的函数里参数是固定不变的。比如在抗战中Click(NPC,PLAYER)这个点击触发函数就有两个参数第一个参数是npc指针,第二个是player指针。无论这两个参数是被写成什么样子它们都依然代表这两个指针。在这样的函数里所有的参数是固定的,我们可以省略掉不使用的那部分。自定义函数:在这里我们可以随意写函数名称,任意传递参数,例如上边的Prize函数。6.3 表构造器表是Lua特有的功能强大的东西。最简单的构造函数是,用来创建一个空表。可以直接初始化数组。表结构在LUA脚本语言中是非常常用的的一个结构,在这个结构里可以储存大量的数据,而这些数据可以用来进行一系列的操作。例如如果我们游戏里进行PK,想对获得比赛的前10名发一些物品,那么就可以用表格来纪录这些名单。PrizeName = PrizeName1=蓝色多瑙河PrizeName2= 我是冠军PrizeName3= 挪威的森林PrizeName4= 江湖PrizeName5= 白色恐怖PrizeName6= 轻纱漫舞PrizeName7= 雪儿PrizeName8= 王三力PrizeName9= 我只是想看看名字对多能起多长PrizeName10= 帅猫当玩家点击领奖NPC的时候我们可以得到当前玩家的名字,如果他的名字是表格里存的名字就可以获得奖品,并设置好不能再次领取,如果不是则可以通过对话告诉玩家“你没获得奖励资格。”之类的话来回复。在这个表里PrizeName = 是初始化表格,而PrizeName4 = 江湖这是在表格的第四个位置存入一个字符串“江湖”。这个表格是基础的一元表,如果需要还可以构造多元表格例如PrizeName = PrizeName1=name = 蓝色多瑙河,number = 1PrizeName2= name = 我是冠军,number =2PrizeName3= name = 挪威的森林,number =3PrizeName4= name = 江湖,number =4PrizeName5= name = 白色恐怖,number =5PrizeName6= name = 轻纱漫舞,number =6PrizeName7= name = 雪儿,number =7PrizeName8= name = 王三力,number =8PrizeName9= name = 我只是想看看名字对多能起多长,number =9PrizeName10= name = 帅猫,number =10这样就可以既记载玩家的角色名又记载玩家的名次。对得获得奖励的玩家近一部细分。LUA的表格有两种书写形式比如PrizeName3name和PrizeN所表示的都是“挪威的森林”这个字符串。6.4 FOR在LUA中FOR有两种作用,一个是循环,一个是迭代。FOR循环也是脚本语言中经常使用的结构。比如上面的表格,如果想一次性的打印所有获得奖励的人的角色名就可以这样写:Local s = for i = 1 , 10 do if player:GetName = = PrizeN thens = s .PrizeN endprint(s)如果这个脚本在抗战游戏中运行,得到的结果是:“蓝色多瑙河我是冠军挪威的森林江湖帅猫”这一系列的字符串。从这里我们可以看到FOR循环在脚本中两个最主要的功能:1.遍历列表,2.叠加,当然这个结构还可以做迭代器,比如在抗战中用到的按队伍名称遍历队伍for k , v in m.meber doend这就是按名称遍历玩家队伍列表,属于迭代结构,有关更深入的迭代和循环大家可以深入学习LUA语言。这里不再多述。7 LUA语言实现目标和逻辑实际在LUA脚本中,最重要的并不是如何去使用该语言去写一个脚本,大家都应该明白,一个最蹩脚的程序员恐怕也能够比脚本策划更熟练的应用这个脚本语言。那么作为一个脚本策划具体工作该做什么?实际最具体的工作就是设计一个流程并明确它的逻辑。比如很简单的一个对话,什么条件下出现这个对话?对话的几率是多少?再复杂点的就是任务。玩家在什么情况下可以接到任务?做过该任务能不能接,已经接了该任务但是没完成能不能接,接了任务又放弃了能不能接?完成了这个任务还没有领取奖励的时候能不能接?这就需要一系列的流程判断。任务判断是一个最简单,最基础的流程,大的任务流程是由许多这样的流程来完成的比如现在很多游戏里都有的连续性做任务获得经验。就是由一系列连续的任务构成的而且这些任务可以重复做,这里边的逻辑就要比单一任务复杂很多。有些比较大的系统实际都是一系列复杂的流程判断,所以在这些系统里不但要写出玩法,奖励,更重要的是这中的流程。尽量形成流程图。8 需求接口的提出和使用光有脚本语言,不能形成脚本,脚本语言只能进行逻辑性的判断或者运算。这些运算和判断如果想在游戏里产生效果就需要把脚本和游戏引擎连接起来。这就是程序接口。当我们想实现一个功能的时候,首先要让程序给出一个程序接口,然后按这些接口来扩展,最终实现指定的功能。所以脚本策划
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广东护理管理自考试题及答案
- 冷水水表考试题及答案
- 广东高级翻译自考试题及答案
- 矿山爆破考试题及答案
- 内蒙古呼伦贝尔农垦拉布大林上库力三河苏沁农牧场有限公司招聘笔试题库及完整答案详解一套
- 高炉配管工抗压考核试卷及答案
- 水文水井钻探工应急处置考核试卷及答案
- 军事技能考试题及答案
- 就业测评考试题及答案
- 中高频炉工成本控制考核试卷及答案
- 《戏曲服饰欣赏》课件
- 《公共基础知识》贵州省黔南布依族苗族自治州都匀市2024年事业单位考试统考试题含解析
- 电力营销业务培训课件
- 技术方案评审表
- 人教版九年级数学下册第二十六章反比例函数-作业设计
- 人美小学美术五上《第1课:肖像艺术》课件
- 边坡削坡施工方案
- 湘美版五年级上册美术全册教案
- 浙江省通用安装工程预算定额第八册
- 乡村振兴战略实施与美丽乡村建设课件
- 视听语言PPT完整版全套教学课件
评论
0/150
提交评论