新玩家的前 30 分钟决定留存:走哪条路、接什么任务、什么时候第一次打怪、什么时候第一次获得装备,节奏设计得顺,玩家就留下来了。新手村的引导动线设计是玩法策划与后端配合的教科书案例。
---登录触发:新手动线的起点
function login(actor)
if actor:GetLevel() > 10 then return end
if getplayvar(actor, "HUMAN", "guide_step") == "" then
setplayvar(actor, "HUMAN", "guide_step", 1, 1)
newpicktask(actor, 10001)
sendmsg(actor, 1, "跟随指引,击败 3 只稻草人吧")
end
end
---杀怪触发:引导任务的进度推进
function killmon(actor, mon)
if mon:GetName() == "稻草人" then
local step = tonumber(getplayvar(actor, "HUMAN", "guide_step")) or 0
if step == 1 then
local n = tonumber(getplayvar(actor, "HUMAN", "guide_kill")) or 0
setplayvar(actor, "HUMAN", "guide_kill", n + 1, 1)
if n + 1 >= 3 then
giveitem(actor, "木剑", 1, 1, "引导奖励")
setplayvar(actor, "HUMAN", "guide_step", 2, 1)
sendmsg(actor, 1, "获得木剑!去找村长接下一个任务")
end
end
end
end
动线的每一步用 guide_step 变量串联:杀 3 只稻草人得木剑、找村长对话学第一个技能、跑一次地图传送、加入一次组队,四个节拍覆盖战斗、社交、探索三大系统。节拍的间隔控制在 5 到 8 分钟,多巴胺的间隔决定了玩家是否继续。
function playlevelup(actor, oldLevel, newLevel)
if newLevel >= 10 and tonumber(getplayvar(actor, "HUMAN", "guide_step")) < 4 then
-- 升级过快:补发跳过的引导奖励
giveitem(actor, "木剑", 1, 1, "引导补偿")
setplayvar(actor, "HUMAN", "guide_step", 4, 1)
end
end
大号带小号的升级速度会跳过动线,levelup 触发里的补发逻辑保证跳级的玩家不缺关键装备。动线的漏斗数据(每一步的完成人数)按天出报表,掉人最多的步骤就是要优化的步骤。新手村的怪物密度与任务奖励的数值配合动线:前 30 分钟不缺药、不缺钱、不迷路。
30 分钟留存率与动线漏斗的每日看板,第四步(组队)的完成率是新手指引是否清晰的试金石。
引导任务曾经可以被大号代打,完成标记打了玩家却什么都没体验,任务触发时增加"本人造成伤害"的判定。动线的步骤曾经可以跳序,玩家先接了组队任务没有战斗力,步骤的顺序锁死在 guide_step 的推进逻辑里。
动线的每一步都配一条服务端提示文案,文案的语气要像师父带徒弟而不是系统通告。动线变量全部持久化,跨天与重登不断线。引导的跳过权给回归玩家:老账号回流时动线自动折叠成可选项,尊重老玩家的经验。
本文由 996 技术组基于 996 引擎官方知识库与浮生梦老师课程体系整理。团队长期从事传奇类引擎 Lua 后端逻辑、客户端界面与商业版本交付,内容以官方知识库与真实项目为出处,按版本持续修订。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
实战应用:用在哪里 战士的烈火剑法一击熄火后要等八秒冷却,连招断档感强烈。疾风烈火斩在烈火剑法命中后给一次连击窗口:三秒内再…
实战应用:用在哪里 阵营对抗打到中期容易疲软:打赢没有额外好处,输掉也没有代价。阵营声望体系给阵营战装上荣誉刻度:个人与阵营…
实战应用:用在哪里 拿下沙巴克之后呢?城主除了名字挂在城墙上,对城市毫无影响。城主施政玩法让占领变成治理:城主每周获得市政令…
实战应用:用在哪里 主线路光缆被挖断的深夜,全服掉线 20 分钟,玩家以为游戏倒闭。备用线路方案给接入层配第二条出口:主线路…
实战应用:用在哪里 行会官员由帮主任命的老模式弊端明显:任人唯亲、能上不能下。行会选举接口把官员换届做成投票制:每两个月一次…
实战应用:用在哪里 烈火剑法的伤害加成、冷却时间、下一级提升,全靠玩家记忆或去官网查。技能说明悬浮卡片在鼠标悬停技能图标零点…