基于Virtools的益智类闯关游戏的设计与实现
作者:李煜 司占军 曹春丽
来源:《电脑知识与技术》2013年第27
        摘要:益智类游戏是通过一定的逻辑或是数学,物理,化学或者是设计者设定的原理来完成一定任务的游戏,目前三维游戏设计引擎Virtools在此类游戏,尤其是三维虚拟场景游戏开发方面具有很多独到的优势。该文在对益智类游戏开发设计和Virtools模块和逻辑算法研究的基础上,通过该平台所提供的面向对象的交互方法和逻辑判断关系的使用,分析并提出了制作过程中的相关解决方法,为今后动画展示效果方面和大型虚拟现实游戏的开发提供了可参考的算法和方案。
        关键词:互动游戏;益智;Virtools;算法
        中图分类号:TP37 文献标识码:A 文章编号:1009-3044201327-6125-07
        益智类游戏又称为智力类游戏、难题游戏,一般需要适当的思考,这类游戏要求玩家充分运用自己的智力来解决游戏的难题从而使游戏过关解锁下一关游戏。通过游戏的形式,游戏者
锻炼了自身的脑、眼、手等,获得身心健康,增强自身的逻辑分析能力和思维敏捷性[1]。优秀的益智游戏不仅娱乐性强,在娱乐的过程中也增强了逻辑判断能力。
        其中在游戏中,三维互动游戏是虚拟现实技术重要应用方向之一,也为虚拟现实技术的迅速发展起了巨大的刺激作用[2]。尽管从目前来看仍然存在很多的技术难题,虚拟现实技术在激烈竞争的游戏市场中还是得到了越来越多的关注与重视。因此通过三维虚拟交互软件,以实现益智类游戏的开发[3],该文将利用热门的游戏开发游戏软件Virtools,就益智类游戏的开发的方法和过程进行相关的阐述。
        1 基于Virtools的游戏开发平台
        当今游戏引擎众多比如: Virtools Unity 3DunrealValve等,而国内外主要使用的虚拟现实开发软件主要有VegaQuest3DVirtoolsVRPConverse3D等,Virtools作为虚拟现实的一种开发工具,同时是一款应用广泛的3D形象与事件交互的游戏软件。目前,Virtools 游戏引擎是国内各个高校目前购买和使用较多的一款,在操作使用,开放性和浏览效果方面占有优势,其基本机构分为用来编写代码的应用程序[4],行为事件的引擎,渲染引擎,网络播放器,软件开发工具包五个部分。
        Virtools目前支持Max Maya Lightwave中直接导出文件,以及Dassalt系统的3D XML文件。Virtools提供大量的模组,通过不同模组的组合,可以定制出各式的应用,以拖拽的方式来定义程序运行的逻辑,而且通过SDK工具允许使用者新增Virtools的功能,内含各个行为模块的源代码,供使用者参考或是修改[5]
        程序化的界面符合人思考的逻辑,类似于流程图的结构,而且界面美观,不需再花费巨额的人事费用聘请高级的程序设计师,进行昂贵的C++程序设计完备的互动行为模块让前期规划、美术到程序的开发流程都可以很流畅的完成,并可发布到PC和网络上进行浏览。
        在利用Virtools进行游戏的制作中,最关键的部分在于利用行为交互模块(简称BB模块)组建适当的逻辑关系与算法, 制作形成及其娱乐性、审美性、互动性、教育性、虚拟现实等特征的艺术形式[6]。如下图1所示,为Virtools开发平台在三维益智类游戏的设计方案。
        2 设计方案与模型建立
        2.1 三维益智类游戏分析与设计
        利用Virtools进行游戏的制作,核心与关键的部分在于利用行为交互模块(简称BB模块)
