@iamzealotwang
2015-08-19T08:06:42.000000Z
字数 9420
阅读 975
任务
任务分为 "自己可完成型任务","多人合作型任务""特殊类型任务"
自己可完成任务(Single Mission)
"Single Mission" 为 用户不需要通过和其他人互动可以独立完成的任务
其任务步骤 包含且仅包含在 任务检测类型 中定义的程序可以检测的步骤
多人合作型任务(Mult Mission)
"Mult Mission"仅为一种特殊类型Mission
定义:
"主动方" : 任务发起的一方,一个Mult Mission中仅有一个"主动方"
"被动方" : 配合主动方完成任务的一方,一个Mult Mission中有多个被动方
流程:
主动方进入"特殊的看图说话面板"
主动方发出任务邀请
服务器根据 ** 互动型任务找人说明 ** 中定义的方式将任务推送给N个被动方(N根据看图说话中数量定义)
只要有一个被动方选择接受任务,则主动方的任务及触发
主动方和被动方作为互动的一组对象,在1v1 Chat模块中进行交互
交互方式包括:
互相发文字信息,照片,语音信息
当满足任务配置中要求的步骤数后及当前一组主动-被动(子任务)结束
在评分以后双方可以去领奖
特殊类型任务(Special Mission)
当特殊节日or特殊需求,可以直接将某个任务推送给用户1次
更新流程:
更改任务Config文件
后端直接修改数据库把任务推送给每个用户
互动型任务唯一性:A和B双方只能有同一个互动型任务,无论该任务状态是睡眠,进行.只要存在任务及A发送2000+任务时候就不会匹配上B (A,B可以为VIP,可以为双语明星.及该逻辑不区分人物属性)
推送用户数: 定义当发送2000任务时候,系统给该用户匹配的人数
推送用户选择逻辑: 定义 推送用户数的选择逻辑(及如何从众多的用户中挑出该一批用户)
可以被接受任务数: 推送用户数比如是20,及这20个用户代表又机会接受到该任务,如果可以被接受任务数为5,则表示这20个人中仅仅有5个人可以真正收到这个人物. 逻辑采取先到先得的方式
新用户: 注册少于2周的用户
可推送新用户: 首先为新用户其次该用户被匹配的双语明星数少于2
所有推送均不推送双语明星
所有推送仅推送异国用户
双语明星
- 推送用户数: 20
- 推送用户选择逻辑: 先从
新用户找,不够再从其他VIP中找,再不够就不推- 可以被接受任务数: 5 / 目前实现为10
Vip用户
- 推送用户数: 20
- 推送用户选择逻辑: 根据兴趣匹配度(其中要有15个VIP)
- 可以被接受任务数: 2 / 目前实现为10
普通用户
- 无法发送2000任务
双语明星
- 推送人数: 20
- 推送用户选择逻辑: 先从
新用户找,不够再从其他VIP中找,再不够及不推- 可以被接受任务数: 10 / 目前实现为10
VIP用户
- 推送人数: 20
- 推送用户选择逻辑: 根据兴趣匹配度(其中要有15个VIP,VIP中包含双语明星)
- 可以被接受任务: 5 / 目前实现为10
普通用户
- 无法发送2000任务
任务Tag信息:
互动任务的开启任务(MetaID 2000+)在配置表中会指定当前任务需要显示的卡片Tag信息
在看图说话的请求Rpc接口(requestCardList)中加入参数 missionID, 服务器端根据missionID读取配置文件取得当前Mission应该显示的卡片Tag,根据该Tag推送相应的卡片
任务请求CoolDown:
任务请求按钮每次点击有CoolDown间隔(12小时)
客户端发送请求"新任务"接口后,服务端重置CoolDown时间(12小时x60分钟x60秒=57600)
客户端根据CoolDown时间显示倒计时
服务端不做 "当前是否可以请求新任务"的逻辑检测
限定
- 互动型任务一在A和B之间只能同时发生一组(A和B不能同时进行两组互动任务)
新手任务
- 在请求任务的接口(requsetNewMission)中有一个参数(is_new_user)如果该值为true则给客户端推送新手任务
- 客户端将该Boolean值存在(playerProfile中的tutorialIndex,对应后端为userInfo中的newUserIndex)的第20位
> - 进入某个Club(ex:进入动物Club) -----> **MissionTypeClubEnter**
> - Club中上传照片 -----> **MissionTypeClubUploadPhoto**
> - Club中Like照片 -----> **MissionTypeClubLikePhoto**
> - Club中给照片Feedback -----> **MissionTypeClubFeedbackOnPhoto**
> - Club中给照片Comment -----> **MissionTypeClubCommentOnPhoto**
> - Club中给别人ThankYou -----> **MissionTypeClubGiveThankYou**
> - CardCenter 发送卡片 -----> **MissionTypeCardSendCard**
> - CardCenter Like一张卡片 -----> **MissionTypeCardLikeCard**
> - CardCenter 翻看一张卡片 -----> **MissionTypeCardFlipCard**
> - 1v1 Chat中发送文字 -----> **MissionTypeChatWriteTextMessage**
> - 1v1 Chat中发送图片 -----> **MissionTypeChatSendImageMessage**
> - 1v1 Chat中发送语音 -----> **MissionTypeChatSendVoiceMessage**
> - 更改Profile -----> **MissionTypeProfileEdit**
> - 商店中购买物品 -----> **MissionTypeShopBuyCoinsItme**
> - 更换家中壁纸 -----> **MissionTypeHomeChangeBackground**
> - 更换家中墙上照片 -----> **MissionTypeHomeChangeWallImage**
> - 访问好友家 -----> **MissionTypeFriendVistiFriend**
> - 发送好友请求 -----> **MissionTypeFriendSendAddFriendRequest**
> - 接受好友请求 -----> **MissionTypeFriendAcceptFriendRequest**
> - 使用虫洞 -----> **MissionTypeSceneUseWormhole**
> - 照片审核 -----> **MissionTypeExaminePhoto**
允许在title,desc的描述信息里面出现转义符号
#n# 转化为换行
#ownerUserName# 转化为任务所有者的名字
#playerName# 转化为当前用户的名字
MissionConfig中对于互动型任务存在missionContry限定,表示该任务仅仅可以推送给相应(EN,CN,ALL)的语言区域
MissionConfig的Mission会指定missionType
- selfMission //单独任务
- passivityMission //互动任务的被动任务
- engageMission //互动任务的主动任务
- initiativeMission //互动任务的发起任务
MissionConfig中的评分说明
- isShowMissionFinishQualityMark //是否显示任务完成质量评分
- isShowVoicePracticeMark //是否显示语音质量评分
- isShowTextPracticeMark //是否显示练习质量评分
//tutorialMissionArray 新手教学Mission//selfMissionArray 可以自己完成的Mission//initiativeMissionArray 主动发触发多人任务的Mission(一旦发完卡片后该任务结束)//engageMissionArray 互动型任务中-主动方的Mission//passivityMissionArray 互动型任务中-被动方的Mission//在initiativeMissionArray中有MissionTags,后端用于兴趣相投模块查找卡片//isUseStepReward 表示是否使用分步的奖励配置,如果为True则奖励读取missionStepArray中的值//isOnceDaily 是否为每日仅推送一次的任务{"tutorialMissionArray": [{"missionID": 1,"missionImgURL": "http://114.215.136.114:8085/metafile/missionImg/20.png","missionType": "selfMission","title_CN": "完善个人资料","title_EN": "改自己的Profile","desc_CN": "在家中好让更多的人了解你,想与你做朋友。","desc_EN": "改自己的Profile","rewardCoins": 100,"rewardExp": 100,"isUseStepReward": false,"isOnceDaily":false //是否为每日仅推送一次的任务"missionStepArray": [{"rewardCoins": "70","rewardExp": "20","rewardDiamond": "0","index": 0,"desc_CN": "完善个人资料","desc_EN": "改自己的Profile","triggerType": "MissionTypeProfileEdit","triggerNum": 1}]}],"selfMissionArray": [{"missionID": 1001,"missionType": "selfMission","title_CN": "动物保护神","title_EN": "Animal Guardian","desc_CN": "动物俱乐部上传照片","desc_EN": "Hey! Warrior of Animuick share it with other warrior in Animal Club!","rewardCoins": 100,"rewardExp": 100,"missionStepArray": [{"index": 0,"desc_CN": "在动物俱乐部中上传1张动物照片","desc_EN": "Upload 1 Photos in Animal Club","triggerType": "MissionTypeClubUploadPhoto","ext": {"clubID": 3},"triggerNum": 1},{"index": 1,"desc_CN": "在动物俱乐部上传照片的任务","desc_EN": "Upload 1 Photos in Animal Club","triggerType": "MissionTypeClubUploadPhoto","ext": {"clubID": 3},"triggerNum": 1}]}],"initiativeMissionArray": [{"missionContry": "CN", //哪个国家的用户可以接收到当前Mission (CN,EN,ALL)"missionID": 2000,"engageMissionID": 3000,"rewardCoins": 100,"rewardExp": 100,"title": "你最喜欢的男歌星","desc": "你最喜欢的男歌星是谁呢?在卡片中心找一个你最喜欢的男歌星并且告诉大家为什么","missionTags": "女歌星#女演员""missionStepArray": [{"index": 0,"desc": "发送一张男歌星的卡片","triggerType": "missionSendCard","triggerNum": 1}]}],"engageMissionArray": [{"missionID": 3000,"relateMissionID": 4000,"missionType": "engageMission","title": "和#UserName#一起聊聊你最喜欢的男歌星","desc": "#UserName#想觉得你发的卡片很有兴趣呢,快快和他一起聊聊你喜欢的这位男歌星吧!","rewardCoins": 100,"rewardExp": 100,"minimumFinishGroupNum": 3,"broadcastGroupNum": 10,"isShowMissionFinishQualityMark": true, //是否显示任务完成质量评分"isShowVoicePracticeMark": true, //是否显示语音质量评分"isShowTextPracticeMark": true, //是否显示练习质量评分"missionStepArray": [{"index": 0,"desc": "和#UserName#聊聊和这个男歌星相关的信息","triggerType": "typeChatWriteTextMessage","triggerNum": 3,"finishAction": "relateMissionNextStep" //当前任务关联任务进入下一步},{"index": 1,"desc": "等待#UserName#给你的回复,记得要常回来看看呦!","triggerType": "waitServer" //等待服务器设置该步完成},{"index": 2,"desc": "Hey!太厉害了,再和#UserName#聊聊这个歌星吧","triggerType": "typeChatWriteTextMessage","triggerNum": 2}]}],"passivityMissionArray": [{"missionID": 4000,"missionType": "passivityMission","missionImgURL": "http://114.215.136.114:8085/metafile/missionImg/MissionTest.png","relateMissionID": 3000, //和当前任务关联的任务MetaID"title": "Chat with #ownerUserName# about the male singer!","desc": "Hey! #UserName# is big fan of this singer, why don't you guys chat about this?","rewardCoins": 100,"rewardExp": 100,"isShowMissionMark": true, //是否显示任务完成质量评分"isShowVoicePracticeMark": true, //是否显示语音质量评分"isShowTextPracticeMark": true, //是否显示练习质量评分"missionStepArray": [{"index": 0,"desc": "Give #UserName# some feedback base on what he wrote","triggerType": "typeChatWriteTextMessage","triggerNum": 1,"finishAction": "relateMissionStart" //当前任务关联任务开始},{"index": 1,"desc": "Wating #UserName# write more message.","triggerType": "waitServer" //等待服务器设置该步完成},{"index": 2,"desc": "Give #ownerUserName# some feedback base on what he wrote","triggerType": "typeChatWriteTextMessage","triggerNum": 1,"finishAction": "relateMissionNextStep" //当前任务关联任务进入下一步}]}]}
SelfMissionVo
{"uuid":"xxxxx","missionMetaID": 2000,"isFinish": false, //当前任务完成"isGainReward": false, //当前任务已领奖"isTodayInProgress":true //是否今日有进展(前端用于任务排除)"userName":"xxx","userAvtartImgURL":"xxxx","userID":"xxxx","missionStepArray": [{"index": 0,"stepNum": 3,"isFinish": true},{"index": 1,"stepNum": 3,"isFinish": true},{"index": 2,"stepNum": 3,"isFinish": false}]}
function requestMissionMetaConfigURLreturn{"uri":"xxxxxxx" //返回的地址无Http前缀}
function requestDailyMissionListAndRefreshTimeparameter{"clientDate":"0000000000000" //玩家当前的时间秒数(后端用于判断是否执行清空逻辑)}return{"historyStarNum":5 //成就页面中需要展示的星星数量"activeMissionVoList":[] //当前活跃的任务列表(里面的格式为MissionVo)"newMissionRefreshCountDownTime":3000 //刷新按钮剩余倒计时时间}
function requsetNewMissionparameter{"totoalInteractiveMissionNum":1 //当前角色已有的互动任务数量"num":7 //请求的任务数量"is_new_user": //当前是否请求新手任务}return{"newMissionVoList":[] //新的任务列表(里面的格式为MissionVo)}
function commandMissionVoChangeparameter{"uuid":"xxxxx" //Mission的唯一ID"missionMetaID":3000 //"stepIndex":1 //第几步有进展"stepAddNum":1 //当前步骤加ji"isStepFinish":true //当前步骤是否完成"isMissionFinish":true //当前任务是否完成"isEngageMission":true //当前任务是否为互动型任务}
function commandGainMissionRewardparameter{"uuid":"xxxxx""missionMetaID":3000}
function commandRatingOnInteractiveMissionparameter{"missionUUID":xxx,"interactUserID":"xxx", //和当前用户互动的那个人的ID"finshQualityRating":1~5,"voiceRating":1~5,"languageRating":1~5}
function commandMissionCardChatparameter{"cardID":"xxxxxx""userIDArray":[]"message":"xxx""mission_id":"xxx""country":0}
function commandAddTodayStarNumparameter null
function requestMissionMetaConfigURLparameter nullreturn