游戏中的任务系统应该如何设计实现?

5回答

游戏中的任务系统应该如何设计实现?

提问者 我也要+满血复活... 2018-01-31 8.2k浏览
rt,希望能听一下大家从实现上讲讲如何做任务系统。从数据结构到具体的任务逻辑。谢谢

快来消灭0回答吧

{{ dataList.answer_count | view-format }}回答
  • 语末辰时 2018-02-01 19:57
    问题略宽泛,不太好回答,从表层说一些东西吧

    设计层面:
    明确目标,要达成什么效果,然后根据需求按层级逐层下铺任务类型与内容

    数据结构层面
    需要坚持两个原则:易维护性和高拓展性
    易维护:数据结构一致性与关联表格最少化
    高拓展:随意增减任务而尽量不对其他系统对任务ID的调用产生影响

    具体说来,易维护一方面是表格结构,内容表和调用规则表分开,保证内容库一张表,所有任务从这个库里调用,而调用规则则另外按规则类型建表。另一方面就是表格内容的简单化,尽量不要拖非关键信息进表,比如任务奖励,可以一个奖励ID代表一条奖励内容,至于奖励内容的具体规则可以放到专门的表格中,否则就会导致表格臃肿难以查阅和修改。
    至于高扩展性,一般是针对内容库而言的,一方面是主线任务的ID要留下增减空间,不要改一次任务内容就重整一次ID(主线任务的ID牵连甚广),要实现这个,ID隔位可能是一种比较简单的做法,比如用1000100、1000200这种ID格式,而不是用10001、10002。另一方面就是任务类型与任务结构的统一和任务的目标类型等要有足够广的覆盖面。(表格细节您可以汇总其他答主的回答)

    至于您说的具体的任务逻辑……我没有理解清楚是任务流程逻辑还是什么,不太敢胡说。

    0评论
  • 张恺 2018-02-01 12:31
    任务类型:主线,支线,日常等等 任务逻辑类型:杀怪、采集、探索、掉落收集、送信、有子任务的任务、特殊脚本等等,每种逻辑类型单独配表 任务逻辑I D,指向单独配表的逻辑表 任务接收地点,接收NPC,接收描述 任务目标地点,目标NPC,执行描述 任务提交地点,提交NPC,提交描述 客户端自动做任务就写一个状态机,为每种任务逻辑类型写一个。
    0评论
  • 猫即是正义 2018-02-01 14:26

    任务的类型分两种:主线和支线。

      首先,我认为主线有如下几个功能:
    1.剧情展开
    2.游戏功能(内容)的开放
    3.游戏功能(内容)的引导

      以上述功能为立足点,我设计的主线,多是串联游戏功能性内容,在此前提下讲好 一个故事,因此主线要节奏轻快,阶段目标明显。
      这就意味主线的完成类型将会是最多的,包括功能性的,包括NPC交互性的,并且这些完成类型要具有通用性、普遍性。
      诸如:
    1.对话
    2.杀怪
    3.采集
    4.提交道具
    5.通关副本
    6.功能性提升(装备、宠物、等级)
    7.抽卡
      以上7个比较通用,尤其是第6项,能拓展出很多完成类型,不过这一项,在主线里用的不多,大多都用1次。主要起一个功能引导、开放的作用。
      


    2评论
  • 右桑 2018-02-01 15:33
    个人拙见,欢迎大家交流讨论~

    首先是最为关键的环节。该环节如果设计师逻辑混乱,考虑不够缜密,日后将后患无穷。这个环节就是


    任务系统的设计师需要细致规划出该类型游戏涉及的全部任务模型(包括以后游戏的任务内容的扩展)


    例如:

    【时间】游戏分为主线任务、支线任务、日常任务、周常任务、节日活动任务,主线和支线都是一次性任务,日常和周常都是定时循环任务,节日活动可以按设定的日期自动开启和关闭。

    【条件】各类任务的激活开启条件,完成条件,领奖条件,关闭条件?各类任务模型完成条件所需的最多参数的数量(比如首次3星通关1-1,该条件有2个参数。3星通过X类型关卡5次,则包含更多的3个参数)。

    【奖励】任务奖励的最少和最大 道具种类(用于美术规划展示奖励的位置,比如最小3种,最大5种),是否存在概率性获得的道具。根据各系统产出道具的作用,进行各类任务奖励的具体道具举例?(要有根据,比如每类任务的目的是为了勾引玩家做XXX……即使这个根据暂时不靠谱,以后再迭代也可以。)

    【杂项】例如任务图标?任务名称?任务描述?一些无法归类需要特殊处理的任务条件或逻辑。

    关键的环节规划好了,这时候就可以交给咱负责数值的进行数据结构设计了。因为任务系统的规则已经

    非常细致完善,数值只要和程序大大一起协商个策划填写方便,程序扩展性也好的表结构就行了。例如:前置任务索引用int整数,只能填写一个任务的id,而改成可以填多个id的int数组[1,2,3,4],扩展性提高了,程序以后省的改代码,两种填写对策划来说,都是excel生成一下,没区别。

    一般就是定好表名,比如taskConfig,然后定表内的字段名,字段类型进行关联。举个实际例子:任务id、任务名称、任务描述、任务图标、任务类型、前置任务、特殊前置条件、完成条件类型、参数1、参数2、参数3、道具奖励list、道具奖励数量list、跳转界面、时间(PS:如果是多语言版本的游戏,一般另外制作关联的翻译表,类似任务名称、描述之类的文字在翻译表中,任务表只调用翻译表的id,随语言切换不同国的文字内容)

    数据种类一般就是int,也可以填string按程序的规则去解析,较少有float。

    然后就是程序认真对照或根本不看策划文档疯狂撸代码中(后端负责整个任务推送和奖励发放的逻辑,前端负责任务展示、跳转、奖励展示、和后端通信),策划有理有据或拍脑袋疯狂填表中……

    这时候,测试用表已经好了,可以自己跑跑,写写测试用例,QA跑跑,根据反馈修改优化。此时如果遇到任务逻辑有不可能走通的地方,请返回第一个环节。QAQ

    然后,还是数值,根据设计师规定的各游戏进度下系统的消耗,调整任务模块中循环任务和一次性任务的产出平衡。

    最后,不断迭代该任务系统,程序改bug,优化代码(比如某类任务列表要同时刷新1000个任务,怎么在渣渣安卓机上流程的可以滑屏显示),策划根据已有填写规则,设计各种好玩有趣勾引人的任务~

    天,竟然码了这么多字 =w=
    2评论
  • 猫即是正义 2018-02-01 14:51

    其次,支线任务我细分为4个

    1. 功能性支线
    2. 区域性支线
    3. 环任务
    4. 副本任务

      功能性支线:

      功能性任务的作用,多为引导,通俗来讲是设立小目标。
      比如:将铁剑提升到20级。
      功能性任务,自动接取,自动提交。

      区域性支线:

      区域性支线任务的功能性,和一般任务无异,但我觉得能提高场景的利用率,并且还能夹带世界观设定。
      主线里塞设定,我觉得很傻,所以会将时间观设定,放在这里
      区域性任务的完成类型主要有:
      1.对话
      2.杀怪
      3.采集
      4.提交道具

      环任务:
      环任务更多是在拖时间。
      具体做法就是,建立一个任务物库,然后随机组合出任务环。
      ‘刷任务星级’的功能是个好功能。
      环任务的完成类型很简单。
      我常用的是:
      1.对话
      2.杀怪
      3.通关副本
      4.采集
      5.提交道具(大部分,都是提交资源,这样可以回收资源)
      
      副本任务:
      我个人倾向于,将副本任务和外面的任务独立出来,我们花了50%的时间做副本,那我们会希望,玩家也花50%的时间,在副本里面。
      这就要求副本任务,花样会多一些。
      比如:
      1.接取某个任务,完成某个任务。
      (这能够模拟出,选择不同对话的功能。)
      2.到达坐标附近(x,y,r)
      3.中陷阱N次
      ……
      
      以上,主要是我针对ARPG和MMORPG,提出一些,我自己的设计思路,希望能抛砖引玉。
    0评论
  • {{ answer.user.NickName }} {{ answer.profession }} {{ answer.created_at | time-format }}
    专家回答
    {{{ answer.answer }}}
    {{ answer.answer_count | view-format }}评论
加载中... 查看更多回答