组建适当的逻辑关系与算法,此益智类游戏的闯关流程如图2所示,分为五个大的方面,分别是游戏主页面进入,界面认识与选择,游戏选择,游戏闯关,游戏闯关进行/返回主页面/退出。
        以本益智游戏主要的一个动画效果主要通过鼠标点击卡片,使卡片进行翻转,相同图案的卡片翻转过后会停住,继续其他卡片的翻转,直至所有卡片都被翻转过来,游戏结束。
        要实现卡片的翻转和无序排列关键在于各个关卡所构建的逻辑关系,这也是实现所设计的这款游戏的核心部分。要实现卡片的翻转,首先要设置卡片的初始位置,然后让卡片实现无序排列,再次制作单击卡片时卡片翻转效果,翻转动画完成以后,开始制作判断相同卡片的逻辑程序,这样,该游戏的主要制作模块就已经完成了。
        2.2 3ds-Max模型的建立与导入
        游戏设计为翻牌游戏,利用3ds-max中的平面工具[5],画一个4*4的平面模型,利用编辑网格,在面级别下将其翻转以实现双面贴图,目的在于将模型卡片的正面贴图完全一致,反面的贴图两两一致。
        由于每个3D实体都有自己的网格,这样就没有办法进行逻辑判断,无法正确的将卡片翻转过来。建模过程用到了修改器面板的编辑网格,在其下面的具体修改面板中,有一项为命名,选择两个网格,并点选复制,这样在导入到Virtools中会发现3d object仍为16个,但是meshes中只有8个,这样在进行test模块进行逻辑判断就可以正常运行了。
        为方便导入后模块的管理,可以在3ds max中利用工具栏下重命名选项对模型进行设置,然后,再在修改面板中在进行命名复制的操作。
        通过以上方法,可以减少模型导入到Virtools游戏xml文件修改中的一系列问题。
        3 三维益智类游戏制作与实现
        3.1项目资源管理
        在使用Virtools进行项目制作时,可以先创建一个新的组织资源,并把导出的模型,需要的材质,声音甚至视频文件等相应的素材分别放入2d sprites3d entities3d sprites behavior graphs characters materials sounds texturesvideos几个文件夹中。
        一般的三维益智类游戏包含策划、原画设计、场景角模型、摄像机、灯光、游戏引擎、程序语言Virtools技术旨在提供一种虚拟现实的环境,该文中整个游戏方案的构建中,因涉及到多个交互对象,因此需要将各部分进行有效管理,所使用到的交互对象涉及到渲染对象,场景,声音,材质等部分[4],各个部分之间的关系如图3所示。
        3.2 脚本编写
        3.2.1. 设置游戏模型的初始位置
        “Building Block”选项卡中选择相应模块组中的模块选项进行拖拽,初步的添加效果如图5所示。
        选择Op模块,右击选择“Edit Setting ”,进行参数运算的设置,同样在加入“Remove From Group”模块后,双击该BB模块,设置GroupNew Group[7],如图6所示。
        “Building Blocks”选项组中,选择3d Transformations模块组中的Set Position模块并将其拖拽至脚本编辑器中,如下图7所示连接所有的模块。单击“Set Ic For Selected”按钮,确定其初始位置。
        需要说明一点,设置初始位置,对于那些在程序执行过程中的对象尤为重要,不然很有可能在程序执行过程中不到这些物体。同样,在移动的过程中要先将选择的对象进行锁定。
        3.2.2 模型的无序排列
        首先在脚本编辑器中添加“Set Component”模块,取消“Counter”模块与“Op”模块之间的连接,将Set Component模块分别于CounterOp模块连接[8]
        3.2.3 制作模型翻转效果
        首先在脚本编辑器中添加Mouse Waiter模块,添加Linear Progression模块和Rotate模块,接着创建本地参数,在弹出的对话框中设置参数Parameter NameCard-01Parameter Type3D EntityCard-01NULL,同样创建本地参数Card-02。添加Identity模块,设置参数类别为3D Entity,选择Card-01Card-02这两个本地参数,复制并粘贴为快捷方式,并将其复制的快捷方式同Identity模块相连。该模块的主要作用是将输入参数的值指定给输出参数。在场景运行的过程中,会将暂存值存储到本地参数Card-01Card-02中。
        其次创建一个参数运算,设置参数:InputFloatAngleOperationMultiplicationOutputAngle,将该参数模块分别与Linear Progression模块和Rotate模块相连,并设置Multiplication参数运算模块的第二个输入值的旋转角度为180度。而双击Linear Progression模块,可以设置卡片翻转所需要的时间,此部分设置的值为100ms,最后具体效果如图11所示。
        如图12所示,为使脚本编辑器中的模块简洁明了,可以利用“Draw Behavior Graph”命令,将Mouse Waiter模块、2d Picking模块、单张卡片模块组及Set Pickable模块绘制成一个新的图形模块拾取第一张卡片,同样的操作,将后面的模块更改为拾取第二张卡片图形模块。
        3.2.4 制作相同纹理模型的逻辑判断程序算法
        此部分需要实现的效果如下图13所示,其中的效果需要对卡片进行无序算法的加入。
        Test模块测试值为“False”时,需要将卡片再次翻转过去。打开拾取第一张卡片模块组,复制单张卡片旋转模块与“Set Pickable”模块,并与Test模块的“False”输出值连接。同
样复制并连接第二张卡片的模块组,并将其中的一个Set Pickable模块的输出值与Identity模块的输入值连接。双击连接在Test后面的Set Pickable模块,在弹出的对话框中点选Pickable
        4 结果与讨论
        本文通过3ds-Max建模,并通过Virtools流程图式的编辑接口,让设计程序更有效率、通过无序算法的加入,实现了益智类游戏中模块翻转,点选无序排列等效果的开发与实现。在模型建立和导入到Virtools中得到的结论如下:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。