8.7 KiB
8.7 KiB
09 · 进程系统规范
所属文档集 ← 返回索引
摘要:能力解锁、门控系统、Geo 遗骸机制与游戏完成度追踪。
目录
1. 进程设计原则
| 原则 | 说明 |
|---|---|
| 有机探索 | 能力解锁带来新的区域通路,而非仅仅提升战斗数值 |
| 无死门 | 不存在因获取顺序错误而无法继续的情况 |
| 多路径 | 大多数门控有多种解锁方式(能力/密钥/支线) |
| 数据驱动 | 所有解锁条件用数据定义,逻辑层不硬编码 |
2. 能力系统
2.1 能力数据模型
DataModel AbilityData {
abilityId : ID
displayName : String
description : String
──────────────────────────────────
abilityType : AbilityType // 移动/战斗/探索/形态
unlockSource : UnlockSource // 如何获得(Boss掉落/收集品/商店)
──────────────────────────────────
gatesUnlocked : List<GateType> // 该能力解锁哪些门控类型
movementFlags : Flags<MovementAbilityFlag> // 移动系统的能力开关
combatFlags : Flags<CombatAbilityFlag> // 战斗系统的能力开关
}
2.2 核心能力列表
| 能力 ID | 名称 | 获取方式 | 解锁内容 |
|---|---|---|---|
DoubleJump |
双跳 | 初始能力(教程) | 空中二段跳 |
WallGrab |
墙抓 | 区域 1 Boss | 抓墙/墙跳 |
AerialDash |
空中冲刺 | 区域 2 Boss | 8方向空中冲刺 |
Plunge |
下冲 | 区域 3 收集品 | 下冲攻击 |
SwimAbility |
游泳 | 区域 4 收集品 | 进入液体区域 |
SkyFormUnlock |
天魂解锁 | 剧情节点 | 天魂形态 |
EarthFormUnlock |
地魂解锁 | 剧情节点 | 地魂形态 |
DeathFormUnlock |
命魂解锁 | 剧情节点 | 命魂形态 |
SoulSkillUpgrade |
魂技能升级 | 特定 NPC | 魂技能二阶效果 |
2.3 能力解锁流程
玩家获得 AbilityData(来源:Boss掉落/拾取/购买)
→ 发出 OnAbilityUnlocked 事件(abilityId)
→ 更新 SaveData.unlockedAbilities 集合
→ 玩家系统注册新 movementFlags 和 combatFlags
→ 门控系统重新评估所有已知门控状态
→ 地图更新(若新能力打开了新路径)
3. 门控系统
3.1 门控数据模型
DataModel GateData {
gateId : ID
roomId : ID
displayName : String
──────────────────────────────────
conditions : List<GateCondition> // 解锁条件(满足任一即可,OR逻辑)
unlockMode : GateUnlockMode // 永久解锁 / 单次通过
──────────────────────────────────
lockedVisual : VisualState
unlockedVisual : VisualState
tooltipText : String // 玩家尝试进入未解锁门时显示
}
DataModel GateCondition {
conditionType : GateConditionType
targetId : ID // 依条件类型:能力ID/密钥ID/任务ID
quantity : Optional<Integer> // 若需要数量(如 Geo 消耗)
}
3.2 门控条件类型
| 条件类型 | 说明 | 示例 |
|---|---|---|
HasAbility |
玩家已解锁某能力 | 需要双跳才能通过高台 |
HasItem |
玩家持有某关键道具 | 需要古城钥匙 |
BossDefeated |
某 Boss 已被击败 | 区域终 Boss 死后大门开启 |
QuestComplete |
某任务/剧情已完成 | NPC 认可后打开秘道 |
PaidGeo |
支付 Geo(商人/通行税) | 进入特定区域收费 |
WorldFlag |
某世界标记为真 | 触发了某机关后解锁 |
4. Geo 遗骸机制
4.1 规则规范
玩家死亡:
→ 当前持有的 Geo 全部转移为遗骸(GeoShade)
→ 遗骸实体生成于死亡位置
→ 玩家的 Geo 归零
→ 若已有遗骸(上一次死亡未取回):
→ 旧遗骸永久消失(及其中的 Geo)
→ 新遗骸替代旧遗骸
玩家到达遗骸位置并触碰:
→ 恢复遗骸中的全部 Geo
→ 遗骸消失
→ 发出 OnGeoShadeRecovered 事件
4.2 数据模型
DataModel GeoShadeState {
exists : Boolean
geoAmount : Integer
deathPosition : Vector2
roomId : ID // 遗骸所在房间(跨房间持久存在)
}
设计决策:再次死亡前遗骸永久消失
原因:来自 Hollow Knight 的核心惩罚机制。失去 Geo 的焦虑推动玩家谨慎前进,而非莽撞行事。
5. 完成度追踪
5.1 完成度指标
DataModel CompletionData {
──── 主线进程 ────────────────────
mainQuestStage : Integer // 当前主线阶段
endingUnlocked : Optional<EndingType>
──── 探索进度 ────────────────────
roomsVisited : Set<ID> // 已访问房间
mapRevealPercent: Number // 0.0~1.0
──── 收集进度 ────────────────────
maxHPUpCount : Integer // 已拾取 HP 上限碎片数
maxSoulUpCount : Integer // 已拾取灵力上限碎片数
maxSpiritUpCount: Integer // 已拾取魄元上限碎片数
lorePiecesFound : Set<ID>
──── 挑战进度 ────────────────────
bossesDefeated : Set<ID>
bossesParried : Set<ID> // 弹反过 Boss 至少一次
secretsFound : Set<ID>
}
5.2 三结局条件
| 结局 | 触发条件 |
|---|---|
| 结局 A(普通结局) | 击败最终 Boss,未满足结局 B/C 条件 |
| 结局 B(完全结局) | 击败所有 Boss + 主线所有剧情节点 + 特定 NPC 任务完成 |
| 结局 C(隐藏结局) | 发现隐藏区域、触发特定世界标记序列 + 结局 B 条件 |
6. 护符系统
6.1 护符数据模型
DataModel CharmData {
charmId : ID
displayName : String
description : String
──────────────────────────────────
notchCost : Integer // 装备槽位消耗
──────────────────────────────────
effects : List<CharmEffect>
comboCharms : Optional<List<ID>> // 与哪些护符组合触发强化效果
comboEffects : Optional<List<CharmEffect>>
}
DataModel CharmEffect {
effectType : CharmEffectType
params : Map<String, Number>
}
6.2 护符槽位规则
| 规则项 | 说明 |
|---|---|
| 初始槽位 | 3 个 Notch |
| 扩展方式 | 特定 NPC(付 Geo)增加 Notch |
| 最大 Notch | 11 个(初始 3 + 最多可购买 8) |
| 过量装备 | 可强行装备超过槽位(超出则 HP 上限临时减半) |
6.3 护符效果类型
| 类型 | 说明 | 参数 |
|---|---|---|
StatModifier |
修改某资源上限/恢复量 | statType, delta |
DamageModifier |
修改某类攻击的伤害倍率 | attackType, multiplier |
WeaponOverride |
覆盖某形态的武器 | formId, weaponId |
SkillModifier |
修改技能效果参数 | skillId, paramKey, newValue |
AerialDashCount |
增加空中冲刺充能次数 | additionalCharges |
ParryWindowExpand |
扩大弹反时间窗口 | addedSeconds |
OnHitEffect |
命中时附加效果 | effectType, chance |
7. 进程事件目录
| 事件 | 触发时机 | 载荷 |
|---|---|---|
OnAbilityUnlocked |
获得新能力 | abilityId |
OnGateUnlocked |
门控条件满足,门开启 | gateId |
OnCharmEquipped |
装备护符 | charmId, slotIndex |
OnCharmUnequipped |
卸下护符 | charmId |
OnCharmComboActivated |
护符组合效果触发 | charmIds: List<ID> |
OnGeoShadeCreated |
死亡创建遗骸 | position, amount |
OnGeoShadeRecovered |
拾取遗骸 | amount |
OnGeoShadeLost |
遗骸永久消失 | amount |
OnEndingUnlocked |
结局条件满足 | endingType |
OnCompletionMilestone |
完成度达到里程碑 | milestoneId, percent |