先看一条时间线,而不是一个标签
假设有一位玩家,叫他阿澜。下面是他在爱游戏上的行为摘要,全部是虚构的示例。
| 时间段 | 行为记录(示例) | 单看数据 | 可能的真实含义 |
|---|---|---|---|
| 过去两年 | 回合制与动作RPG累计约500小时,多数通关并做完支线 | “RPG重度玩家” | 稳定的长期偏好:叙事、成长数值、角色构筑 |
| 三周前 | 装了一款经营小镇的模拟游戏,第一晚玩了两个多小时 | “新鲜感” | 可能是尝鲜,也可能是兴趣转向的开头 |
| 近两周 | 连续多天回访,每次时间不长,会打开建筑图鉴 | “小众兴趣” | 碎片时间玩法;在补机制理解 |
| 上周 | 搜索“小镇布局怎么排”,收藏两篇攻略 | “需要攻略” | 主动投入,短期兴趣变强 |
| 昨天 | 一款新的开放世界RPG上架,他点开又退出 | “不感兴趣” | 也可能是当下没有整块时间 |
同一条时间线,如果只按“类型时长占比”统计,模拟经营只占很小一部分,RPG占绝大多数,于是系统会继续推RPG;如果只看最近三周,系统会把他当成模拟经营玩家,然后清空所有RPG的位置,等他哪天想念叙事的时候,首页上什么都没有。两种做法都错,因为它们都只用了一段时间窗口。好的推荐要回答的问题是:长期偏好还在不在,短期兴趣是不是真的,两者此刻各占多少权重。
信号:不只是“玩过什么”
爱游戏的做法是把信号分成几类,每类回答不同的问题:
- 投入强度:游戏时长、会话频率、回访间隔。时长是最粗的信号,因为有人挂机,有人被教学卡了半小时。
- 完成度:主线进度、成就、支线完成比例。完成度高的游戏比时长长的游戏更能说明“这类内容对他有效”。
- 放弃速度:从安装到弃坑用了多久,是在教学里退出还是在中期退出。第一晚就退出与玩了三十小时后慢慢不再打开,是两种完全不同的信息。
- 最近游戏:最近七到十四天内启动的游戏,以及启动顺序。
- 内容属性:类型、机制标签(回合制、构筑、建造、生存)、难度档位、单人或多人、节奏(单局长短)。这些属性来自游戏内容库和知识图谱,而不是玩家行为本身。
- 社交信号:好友最近在玩什么、有没有被邀请。这只是信号之一,不是命令,这一点可以看好友行为如何进入推荐的讨论。
- 主动表达:搜索词、收藏、“不感兴趣”的反馈。这是最干净的信号,但数量最少。
一个容易被忽视的区别是:购买不等于喜欢,时长也不等于满意。同样是二十分钟,可能是睡前试玩、配置不够、被教学劝退,具体的读法在隐式反馈与游戏时长里展开。这里只强调一点:推荐系统输入的应该是带不确定性的证据,而不是打好标签的结论。
长期兴趣:稳,但不是不变
长期兴趣代表玩家“是什么样的人”。爱游戏倾向于让它落在属性分布上,而不是游戏列表上。阿澜的长期画像不是“玩过这二十款RPG”,而是:偏好叙事推进强的内容,能接受中高难度,喜欢角色构筑,单人为主,单局不追求短。这样做有两个好处。第一,新上架的、他从没见过的游戏,只要属性对得上,就能被匹配到。第二,画像可读,可以被解释,也可以被玩家自己修改。
长期画像使用较长的时间窗口,衰减很慢,但不等于不衰减。所以长期兴趣也要缓慢更新,允许被近期证据一点点“拉动”。
短期兴趣:快,但要过滤噪声
短期兴趣来自最近几个会话,关注的是序列:他先打开了什么,接着搜了什么,中间放弃了什么。它的衰减很快,几周不再出现就应该淡出。短期建模里最常见的坑有两个:
- 被一次强烈的会话“绑架”。深夜通宵打了一款游戏,系统连续一周只推同类。解决办法是对单次会话的影响设上限,看多个会话是否重复出现。
- 被外部事件拉走。某款游戏搞活动、好友拉他入伙,他玩了,但不代表他个人的兴趣变化。
兴趣漂移,还是一次尝鲜?
这是整条链路里最难的一步。阿澜那三周,系统必须判断:他是在漂移(长期偏好正在向模拟经营转移),还是尝鲜(过几天就回到RPG)。没有哪个单一信号能回答,需要综合一组证据:
| 证据 | 更像漂移 | 更像尝鲜 |
|---|---|---|
| 回访 | 多天分散回访,间隔稳定 | 集中在头一两天,之后断掉 |
| 教学与进度 | 通过教学并解锁中期系统 | 停在教学或早期 |
| 主动行为 | 搜索攻略、收藏、看图鉴 | 没有任何主动查找 |
| 时长趋势 | 每次时长变化平稳或上升 | 逐次缩短 |
| 与长期偏好的距离 | 机制上有共通处(数值成长、资源管理) | 与既有偏好完全无交集 |
| 外部因素 | 无明显活动或好友带动 | 正值活动或好友刚邀请 |
更实用的做法不是给出“是或否”,而是给出一个带不确定度的判断:这段新兴趣有多大概率是持续的。概率不高时,系统的策略是降低短期权重但不清零,同时增加对这一方向的观察。只有当证据积累到足够多,再把它提升进长期画像。
融合:不是两个分数加权平均
把长期得分和短期得分固定比例相加,是最省事的做法。原因是两者的可信度会随玩家状态变化:一个刚刚进入某个新品类的玩家,短期信号少,短期分数本来就不稳;一个每天回访的玩家,短期信号很足,应当有更大的权重。
爱游戏更倾向于让融合权重由短期证据的强度决定:证据足够,短期兴趣主导排序;证据不足,回到长期偏好托底。同时,两种兴趣不是必须二选一,很多时候它们对应不同的位置:首页的“继续玩”“猜你想玩”留给短期,“你可能也会喜欢”留给长期,“换个口味”留给探索。
候选生成:一条路不够
推荐通常分两步:先生成候选池,再对候选排序。候选池如果只有一条来源,后面排序做得再好也无济于事。对阿澜来说,至少需要这几路候选同时存在:
- 长期偏好路:与RPG属性分布匹配的内容,包括他没玩过的新作。
- 短期兴趣路:与小镇经营相邻的内容,比如同样偏资源管理与布局的游戏。
- 跨界桥接路:同时具备叙事与经营元素的游戏,比如带角色养成的经营类。这类游戏往往是漂移期最合适的“过渡”。
- 探索路:与两类兴趣都不完全重合,但内容属性显示可能有共鸣的游戏。
其中第三路特别值得强调。兴趣的变化很少是断崖式的,更多是沿着某个共同属性慢慢移动。阿澜从RPG走向经营,共同点可能是“数值成长”和“长期规划”;顺着这个共同点找到的游戏,接受度往往比完全随机的探索高得多。这一步需要内容知识图谱:图谱里有“机制”“题材”“难度”“玩法循环”等节点,才能找出这种跨类型的相似关系。
排序:目标是“开始并愿意继续”
候选池有了,还要决定谁排前面。排序如果只以点击为目标,会偏向包装好看、名字响亮的游戏;以时长为目标,又会偏向耗时的游戏。更合理的目标是玩家开始之后愿意继续:比如通过教学、第二天回访、没有在前一小时内放弃。这些是间接指标,需要通过长期观察和对照实验来验证,我们不在这里给出任何数值结论。
排序时还要考虑当下的情境,而不只是偏好:
- 时间预算:工作日晚上碎片时间多,推荐单局短的游戏;周末可以推需要整块时间的内容。
- 难度匹配:一个刚开始接触模拟经营的玩家,适合上手曲线友好的作品,而不是一上来就是深度硬核的经营模拟。
- 多人与单人:如果好友在线,联机游戏的权重可以临时上升。
探索配额:留一个位置给“不确定”
只根据已有兴趣推荐,会出现一个稳定的循环:系统推荐他已经喜欢的,他点了,系统更加确信他喜欢这个。这个循环里,玩家永远不会看到自己可能喜欢却从没接触过的东西。要打破它,就要在排序结果里保留一部分位置用于探索,也就是有意展示系统并不确定的内容。
探索不是随机撒网。爱游戏的做法是让探索位置遵循几条原则:
- 探索内容要有依据,比如沿着共同属性向外走一步,而不是完全随机。
- 探索位置的比例根据玩家的状态调整:证据丰富、玩家近期在“找新游戏”时,可以多一点;玩家明确处于“继续玩手头游戏”状态时,少一点。
- 探索要和普通推荐区分展示,让玩家知道这是“换个口味”,而不是系统判断他会喜欢。
在App里的呈现方式,可以参考探索推荐在应用中的表现。
多样性与推荐理由
即使每一条都合理,一整页十条推荐如果全是同一类型,玩家体验也是糟糕的。多样性要在不同层面上控制:类型、题材、机制、单局时长、多人与单人。简单的做法是在排序结果上重排,同一类型在一屏内设上限。
推荐理由则决定玩家是否信任这份结果。对阿澜,可能出现的几种理由(示例):
- “你最近常玩小镇经营,这款同样以布局规划为核心。”(短期兴趣)
- “你喜欢角色成长,这款把成长带进了经营。”(跨界桥接)
- “你的好友近期在玩,且它支持合作。”(好友信号)
- “换个口味:节奏较慢,适合碎片时间。”(探索)
理由要真实,来自实际的排序依据,而不是事后编写的话术。理由还有一个作用:玩家可以纠正它。当他看到“因为你最近常玩经营”,而实际上那只是朋友借用他的账号玩了两天,他可以直接说“不是这样”。
一个边界:我们并不知道玩家在想什么
推荐系统能做的,只是根据可见行为对“现在想玩什么”作出估计,这个估计永远带着不确定。爱游戏AI的设计取舍是:不确定时不下结论,用多路候选和探索配额保留选择空间,用可读的理由和明确的反馈入口让玩家参与修正。至于这套思路在真实玩家身上效果如何,需要靠对照实验和长期观察来验证,本文不给出任何效果数字。
回到阿澜。比较合适的首页,也许是这样:第一屏是他正在玩的经营游戏和他上次没打完的RPG;第二屏是几款同时带有成长与经营元素的游戏;第三屏留一个“换个口味”的位置。它没有断言他从此不再是RPG玩家,也没有假装他永远只喜欢RPG,只是承认了一件事:一个玩家的兴趣,是一段会移动的时间线。