玩家会话
玩家会话(PlayerSession)是 Monoceros 的运行时状态管理核心。每个在线玩家拥有一个独立的会话实例,用于存储战斗状态、区域信息、技能冷却等运行时数据。
基本概念
PlayerSession 本质上是一个按玩家隔离的键值存储空间。所有机制子系统(战斗、区域、交互、视觉)都通过会话来共享和访问玩家的运行时状态。
会话在玩家首次需要时按需创建,在玩家退出服务器时自动销毁。
会话操作
| 操作 | 说明 |
|---|---|
get | 获取指定键的值 |
set | 设置键值对 |
remove | 移除指定键 |
has | 检查键是否存在 |
snapshot | 创建当前会话的快照 |
restore | 从快照恢复会话状态 |
clear | 清空所有键值 |
机制追踪
会话还负责追踪玩家当前参与的机制(Mechanic),例如玩家正在哪个副本、哪个竞技场中。
| 操作 | 说明 |
|---|---|
joinMechanic | 标记玩家加入某个机制 |
leaveMechanic | 标记玩家离开某个机制 |
getActiveMechanics | 获取玩家当前参与的所有机制列表 |
会话服务
SessionService 提供全局的会话管理功能:
| 操作 | 说明 |
|---|---|
getOrCreate | 获取玩家会话,不存在则创建 |
get | 获取玩家会话,不存在返回空 |
destroy | 销毁指定玩家的会话 |
snapshot | 创建指定玩家会话的快照 |
restore | 从快照恢复指定玩家的会话 |
getPlayersInMechanic | 获取参与指定机制的所有玩家 |
activeCount | 当前活跃会话数量 |
使用场景
玩家会话是各机制子系统的数据枢纽。典型用法:
- 战斗系统在会话中存储连击数、技能冷却状态
- 区域系统通过会话追踪玩家所在区域
- 交互系统在会话中记录交互冷却
- 快照/恢复功能可用于副本重置、状态回滚等场景
提示
会话的 snapshot 和 restore 功能特别适合副本场景。进入副本前创建快照,副本结束后恢复快照,可以干净地重置玩家的所有运行时状态。