PRD-065 无尽爬塔
文档编号:PRD-065
版本:v1.0
状态:已通过
适用端:服务端 / 客户端
脚本挂载:lua/arena/endless_tower.lua
1. 背景与目标
无尽爬塔提供单人数值验证与赛季排名。层数生成、词条选择、难度曲线、奖励适合用 Lua 编排。
目标
- 无限层数,每层 1–3 波怪物,层数越高属性越强。
- 每 5 层三选一增益,构建当次爬塔 Build。
- 每周重置排名,保留历史最高层。
2. 核心规则
2.1 层数与难度
- 第 N 层怪物属性 = 基础 ×
1.15^N,上限按配置封顶。 - 每 10 层 BOSS,带阶段技能与狂暴计时。
- 每层限时 3 分钟,超时失败。
- 失败可重试当前层,每日 5 次。
2.2 增益选择
- 每 5 层通关后从 3 个增益中选 1 个。
- 增益分攻击/防御/生存/特殊,可叠加但同类有上限。
- 增益只在本轮爬塔生效,退出/重置清空。
- 可消耗道具 reroll 一次。
2.3 排名与扫荡
- 每周一 0 点重置层数,按最高层排名。
- 已通关层可扫荡,扫荡消耗体力,奖励按层数。
- 排名奖励按周发放,前 100 名额外称号。
3. 服务端设计
3.1 Lua 脚本设计
-- lua/arena/endless_tower.lua
Tower = {
base_hp = 10000,
growth = 1.15,
floor_time = 180,
retry_daily = 5,
buff_every = 5,
}
function OnEnterFloor(ctx, role, floor)
if floor > ctx:GetMaxFloor(role) + 1 then return ctx:Fail(role, "层数未解锁") end
local monster = ctx:SpawnTowerMonster(floor, Tower.base_hp * Tower.growth ^ floor)
ctx:SetFloorTimer(role, Tower.floor_time)
ctx:TrackEvent(role, "monster_dead", OnFloorClear)
end
function OnFloorClear(ctx, role, floor)
if floor % Tower.buff_every == 0 then
ctx:OfferBuffs(role, ctx:RollBuffs(3))
else
ctx:NextFloor(role)
end
end
function OnBuffPick(ctx, role, buff_id)
ctx:AddTowerBuff(role, buff_id)
ctx:NextFloor(role)
end
- 层数、增益、怪物属性由脚本生成,C++ 负责场景/战斗。
- 每轮爬塔状态存
ctx.state,退出清空。 - 最高层/排名/扫荡记录持久化。
3.2 协议
| 方向 | 协议 | 说明 |
|---|---|---|
| C→S | CS_TowerEnter | 进入当前层 |
| C→S | CS_TowerBuff | 选择增益 |
| C→S | CS_TowerSweep | 扫荡 |
| S→C | SC_TowerInfo | 层数/增益/排名 |
| S→C | SC_TowerResult | 通关/失败/奖励 |
3.3 竞技约束
- 爬塔属性使用角色真实属性,不归一化。
- 禁止使用复活道具/外力,失败即结束。
- 排行榜校验战斗日志,异常层数回滚。
4. 客户端设计
- 爬塔界面:当前层、最高层、排名、奖励预览。
- 层内 HUD:倒计时、波次、增益列表。
- 三选一增益卡片、reroll 按钮。
- 失败重试/扫荡/排行榜。
- 赛季重置提示。
5. 配置与 Lua 接口
| 配置 | 说明 |
|---|---|
growth | 层数成长 |
floor_time | 限时 |
buff_pool | 增益池 |
boss_every | BOSS 层 |
sweep_cost | 扫荡消耗 |
Lua 接口:SpawnTowerMonster、SetFloorTimer、RollBuffs、OfferBuffs、AddTowerBuff、NextFloor。
6. 边界与异常
| 场景 | 处理 |
|---|---|
| 通关后掉线 | 记录层数,重连继续 |
| 增益重复 | 按上限叠加/替换 |
| 超时 | 判失败,保留最高层 |
| 扫荡已通关层 | 正常;未通关拒绝 |
| 脚本异常 | 结束本轮,保留已得奖励 |
7. 验收标准
- 层数/难度/限时/BOSS/增益/排名正确。
- 失败重试/扫荡/周重置正确。
- 异常层数可校验回滚。
- 客户端增益/层数显示一致。
- 脚本可调整成长/增益池。