快捷搜索:

火山逛戏拓荒软件16---中文编程拓荒逛戏3D

  火山平台的移动应用源码,可以导出为JAVA工程,方便和其他使用Eclipse等开发工具的同事协同开发。

  VOLCANO是一款MMORPG(大型多人在线D网络游戏的快速集成开发软件,用作支持用户快速轻松开发具有真实游戏环境和丰富游戏玩点的网络游戏,具有完全自主的知识产权.

  一款MMORPG游戏开发周期动辄以数年为单位,这对于产品快速进入市场是非常不利的.

  VOLCANO软件的作者吴涛所开发的易语言以能够快速简单地开发各类应用程序而闻名,他在软件的易用/实用/快速开发等特性上积累有非常丰富的实际项目经验.用户使用VOLCANO软件开发网络游戏,需要做的只有以下几件事情:

  4. 书写少量的C++程序用作实现类似响应游戏客户端UI事件,定制软件框架尚未提供的独有游戏子系统等.

  由于工作量的减少,因而大大降低了一款MMORPG游戏的开发周期,从而使以月为时间单位开发MMORPG成为现实的可能,这一点从作者吴涛在开发VOLCANO软件的过程中使用该软件顺手开发出的一款类魔兽世界演示游戏中即可看出来.

  一款MMORPG游戏的投资动辄需要数千万甚至上亿元人民币,这对投资人来说,承担了太大的资金风险.

  3. 仅需要很少的昂贵的C++程序员,进一步减少了程序开发所需要的资金.

  业内经常听说一款 投入了大量资金的MMORPG游戏开发失败,这种失败很少是因为策划或美工,绝大部分是因为程序问题.因为MMORPG游戏的程序以复杂且难度高著称,如果游戏项目组程序员的质量不够高,很容易就能导致项目失败.

  VOLCANO软件的作者吴涛已经具有了近25年的实际项目开发经验,是国内最早一批的程序员.他成功开发了易语言中文编程语言及CCED2000制表软件这两款家喻户晓具有大量用户使用的软件.尤其易语言由于是软件编程语言,对产品质量的要求更加严格.经过大量用户的长时间使用,已经充分证明了吴涛的软件开发能力及其所开发软件的质量.

  VOLCANO软件是吴涛花费数年心血精心架构全力开发的一款产品,对这款产品的所有特性均采用最新和最高标准,所有代码均经过再三严格测试.为了保证项目质量,能不使用的外部开源代码绝对不使用,即使必须使用,也必定将其源代码全面通读且测试通过后才会应用到软件中.并且由于是完全由其个人独自开发完成,避免了多人开发中容易出现的协同类问题.

  由于VOLCANO软件本身的质量过硬,从而能够保证基于该软件开发的游戏程序不会出现问题,去除了MMORPG游戏项目开发中的最大风险,最大限度地保护了投资人的利益.

  目前市场上绝少有类似本产品的MMORPG游戏开发软件,较多的是客户端渲染引擎,也有一些产品携带有服务器端引擎,但是在这两者的基础上同时带有游戏框架的产品基本没有.游戏实际开发过程中,其逻辑子系统还是需要用户完全自行开发,而一个游戏的最大工作量和开发风险即集中在这上面,这就造成了我们经常听到使用了某某最高级的游戏引擎的游戏开发失败的消息.

  VOLCANO软件封装了MMORPG游戏开发所需要的绝大多数功能和逻辑子系统,这些用户都不再需要自行开发而且能够放心使用,与前述产品相比之下优势显而易见.

  VOLCANO软件分为以下四部分: 客户端引擎、服务器端引擎、游戏框架、周边工具集.

  C. 所有场景渲染内容均自动筛选后优先进行批量绘制,地形植被提供有专用的数据格式用作批量绘制;

  游戏服务器由一系列的服务组成,支持基于多个服务建立单一游戏服务器的服务群组,群组中的服务可以位于不同的硬件设备、不同的操作系统、 相同或者不同的进程中,具有位置无关性;

  游戏框架用作基于Volcano软件快速搭建一个大型MMORPG游戏,其中实现了一个MMORPG游戏所需要的绝大多数功能和逻辑子系统,具体可以参见所提供的DEMO,它目前包括以下部分:

  4. 提供vdb速查表的修正器,自动计算填写其中的某些数据,检查用户所填写表格的正确性.

  基于SRP6协议与玩家客户端之间进行账户验证,支持账户自动/手工冻结,支持各种用户权限.

  管理其中的所有NPC对象,为它们建立各种状态机,提供Lua脚本接口.为场景中每个玩家人物建立一个对应的服务器端“魔镜”.

  地形、地形纹理、地表植被、所有类型的场景对象置入和编辑、场景路径和地域划分、对象分组等等.

  生成大规模场景地图的水陆双栖导航图和视线. 绝大部分编辑操作均支持撤消和重做,支持对象多选操作.

  用作查看所设计完毕的最终场景效果,并提供场景光照和静态阴影建立,地形纹理压缩等后期功能.

  目前支持3dsmax 9.0到3dsmax 2012设计软件,用作从其中导出所设计模型到引擎所支持的格式.具体请参见模型设计手册.

  一. 相关基础知识演示程序的任务信息定义表源文件为demo1\bin\client\data\vdb\csv\missions.csv,请用excel打开此文件.我们看到,里面已经定义了9个任务,分别对应volcano系统目前所支持的9个不同的任务类型.该表的各个字段含义请查看表头标题,各个任务所对应的类型请见任务的描述文本字段内容.vdb数据表该csv文件最终将被编译为游戏内使用的vdb数据表文件,vdb在csv文件中的定义格式如下:1. 所有以;字符开始的列及其后所有列都将被认为是注释列;2. 整数型字段支持十六进制格式数值,该格式数值需要以0x开头,譬如0xFFF;3. 表格第一列必须为整数型,用作提供该表格行的行ID值.该整数值不可重复,必须大于0,ID值之间的间隔不能太大;4. 表格任何一列文本(包括第一列)如果以;开头,则说明从本列开始到行尾均为注释,其中的数据将被忽略.

  ITEXT: 忽略英文字母大小写的文本型.此类型的文本数据在存储时去除重复文本及建立索引时将忽略字母大小写.

  ; [private = TRUE/FALSE] ; 是否不对外公开. 如果本类仅用作其它类的基础类,可以定义此属性. 如果被省略则为假.

  ; ; 注意: 如果希望新增数据成员不会影响到已设计好的场景中该类的实例数据,请始终在尾部加入新数据成员,且不要删除已有的数据成员.

  ; 2. 在方法插槽内置入实际处理方法时,可同时提供该处理方法的各参数初始值,如:

  ; OnStartup = xxx ; 本对象被启动后自动调用,用作初始化本对象. 返回1表示初始化成功,返回0表示初始化失败.

  ; 基本属性,数据成员定义方法,方法插槽设置方法均同CommonClass.

  ; [OnlyCreature = TRUE/FALSE] ; 是否只有动物对象才能应用本类,如果被省略则为假. 注意:如果下面设置了任意状态管理类,则本属性被强制为真.

  ; 对象各种状态管理类的实例创建方法插槽(注意: 一旦置入了此类处理方法,则OnlyCreature属性被自动强制为真):

  ; 基本属性,数据成员定义方法,方法插槽设置方法均同CommonClass.

  ; OnAccepted = xxx ; 任务被玩家承接后自动调用,用作初始化本对象. 返回真表示初始化成功,返回假表示初始化失败.

  ; OnCommitted = xxx ; 任务被玩家完成后提交时自动调用. 返回真表示提交成功,返回假表示提交失败.

  ; OnMsnItemGetted = xxx ; 玩家背包中指定任务相关物品的数目发生改变,任务完成后提交或者任务本中止时,这些物品将被从玩家背包中扣除.

  游戏处理类分为三种: 通用处理类(用作场景全局事件的处理),场景对象处理类(用作针对场景内指定对象的处理),任务处理类(用作定义游戏任务),每类游戏类都有自己特有的各 种成员集合,具体请见前面列出的源文件中相关说明信息.游戏处理类的方法用作置入游戏处理类的方法插槽,必须单独定义,演示程序的游戏类方法定义源文件为demo1\bin\client\data\def\GameClassMethods.cfg_w,其文件头部说明了游戏处理类方法的具体定义方法:

  ; method; {; id = 方法ID ; 不可省略,不可重复.; name = 方法名称 ; 不可省略,不可重复. 以@开头的名称表示为系统内定义方法,否则为脚本中定义的方法.

  ; ; 注意: 如果希望新增参数不会影响到已设计好的场景中使用了本方法的类实例数据,请始终在尾部加入新参数,且不要删除已有的参数.

  两部分,设计时参数用作在世界设计器中由设计人员置入对应的初始值,在方法定义文件中定义的均为设计时参数,运行时参数由系统运行时环境 自动提供.使用游戏处理类的关键点在于为其中的方法插槽置入合适的方法来处理对应的游戏事件.方法分为

  玩家杀死了指定类别场景中指定ID的NPC事件管理方法

  玩家背包中指定任务相关物品的数目发生改变事件管理方法

  玩家人物使用了指定类别的工具类场景对象事件管理方法

  MissionClass.OnUseSpecTypeToolObject

  玩家人物使用了指定类别场景中指定ID的工具类场景对象事件管理方法

  游戏处理类的每个方法插槽都有固定的方法设计时参数表要求,任何想置入该方法插槽的方法,其设计时参数表首部(后面的可以随意)都必须等同所指定的要求(参数名称无匹配要求).

  与前面的表格对比一下,就会发现其首部的参数表是符合要求的.方法的名称即为在lua脚本中提供的lua函数名称.

  ; 提供本对象实例所应用到的所有位面空间ID列表,多个位面空间之间用逗号分隔.为-1

  [id = 整数值] ; 本条件的ID,如果设置,则设置值必须大于0,且必须在本处理实例内唯一. 本属性如果被省略,则默认值为0.

  ; 本整数型属性可以同时提供多个(最多不超过4个),用作顺序提供置换条件描述文本中对应位置替换符的内容ID值.

  pm = 方法插槽名称.参数名称 ; 指定方法的整数型非数组参数值

  pm = 方法插槽名称.参数名称 [数组成员索引] ; 指定方法的整数型数组参数指定索引位置处的成员值(成员索引值基于0开始). 注明:此处的中括号为实际存在的字符.

  ; 记录本条件所参考到的目标方法条件输出参数(整数型)的索引位置(0-3)及该输出参数满足本条件的目标值. 本属性不能省略

  goal = 方法插槽名称.所参考到的目标方法条件输出参数的索引位置 ; 此时输出参数目标值默认为1

  goal = 方法插槽名称.所参考到的目标方法条件输出参数的索引位置 - 输出参数目标值

  %g: 游戏物品 参数: 游戏物品ID%s: 普通文本 参数: 索引到本游戏消息表的行ID%z: 游戏区域显示名称 参数: 游戏区域ID%e: 游戏场景显示名称 参数: 游戏场景模板ID%c: 游戏场景内服务器端对象的类型名称 参数: 服务器端对象类型信息表行ID%q: 游戏装备名称 参数: 装备信息表的行ID

  A. 提供场景在服务器端的lua脚本文件名请使用世界设计器打开欲设计场景,点击左侧的场景选项夹,右键单击最上面的场景项目结点,选择其中的属性菜单打开场景的属性表,在最下方的脚本设置信息栏目中,将对应的服务器端脚本文件名(相对服务器端程序所处的script子目录,譬如演示程序的相关目录即为demo1\bin\server\script)填写到ServerScriptFile属性中即可.譬如main场景的服务器端脚本文件名即被设置为main.lua.B. 使用lua脚本语言在所指定文件中为所有被使用到的游戏处理类方法提供对应名称的lua函数代码.所提供的lua运行时库介绍(函数定义采用C格式描述):

  UINT64 GetSelf ();// 如果本对象的处理类为场景对象处理类,返回对应的场景对象ID.如果为任务处理类,返回对应的玩家人物对象ID.

  // u64UserActionParam: 启动时所附带的动作参数. 注意: 如果当前动作已经在执行,则本参数被忽略.也就是说,始终只记录首次启动本动作时的用户参数.

  // blActionMustWatching : 如果本处理类为任务处理类,则指定NPC执行此动作时是否必须全程位于执行此任务的玩家人物的视野中,否则NPC将自动退出此动作并失败.

  // 等待NPC完成所指定的动作,动作执行完毕后设置当前处理阶段为nGoalStage.

  // id64PlayerObjectObject: 发言人与之交谈的玩家对象ID,为0表示与所有玩家人物进行交谈;为-1表示与附近所有玩家人物进行交谈.

  // 恢复id64ServerObject场景对象的可视状态到其设计时所指定的值

  // 恢复id64ServerObject场景对象的禁止状态到其设计时所指定的值

  // nDelayAction: 0:无; 1:翻转到初始可视状态的相反状态,然后恢复到初始可视状态.; 2:显示一段指定时间,然后隐藏; 3:隐藏一段指定时间,然后显示.

  // nCastTimes: 所允许施放次数. 如果大于0,则该技能被施放了所指定次数后其权重值将自动恢复到原默认值,如果小于等于0,则不自动恢复.

  // 将本场景对象沿着所指定名称的场景路径进行移动,移动完毕后设置当前处理阶段为nGoalStage.

  // 通知本玩家人物对象进入指定的场景,进入完毕后设置当前处理阶段为nGoalStage.

  ; 根据前面表格中的描述,应该为此参数提供特定场景对象信息表的行ID数组.

  ; 根据前面表格中的描述,应该为此参数提供特定场景对象信息表的行ID数组.

火山逛戏拓荒软件16---中文编程拓荒逛戏3D

  goal = OnAnswerObjectQuestion.0; 当OnAnswerObjectQuestion方法插槽中的第一个条件输出参数被设置为1时认为本任务条件完成看一下类FinalFighting中,为OnAnswerObjectQuestion插槽填入的方法为OnFinalFightingMissionStart,由于其没有以@开头,所以我们知道这是一个用户自定义Lua方法,我们在main.lua文件中找到其源代码如下:function OnFinalFightingMissionStart (nObjectIndex, nAnswer)

  可以看到,在该方法中,第一行代码即直接将所处方法插槽的第一个条件输出参数值设置为1,从而完成第1个任务.

  ; 根据前面表格中的描述,应该为此参数提供特定场景对象信息表的行ID数组.

  即可得出,玩家完成第1个任务的方法为: 与飞扬交谈一次并认可其要求(注:在回答飞扬的问题时,如果回答为否,则此答案会被客户端忽略并不会被传递到服务器).

  我们可以看到,在当前处理阶段变为2的时候,将会自动启动飞扬的子动作1(10471为飞扬在场景中的对象ID,在设计场景时指定),飞扬的子动作1执行完毕后将会进入处理阶段3.我们再看看飞扬的该 子动作做了些什么:

  这个动作的执行过程很长,请大家实际完成一次最终决战任务,对比上面的代码进行分析.代码中有调用StartupNPCAction启动其它NPC的动作的语句,请结合前面对飞扬动作的实现分析进行具体分析.

  附: 关于NPC之间互相战斗的设置方法: 在世界设计器中设计场景时将所处阵营互相敌对的NPC加入在一个组中即可.

  由此可见,此代码仅用作当玩家人物取消任务或提交任务的时候自动将玩家人物切换回main场景.

  三. 演示程序中的main场景内的任务制作步骤(包括完整的修改已有场景方法描述):

  6.执行后期处理中的创建导航图,连接并精简导航图(必须在创建导航图的后面执行),创建视线遮挡图功能建立更新相关数据. 注意如果没有更改场景中任何对象的大小和位置或新增/删除场景对象/修改场景地形,在这些数据尚不存在时,可以先从已经分离出来的服务器端场景数据中拷贝过去,以免重新建立.具体为将相关 数据文件从demo1\bin\server\scenes\main拷贝到demo1\bin\client\scenes\main.当然如果不能满足以上要求,就需要重新建立;

  7.如果新增或修改了场景区域路径,请执行后期处理中的部署所有区域型路径功能.

  15.至此所有工作结束,重启游戏客户端和服务器即可.2015年8月31日吴涛下载地址:

  吾爱破解所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

您可能还会对下面的文章感兴趣: