破坏领主吧 关注:35,605贴子:171,636
  • 22回复贴,共1

work in process:任务系统

只看楼主收藏回复



IP属地:上海1楼2017-04-27 11:51回复
    大家好!我是Hadrien,Wolcen工作室的程序(gameplay&rendering),你可能在Discord和steam论坛上以Nyhlus的身份熟知我。我已经为破坏领主工作了一年多了,我创建了很多改变了玩家玩法的特性,比如可转动的被动技能树(PST)、资源互斥系统(ROS)。是的,我就是那个在游戏中到处留下痕迹的人。今天我要讲的东西真的有点不一样,因为我把他叫做NQM,它将彻底改变你们以后关于Wolcen的体验,它就是新的任务管理器(the New Quest Manager)。


    IP属地:上海2楼2017-04-27 11:54
    回复
      你大概跟我想的一样:以前的任务系统一点也不酷炫。太短了还很无趣,那也不是我们想让玩家所体验到的。我们想让游戏世界变得更有挑战、更有收获、更让人沉浸,这通常需要一个可靠的任务系统,它能带给玩家数小时有趣的体验并且不会重复太多次。这样的任务实现起来毫无疑问是一个挑战,所以我们需要一个可以很容易的维护和调试的健全的系统,因为任务系统中的bug真的很烦人,也确实有点难以去修复。所以一个月前我开始编写NQM,同时我的Environments部门的同事开始为新版的开放世界努力,我们一起尝试设计一个系统,它超级强大(super-powerful)而又容易掌控。


      IP属地:上海3楼2017-04-27 11:54
      回复
        我负责实现的部分有点棘手需要更加严格的把关,因为世界的状态必须根据玩家的进度(包括每个可用的任务)精确的保存和加载,同时数据管理也需要小心的处理所以我进行了大量的测试。建立这个系统需要全局重做任务交互界面,奖励、任务追踪、接受/拒绝任务都需要展现不同的窗口。这些都由我的同事Lucas(UI-Master)来完成。


        IP属地:上海4楼2017-04-27 11:54
        回复
          我们编写了上千行代码允许我们追踪任务进度,启动大量不同的功能/行动,让整个(游戏)世界更有生气,所以你会觉得你是这个真实世界的一部分。不想说的太枯燥,我们只谈谈这个系统可以被看到的地方:任务(步骤列表),其中包含一套为了完成任务而需要被达成的目标。一个步骤可以被看成是一个检查点,代表游戏会在哪里保存你的进度(步骤内的进度不会被保存),游戏里的全局进度被写成一个向前链接的体系结构(forward-links architecture)。它会告诉我们哪个解锁了其他那些进度,到达下个故事里程碑哪些任务必须要完成。通过了解你在主线抑或是各种支线中的准确进度,我们可以以一个精确的状态来加载游戏世界(从你上次离开游戏到现在的这段时间)。


          IP属地:上海5楼2017-04-27 13:58
          回复
            说回任务系统本身,整个游戏交互通过一个专门的事件系统可以被其他游戏系统实时地发送、链接、读取,系统允许我们编写世界的行为。当初始化一个任务,我们为所有未完成的时间建立了触发器,等待玩家进行关键(触发)行为。ProcessEvent函数(1200行)分析和处理所有我们需要做的事情以便对玩家的行为做出反应。事件可能或不能触发涵盖了各种各样的状况,整个事件系统的实现确实是NQM开发最棘手的部分。
            举个例子,现在我们有10个子目标然后整合到一块建立一个简单的任务(去目的地,跟某人交谈,杀死指定区域内的敌人,收集物品,在规定时间内和目标交互等),任务关联了32种独特的事件类型决定着屏幕上会呈现什么(生成怪物,移动实体,播放特定的音乐或动画,切换游戏参数,改变天气等),而这些都能用13种不同的方式触发(到达区域,丢失目标,击杀什么,等待时间太长等),所以当把这些混合到一块时,我们就得到了一大堆可能的目标,不要忘记世界的布局本身也对如何处理这种状况起到了一定的作用,比如地形的部署或障碍物和门的定位。现在系统已经开发完备,我们几分钟内就可以按例增加我们需要的新的事件类型和目标类型。


            IP属地:上海6楼2017-04-27 14:46
            回复
              目前的主要问题是系统用XML文件来描述任务,对于我们中那些不熟悉它的人来说可能是一件苦差事,所以我们内部编写了一个用于编辑任务文件,管理目标、时间和触发器的小工具。举个例子,任务文件最初始的样子看起来是这样的:


              IP属地:上海7楼2017-04-27 14:54
              回复
                但是这货既不用户友好也不容易阅读,所以我们又写了一个专门的软件来编写那些文件,而不需要去阅读文件的原始形式。除了任务编辑方面,这个工具还需要一个后端的接口,通过配置文件来增加新的事件,事件触发器或目标,而不是通过改变代码,所以它的实现有点点乏味。我们的Wolcen任务管理器出生在2017年1月,重1MB多,在它熟睡的时候我们拍了点照片(写的跟生孩子一样。。。恶趣味的制作组):
                任务编辑窗口:

                事件编辑窗口:

                事件和触发器窗口:


                IP属地:上海8楼2017-04-27 15:08
                回复
                  你猜的没错,使用这个工具让工作变得容易多了,因为它让我们只需要点击几下就可以创建一个完整的任务。想象一下如果我们同游戏一起发布这样一个工具,mod作者能做些什么?更不用说词缀和掉落列表管理器已经打包在软件里了。。。但是我离题了。随着NQM的诞生和时间的推移我们意识到没有它我们啥都干不了,至少游戏中现存的特性都能连接到任务上。例如,我们创建事件来开始和停止序列,这是顺序行为记录,可以直接访问大部分的游戏系统(实体,视觉特效,相机动作,音效等),可以编写整个场景。更实际的说,当你进入一个可以进入的区域我们可以移动相机,或者当你进行一个关键的行为后我们可以在你周边围圈特效。很酷吧?下面就是个花了点时间建立的简单序列的例子(在这期间你依然可以移动):


                  IP属地:上海9楼2017-04-27 15:42
                  回复
                    害怕,这么大的文本量


                    IP属地:北京11楼2017-04-27 17:52
                    收起回复
                      看完了,意思是说,玩家以后也可以利用这个系统来自己编制任务麽?


                      IP属地:河南来自Android客户端12楼2017-04-27 22:17
                      收起回复
                        不错不错,有新进展!


                        IP属地:安徽来自Android客户端13楼2017-04-28 07:54
                        回复
                          每个游戏制作人都觉得自己有想法,每个游戏发售前都是NB的不要不要的,我就希望这作不要雷就谢天谢地了


                          IP属地:浙江14楼2017-04-29 11:34
                          回复