关于LUA在网游任务中应用教程

移动开发 iOS
关于LUA在网游任务中的应用是本文要介绍的内容,主要是来了解LUA中网游的问题,LUA生来是与游戏相关的。来看详解。

关于LUA网游任务中的应用是本文要介绍的内容,主要是来了解LUA网游的问题。LUA生来是与游戏相关的;自从魔兽将它发扬光大之后,越来越多的游戏公司使用它。

游戏逻辑中与其密切相关的是访问NPC部分,弹出一个交易框、打造框、任务对话框等等,这些基本都是由LUA实现;本文我想就自己最近的一点儿体会,写下关于游戏任务的lua实现;

去年12月份,新游戏项目成立,分配给我的***个任务就是编游戏任务;当时我还不知lua为何物,先花了一天的时间基本熟悉了lua语法(主要是关于table结构),C和lua的相互调用接口;然后摸索着上路了。

我个人比较喜欢自顶向下的学习方法,所以在这里先给出一个访问任务NPC的大概轮廓:

1、玩家访问NPC,客户端将附带NPCid的点击消息发给服务器;

2、服务器查找关于此NPC的任务菜单(其实是个lua table),判断玩家是否满足条件(等级是否合适、前置任务是否完成、是否已经做过。。etc)

3、如果满足,服务器填充好表单信息,并给每个任务按钮(因为一个NPC处可能不止一个任务)赋予一个从0开始的id索引,为每个按钮注册好回调函数,由id来索引;表单信息发给客户端,客户端执行,从而显示合适的对话界面;

4、玩家点击某个任务按钮,客户端将其对应的id信息发给服务器,服务器执行相应回调。(比如接任务的时候这个回调大概就是acceptTask(taskid)之类的,交任务的时候这个回调大概就是commitTask(taskid))

真实情况还有很多种,由于接任务是最简单的,所以选来做说明。

编程序首先要确定好数据结构。我最终定义的struct task大概包含以下成员:任务唯一id,类型,前置任务,任务奖励道具、经验、金钱,任务起始NPC(从这里接),任务终止NPC(到这里交),任务描述,未完成描述,完成描述,任务元素;还有个别字段,不是这里的重点就不提了。确定这个结构前后断断续续就用了两个星期,因为我。。。从来没打过网游,最开始的几天下了几个网游客户端,注册个号进去玩,简单的了解任务是怎么回事。

关于任务元素我要详细解释一下:

我最初的理解是,任务是要做让你做一定的事情,然后你才能够完成这个任务,得到奖励。于是将它抽象成任务元素。名字可能有点怪,感觉有点顺口当时我就这么定了。

任务元素有类型之分。最常见的两种类型是 怪物 和 物品。很多任务都是要求杀掉多少个怪、收集多少物品来完成。这也是最简单最基本的。

后来由于策划需求的不断提出,我又增加了一些类型,比如某任务要求你寻访一些NPC,那么类型为 VISIT,即访问。

有些任务让你答题,又有了类型QUESTION;等等。

游戏启动时,任务数据导入lua,为每一个跟任务相关的NPC构造lua表,表名后缀就是相应的npc ID,便于查找。

接任务的流程开头已经简单说过了,这里再将完成任务简单说一下。

每当玩家接了一个新任务,那么这个任务的任务元素会被添加到玩家结构(class Player)的任务管理器(Task Manager)中。任务管理器用一个map来实现管理多个任务的功能。

当玩家访问这个任务的终止NPC时,会判断任务元素是否完成了,如果完成会构造提交任务的对话框,玩家点击完成就可获得该任务奖励。

如果没有完成,终止NPC就会说一句相应任务的“未完成描述”。比如可能是一句“连那些毛猴都收拾不了,你真让我失望”。

上面描述的是最简单、最常见的任务类型。实际的游戏任务花样百出,想用很统一的框架实现是有些难度。但是由于LUA的灵活性(个人认为实质上是table结构灵活,简直***),策划的一些无法想象的需求(他们拿魔兽的任务来向我描述需求,可是我根本没碰过魔兽。所以说有些游戏经验还是挺好的啊),很多情况下我都用lua table配表,再写几个功能函数,大致搞定。不过感觉自己的某些想法可能有些“任性”,目前来说是够用了,未来就难说了,毕竟我无法想象还有什么形式的任务。

小结:关于LUA网游任务中应用教程的内容介绍完了,希望通过本文的学习能对你有所帮助!

责任编辑:zhaolei 来源: 互联网
相关推荐

2011-08-23 16:37:05

Lua数学库

2011-08-24 17:09:35

LUA闭包函数

2011-08-24 13:56:12

Lua游戏

2011-08-23 17:06:03

2011-08-24 13:27:07

Lua 游戏C接口脚本

2011-08-23 15:34:56

Lua模式 匹配

2011-08-24 14:14:13

LUA环境 配置

2011-08-23 16:48:41

Lua 5.1API 函数

2011-08-23 13:54:10

LUA全局变量

2011-09-06 17:37:01

LUA应用

2011-08-25 17:25:55

LUADelphi

2011-08-23 15:57:21

Lua元表元方法

2011-08-24 15:34:44

MinGWLua环境配置

2011-08-24 15:42:38

LUA源代码

2011-08-25 15:41:42

Lua源码

2011-08-15 13:44:07

iPhone开发UITableView

2011-09-06 13:58:28

MTK系统

2011-08-24 11:08:09

Lua

2011-08-25 16:20:33

Lua脚本变量

2011-08-23 17:33:08

LuaMetatable
点赞
收藏

51CTO技术栈公众号