第 25 章 引导、留存与奖励:让玩家明天还来
上一章(第 24 章)我们解决了”一局怎么既公平又上头”:难度曲线让你敢接、平衡让你有得选、随机给你惊喜、near-miss 让你摔了还想爬起来。你塔防的波次表,今天有了调参手册。
可你有没有想过一个更扎心的问题——
哪怕你一局做得再爽,玩家玩完这一局,关掉游戏,明天还点得开吗?
很多程序员做游戏,死就死在这。一局好玩,不等于玩家”长住”。你第 22 章说”好玩”拆成动机、核心循环、心流;这一章要补的,是那三件套之外的第四个维度:时间维度——玩家为什么今天来、明天来、下周还来。它叫留存(Retention),而它背后站着引导(Onboarding)和奖励(Reward)两员大将。
我先把这一章的定调甩给你,整章围它转:
引导决定”玩家能不能活过前五分钟”,奖励决定”他爽不爽”,留存决定”他会不会回来”。而留存,骨子里是服务端的事——这正好是你作为 Go 程序员的主场。
你可能会愣:前面 24 章我教的都是”客户端里怎么调”,怎么这一章突然说”留存是服务端的事”?别急,读到 25.3 你就明白——你第 19、20 章铺的那个 Go 后端,今天要派大用场了。
25.1 新手引导(Onboarding):前 5 分钟定生死
先讲一个残酷数据(你做产品该有这根弦):绝大多数手游,玩家前 5 分钟就走了,而且再也不回来。注意,不是”玩腻了走”,是”刚进来、还没搞懂这游戏是啥就走”。所以游戏设计有句行话:前 5 分钟定生死。你辛苦做了二十章的本事,玩家如果第 3 分钟因”看不懂”而退出,全白费。
那引导(Onboarding,新手引导,指帮首次进入的玩家搞懂”这游戏怎么玩”的那段设计)到底该怎么搞?我给你一条反直觉的原则,请画重点:
不教而教(Show, don’t tell)。
什么意思?新手最容易犯的引导错误,是”弹窗念说明书”:一进游戏,啪,跳出五页文字”欢迎来到 XX 塔防,本游戏有塔、有怪、有金币……”玩家一看到大段字,条件反射是点”跳过”,然后还是啥都不会。这叫”教了但没教”。
“不教而教”的意思是:用关卡设计本身教机制,而不是用文字念机制。玩家不是通过”读”学会的,是通过”做”学会的。你第 22 章说核心循环是”建塔→抵挡→得币→升级”,那引导的目标就是——让玩家在前两分钟,不知不觉把这套循环跑通一遍,而且只跑通、不卡壳。
具体操作心法只有一句,但极关键:第一关只引入一个机制。
你别一上来把”建塔、升级、减速、对空、卖塔、合成”全塞给新手,他会信息爆炸。第一关,只让他干一件事。举你两个项目的例子:
塔防的引导:第一关,地图只给一种塔、只来一种最弱的小兵(呼应第 24.1 的”第一关白给”)。界面上不弹说明书,而是高亮一个空地、旁边飘个字”点这里建塔”——玩家点一下,塔亮起来(反馈!连第 23 章游戏感),怪走过来被塔打,怪死了飘金币(反馈!)。全程没念一个字,玩家已经把”建塔→打怪→得币”跑了一遍。第二关再引入”升级塔”,第三关再引入”第二种兵种”……每个新机制,单独占一关、单独教,绝不叠加。
大富翁的引导:第一圈,只让玩家做”掷骰→走路→落到空地”这一件最基础的事,连”买地”的按钮都可以先灰着或轻轻带过,等他走完一圈、体会到”掷骰走路”的节奏,第二圈再教”踩到空地可以买”。别一上来把”买地、付租、进监狱、命运卡、交易”全抖出来。
为什么”只引入一个机制”这么灵?因为它和难度曲线(24.1)是双胞胎:新手技能是 0,一次塞太多 = 学习曲线陡成悬崖 = 掉焦虑区 = 走人。一次一个,学习曲线平缓爬升,玩家每学会一样都有”我懂了”的小成就(喂第 22 章成就动机),自然往下玩。
落进你的 Unity,引导是几个具体动作:
- 高亮 / 箭头:用第 18 章 UI 的 Image/Text 在可建塔位画个闪烁圈,引导”点这”。
- 拦截式触发:玩家第一次有钱时,弹一个”可升级”的脉冲提示,但不挡视野、可忽略。
- 首关锁机制:脚本里
if (level == 1) 只允许建塔A;,用代码把其他机制关掉,物理上防止信息过载。 - 撤提示:玩家做过一次后,提示永久消失,把决策权还他。
记住:好的引导是”玩家以为自己发现了游戏,其实是设计师牵着他手走了一遍”。这和第 24 章”第一关白给”是一个妈妈生的——都是”把新手当婴儿扶着走”。
反问问你:你塔防第一关如果同时教”建塔、升级、卖塔、对空”四个机制,新手会掉进第 22 章哪个区?你打算用 25.1 的哪条心法,把第一关改成”只教一件事”?
25.2 奖励设计:即时爽 vs 延迟大奖,以及最上头的”可变比率”
引导把人留住前 5 分钟,接下来靠”奖励”让他觉得每一下都值。这一节讲奖励,因为它直接连着你第 22 章”动手指就要有回报”那句话——奖励,就是回报的系统化。
先分两类奖励,术语首现我都解释:
即时奖励(Instant Reward):玩家做完动作,立刻给的小回馈。你塔防打死一只怪,“叮”一声掉 10 金币、飘个字——这就是即时奖励。它喂的是”我动手指立刻有回应”(第 22 章核心循环每环要有反馈)。即时奖励要”密、小、稳”,让玩家手指不停有甜头。
延迟大奖(Delayed Reward):玩家熬过一段、达成某个大目标才给的奖。你塔防通关第 10 波解锁新塔型、大富翁集齐一套地皮送限定皮肤——这是延迟大奖。它喂的是”长线目标感”,让玩家”为了那个大礼,先忍着打前面几局”。
两者缺一不可:只有即时没延迟,玩家”爽但没追求”,玩两局就腻;只有延迟没即时,玩家”有大目标但每步都苦”,中途就弃。好游戏是”每步有小糖、终点有大餐”。
但今天我要重点讲的,是奖励设计里最毒、也最值钱的一种——可变比率奖励(Variable Ratio Reward)。
先讲心理学背景(你做产品得懂点行为学)。心理学家斯金纳(Skinner)做过著名实验:给老鼠按杠杆,有三种给食方式——
- 固定比率(Fixed Ratio):按 10 次必给 1 粒食。老鼠很快学会”按 10 下拿粮”,但一旦不给(实验停食),它按几下没收获就弃了。
- 可变比率(Variable Ratio):按杠杆,有时第 2 下给、有时第 8 下给、有时第 15 下给,完全随机。结果老鼠按到停不下来,哪怕很久不给食也不放弃,因为”下一杆可能就给”。
为什么可变比率最上头?因为它把”随机”(你第 24.4 学的 RNG)和”奖励”绑死了——玩家不知道”下一次”会不会中,但确信”再试一次可能就中”,这股”不确定的盼头”比”确定的回报”毒十倍。
生活类比你最熟:抓娃娃机。你投币抓,有时一下中、有时十下不中,但你每次投币前都觉得”下一把肯定中”——这就是可变比率,所以它让人上头到败家。抽奖、彩票、赌场的老虎机,全是一个人性底层。游戏里,它叫抽卡 / 开宝箱:你花资源开一包,可能出普通卡也可能出稀有,你明知道大概率亏,但”下一包可能欧”的盼头让你一开再开。
落进你的游戏,可变比率奖励是:
- 宝箱 / 抽卡:你塔防每通关给一个”战利品包”,开出什么按第 24.4 的权重随机(大多普通、偶尔稀有)。玩家为了”下一包出稀有”反复打。
- 大富翁命运卡:每踩到问号格抽一张,可能是大奖也可能是小坑,不确定感本身就是奖励(呼应 24.4 的紧张感)。
关键提醒,连回前面两章:可变比率里的”随机”必须是可控随机(24.4)——要有保底(pity),否则玩家连开二十包全普通,会认定”游戏耍我”弃游;要有权重,否则稀有无价值。near-miss(24.5)在这里也生效:抽卡”差一点出稀有”的紧张,正是可变比率让人停不下来的燃料。
落进参数,奖励系统给你的是:
- 即时奖励的”触发点”绑定(怪死亡事件 → 飘字 + 音效,连第 18 章 UI/AudioSource)。
- 延迟大奖的”解锁条件”(通关第 N 波 → 解锁塔型,写进存档)。
- 可变比率的”掉落权重表 + 保底计数器”(24.4 那套,放服务器)。
反问问你:你塔防如果”每杀一只怪固定给 10 金币”(固定比率),和”每通关开一包随机掉图纸”(可变比率),玩家长期动力有何不同?为什么抽卡比”做任务领固定奖励”更让人上头?
25.3 留存循环(Retention):每日登录、周任务、赛季——而且它是服务端的事
引导(25.1)让玩家活过前 5 分钟,奖励(25.2)让他每局爽,可”明天还来”靠的是第三样——留存(Retention,留存,指玩家隔多久、多频繁地回来玩)。这是这一章的题眼,也是我要兑现开头那句话的地方:“留存,骨子里是服务端的事。”
先讲现象。你回忆自己玩过的、能”住”下来的游戏,是不是都有这种钩子:每天上线领个登录奖励、每周有个任务做了拿大礼、每赛季冲排名换皮肤。这些钩子干的事,是在玩家”没在玩”的时候,也给他一个”回来”的理由。你今天没空打,但”今天不登录就断了七天的奖励链”,你宁可睡前点一下。这就是留存循环。
常见的留存钩子三种,你做游戏必碰:
每日登录(Daily Login):连续登录第 1/3/7 天给递增奖励。断一天清零重算。它用”损失厌恶”拽你每天回来——你已经登录 6 天,第 7 天的大奖就在眼前,你绝不肯断。
周任务 / 赛季(Weekly Quest / Season):一周内做几个小目标(打赢 5 局、建 10 座塔)领周奖;赛季是更长周期(一个月),冲段位换限定。它给”中长期目标”,让玩家不是”打一局就走”,而是”这周/这月我要冲到哪”。
元进度钩子(25.5 细讲):局外成长,失败也有积累,给长线理由。
现在,关键来了——这些留存钩子,全部需要”记住玩家状态、按时发奖、跨设备一致”。而这,正是你第 19、20 章那个 Go 后端的活。
你想想”每日登录”在技术上是什么:
- 服务端要存”这个玩家上次登录是哪天、连续登录几天了”(数据库一行)。
- 玩家今天上线,客户端发个
POST /daily-checkin,你的 Go 查库、算连续天数、发对应奖励、更新库。 - 断没断、发没发,全由服务器裁定——客户端不能自己说”我连续 7 天了该给奖”,那能被改内存作弊(第 19.8 节坑点 3)。
“周任务/赛季”呢?你 Go 要存”玩家本周完成了几个任务、赛季积分多少”,任务完成时客户端汇报、服务器累加、到期结算发奖。排行榜(25.4)更是你第 19 章说的”排行榜接口 + 数据库”的直球。
所以留存 = 服务端的状态管理 + 定时发奖逻辑。你作为 Go 程序员,这就是你写过的:数据库 CRUD(存登录天数、任务进度)+ 定时任务(赛季结算)+ 接口(checkin、领奖)。你第 20.4.3 节说的”存档/排行榜走 Go + 数据库,你熟”,今天扩成”留存整套走 Go,你更熟”。
一句话点透:很多纯客户端开发者做留存,得现学一套后端;你不用——留存是你的母语。你塔防/大富翁的”明天还来”,底层就是你 Go 里那几张表和几个 handler。这也是为什么我说”留存是服务端的事”:它不是游戏设计文档里的一句话,是你数据库里的一行 last_login 和一个 streak 字段。
落进参数/代码,留存给你的是:
- 数据库表:
players(id, last_login, login_streak, season_points, weekly_quest_bitmask...)。 - 接口:
POST /daily-checkin、GET /quests、POST /claim-season-reward。 - 定时:赛季结束跑个脚本结算排名发奖(你 Go 的 cron 或 ticker)。
反问问你:你塔防”每日登录奖励”如果让客户端自己算”我连续登录几天”,会有什么风险(连回第 19.8 节坑点 3)?为什么这个钩子天然该落在你 Go 后端、而不是 Unity 客户端?
25.4 社交与排行:联机、好友、排行榜制造”比较”动机
留存讲完服务端,这一节讲留存最猛的一根助推器——社交比较。它直接连回你第 22 章的四根动机(成就/社交/探索/收集)里的”社交”,也连回你第 19 章辛辛苦苦搭的联机登录。
先讲 Why。人为什么能”为了一个游戏天天回来”,哪怕自己一个人打也挺爽?因为”别人也在玩,而且别人可能比我强”。你发朋友圈等赞(第 22 章举过),本质就是社交比较——“我在别人眼里什么样”。游戏把这根绳子用到极致:排行榜、公会、PVP、炫皮肤。玩家建了塔、打了怪,第一反应常是”截图发群里显摆”;看到排行榜有人比自己高 200 分,当晚就多打三局想超回去。
三个社交留存点,你做游戏必碰:
联机(Multiplayer):你第 19 章的主业。玩家和真人一起/对抗,这股”人和人碰撞”的劲,比打 AI 强十倍。你塔防做联机合作守家,大富翁做联机对战——第 20 章 MVP 阶段三就是它。联机本身不是留存钩子,是”社交动机的容器”:没有联机,社交绳子就空着。
好友 / 公会:玩家加好友、看好友在干嘛、送体力、比进度。它制造”我和具体某个人绑定”的关系,比陌生排行榜更黏。你 Go 后端加张 friends 表、gift 接口就能做。
排行榜(Leaderboard):这是社交比较最赤裸的体现——把”谁强”排成一列,人人看得见。你塔防按”守波数/总击杀”排,大富翁按”总资产”排。排行榜的毒在于:它把”成就动机”(第 22 章,我想变强)和”社交动机”(我想比别人强)拧成一股,玩家为了”上一名”能肝到凌晨。
现在最大的好消息给你:排行榜用你的 Go 后端做,零压力。
你想想排行榜技术上是啥:一张表存”玩家 id + 分数”,按分数排序返回前 N 名。你第 19 章写的就是 CRUD——INSERT 战绩、SELECT ... ORDER BY score DESC LIMIT 100。你 Go 里 SELECT 排个序返回 JSON,Unity 端用第 18 章 UI 的 Text/Scroll View 画出来,完事。没有任何你不会的东西。你甚至可以把”实时排行榜”用第 19.5 节的 WebSocket 广播——某玩家分数变了,推给所有在线的人,榜单实时跳,那股”被人超了”的紧张感立刻拉满。
连回第 22 章的动机审视:你塔防原型若”各自守各自、没把比做出来”,社交绳子就是松的(第 22.6 节说的)。今天这节给你补绳子的材料——联机(你第 19 章有)+ 排行榜(你 Go 的 CRUD 有)+ 好友(你加张表就有)。三根绳子一绷,留存直接上一个台阶。
落进参数/代码:
- 表:
scores(player_id, mode, value, updated_at),索引建在(mode, value)。 - 接口:
POST /submit-score(对局结束客户端报分,服务器权威算,连 24.4 防作弊)、GET /leaderboard?mode=tower&top=100。 - 实时:WebSocket 广播分数变更(第 19.5 消息
{"type":"score_update",...})。
反问问你:你塔防如果只做单机、排行榜”存在本地”,和做联机、排行榜”存在你 Go 后端且所有人可见”,玩家留存动力差在哪?为什么社交比较能同时拽住第 22 章的”成就”和”社交”两根动机?
25.5 元进度(Meta-progression):让失败也有意义、给长线目标
社交和排行是”和别人比”,这一节讲”和自己比的长线”——元进度(Meta-progression,元进度,指跨局保留、局外成长的进度)。它是留存里最温柔、也最长效的一根线。
先讲现象。你有没有过这种体验:一局塔防打输了,恼火,但看到”这局解锁了新塔的图纸、攒够了 30% 的赛季经验”,你就不那么气了——因为”虽然这局输了,但我账户里多了点东西,下次更强”。这股”失败也有积累”的安慰,就是元进度。
它和第 24.5 的 near-miss 是搭档:near-miss 让你”想再来一局翻盘”,元进度让你”就算翻不过,这局也没白打”。两者合起来,把”失败”从”劝退”变成”燃料”。
元进度长啥样?举你项目的例子:
解锁塔种类:你塔防,初始只有”伤害塔”,玩着玩着(通关、做任务、抽卡)解锁”减速塔""对空塔""火焰塔”。这些解锁跨局保留——下局开局你就有更多选择。这既喂第 22 章的”收集”动机(我图鉴越来越全),又让平衡(24.3)有余地:后期怪种多,你塔种也得多,元进度就是”慢慢给你配齐武器库”。
皮肤 / 装饰:大富翁解锁限定棋子皮肤、塔防解锁塔的外观。纯收集向,喂”拥有”动机(第 22 章第四根绳子)。皮肤不强力(否则变付费变强、破坏平衡),只好看——但”好看”对收集党够用了。
赛季等级 / 通行证:你打一局攒赛季经验,经验到等级给永久奖励。这是把 25.3 的赛季和元进度焊一起:长线目标 + 跨局积累。
元进度的关键设计纪律:它必须跨局保留、且不能破坏单局平衡。你解锁了”火焰塔”,是”多一种选择”,不是”火焰塔比别的强所以必选”——否则又回到 24.3 的平衡崩坏。元进度给的是”广度”(更多玩具),不是”数值碾压”(更强玩具)。这条线守不住,你的游戏就变”充钱就强”,留存是有了,口碑死了。
落进你的 Go 后端,元进度就是又几张持久化表:
unlocks(player_id, tower_type, unlocked):记录解锁了哪些塔。cosmetics(player_id, skin_id, owned):皮肤拥有。season_pass(player_id, level, xp):赛季进度。
玩家登录(第 19 章流程)时,Go 把这些拉回来,Unity 客户端照着显示”已解锁的塔可选、未解锁的灰着”。又是你 CRUD 的母语。
反问问你:你塔防如果”解锁的火焰塔比别的塔强一倍”,短期留存可能涨,但会破坏第 24.3 的什么?元进度该给”广度”还是”数值碾压”,为什么?
25.6 落地清单:把 24/25 章塞进你第 20 章的 MVP
最后一节,我不讲新概念,帮你把这一章(加第 24 章)落成一份可执行的落地清单,直接呼应你第 20 章的 MVP 路线图。你照这份清单,逐格填你塔防/大富翁的答案,设计文档就有了。
我以”五个钩子”提问,你每个都要能答出”我的游戏里是什么”:
1. 核心循环(连第 22 章 + 第 20.5 阶段一)
你玩家反复在干的那几步闭环是啥?塔防:建塔→抵挡→得币→升级→再抵挡。大富翁:掷骰→走→触发→决策→再掷。每环有没有小反馈(第 23 章)?
2. 前 5 分钟(连 25.1 引导)
第一关只教了哪个机制?塔防:只建一种塔打一种怪。大富翁:只掷骰走路。有没有”念说明书”的弹窗(该删)?
3. 第一个爽点(连 24.4 随机 + 25.2 奖励)
玩家进游戏多久第一次”哇”?塔防:第一只怪被塔秒、飘金币。大富翁:第一次踩空地买下地收租。这个爽点是不是即时奖励?有没有可变比率的”下一波可能欧”钩子?
4. 留存钩子(连 25.3 服务端)
玩家明天为什么回来?每日登录(Go 存
login_streak)?周任务(Go 存weekly_quest)?赛季(Go 存season_points)?这些钩子是不是都落在你 Go 后端、不是客户端算?
5. 联机社交点(连 25.4 + 第 19 章)
社交绳子拽住了吗?联机合作/对战(第 19 章 WebSocket)?排行榜(Go 的
scores表 CRUD)?好友(加friends表)?这股”和别人比”的劲,是不是你 Go 后端零压力能做?
你把这五格填完,第 20 章 MVP 就从”能跑的原型”升级成”会留人的产品”。注意节奏(连第 20.5):阶段一先让单机核心循环 + 前 5 分钟 + 第一个爽点跑通(纯客户端,第 23/24 章手感);阶段二加登录,把元进度/解锁的存档接你 Go(25.5);阶段三加联机,把排行榜/社交接你 Go(25.4);阶段四把每日登录/周任务/赛季的留存循环补全(25.3)。一层层叠,和复杂度分层一个道理。
收个尾。你从坐标、网格、光照一路学到这,第 24、25 章是”产品思维”的入口:难度平衡随机管”一局公不公平”(24 章),引导留存奖励管”玩家回不回来”(25 章)。而你作为 Go 程序员最赚的是——留存、排行、元进度、每日登录,这些”让别人留下来”的活,全是你数据库里几张表、几个 handler 的母语。别人做留存要现学后端,你张嘴就是 SELECT ... ORDER BY。这,就是你做游戏最隐蔽的护城河。
【思考题】
- “不教而教”和”第一关只引入一个机制”是什么关系?你塔防第一关如果同时弹窗教”建塔、升级、卖塔、对空”四个机制,新手会掉进第 22 章哪个区?怎么改?
- 固定比率奖励和可变比率奖励(抽卡/宝箱)玩家长期动力有何不同?为什么抓娃娃机、彩票让人上头,本质是哪种比率?可变比率里的随机必须用什么手段控住(连回第 24.4 章)?
- 为什么说”留存是服务端的事”?你塔防”每日登录奖励”如果让客户端自己算连续天数,会有什么风险(连回第 19.8 节坑点 3)?它该落在你 Go 后端的哪几张表/接口?
- 你塔防做联机排行榜,用你 Go 后端做为什么”零压力”?它同时拽住了第 22 章的哪两根动机?元进度(25.5)该给”广度”还是”数值碾压”,为什么不能破坏第 24.3 的平衡?
【参考答案】
- “不教而教”是总原则(用关卡设计教、不念说明书),“第一关只引入一个机制”是它最具体的执行法——一次塞太多 = 学习曲线陡成悬崖。第一关同时教四个机制,新手信息爆炸、技能还是 0 却要爬四道坡,掉进第 22 章”焦虑区”直接走人。改法:第一关只让建一种塔打一种弱兵(高亮空地飘”点这建塔”),跑通”建塔→得币”;第二关再教升级,第三关再教第二种兵,每个机制单独占一关。
- 固定比率(按 N 次必给)玩家很快摸透规律,一旦停给就弃;可变比率(随机给)玩家”下一把可能中”的盼头让人停不下来,长期动力强得多。抓娃娃机、彩票本质是可变比率——不确定回报最上头。可变比率里的随机必须控住:用保底(pity,连开 N 包没稀有第 N+1 必给)防脸黑弃游,用权重(稀有低权重)防稀有无价值,否则连开二十包全普通玩家会认定游戏耍他走人(连 24.4 可控随机 + 24.5 near-miss)。
- 留存钩子(每日登录/周任务/赛季)要”记住玩家状态、跨设备一致、按时发奖”,本质是服务端状态管理 + 定时逻辑,不是客户端能扛的。每日登录若客户端自己算连续天数,玩家改本地内存就能”伪造连续 7 天”白领大奖,正是第 19.8 节坑点 3”客户端算结果被作弊”。它该落你 Go 后端:表
players(last_login, login_streak)+ 接口POST /daily-checkin(查库算连续、发奖、更新),服务器权威裁定。 - 排行榜技术上是”一张表存玩家 id+分数、按分数排序返回前 N”——你第 19 章写的就是 CRUD(
SELECT ... ORDER BY score DESC LIMIT 100),Go 里排个序返 JSON、Unity 用 UI 画,零新东西;甚至用第 19.5 WebSocket 广播实时跳榜。它同时拽住第 22 章”成就”(我想变强)和”社交”(我想比别人强)两根动机,拧成一股。元进度该给”广度”(更多塔种/皮肤可选)而非”数值碾压”(更强塔必选),否则破坏第 24.3 平衡——某塔强到无解玩家只用它,其他设计白费;元进度给的是玩具多,不是数值赢。