跳到主要内容

玩家会话

玩家会话(PlayerSession)是 Monoceros 的运行时状态管理核心。每个在线玩家拥有一个独立的会话实例,用于存储战斗状态、区域信息、技能冷却等运行时数据。

基本概念

PlayerSession 本质上是一个按玩家隔离的键值存储空间。所有机制子系统(战斗、区域、交互、视觉)都通过会话来共享和访问玩家的运行时状态。

会话在玩家首次需要时按需创建,在玩家退出服务器时自动销毁。

会话操作

操作说明
get获取指定键的值
set设置键值对
remove移除指定键
has检查键是否存在
snapshot创建当前会话的快照
restore从快照恢复会话状态
clear清空所有键值

机制追踪

会话还负责追踪玩家当前参与的机制(Mechanic),例如玩家正在哪个副本、哪个竞技场中。

操作说明
joinMechanic标记玩家加入某个机制
leaveMechanic标记玩家离开某个机制
getActiveMechanics获取玩家当前参与的所有机制列表

会话服务

SessionService 提供全局的会话管理功能:

操作说明
getOrCreate获取玩家会话,不存在则创建
get获取玩家会话,不存在返回空
destroy销毁指定玩家的会话
snapshot创建指定玩家会话的快照
restore从快照恢复指定玩家的会话
getPlayersInMechanic获取参与指定机制的所有玩家
activeCount当前活跃会话数量

使用场景

玩家会话是各机制子系统的数据枢纽。典型用法:

  • 战斗系统在会话中存储连击数、技能冷却状态
  • 区域系统通过会话追踪玩家所在区域
  • 交互系统在会话中记录交互冷却
  • 快照/恢复功能可用于副本重置、状态回滚等场景
提示

会话的 snapshotrestore 功能特别适合副本场景。进入副本前创建快照,副本结束后恢复快照,可以干净地重置玩家的所有运行时状态。