$npx -y skills add HOBOBO/AbilityKit --skill shooter-demoAbilityKit Shooter Demo(com.abilitykit.demo.shooter.*)——6 个包的服务端权威 StateSync + Svelto.ECS 演示示例。刻意不复用 ability/combat 技能栈,与 moba demo(Entitas + FrameSync + 全技能栈)形成对照。覆盖 ShooterBattleRuntimePort 9 端口、ShooterBattleSimulation 双 module 管线、三类快照(StateSnapshot/PackedSnapshot/PureState
| 1 | # shooter-demo skill |
| 2 | |
| 3 | 基于源码核校(2026-07-20)。Shooter demo 实际存在,约 215 个 .cs 文件,分 6 个包。 |
| 4 | |
| 5 | ## 核心定位(必读) |
| 6 | |
| 7 | **Shooter demo = 服务端权威 StateSync + Svelto.ECS 的网络同步演示示例**。 |
| 8 | |
| 9 | **刻意不复用** ability/combat/triggering/modifiers/attributes 技能栈——这是与 moba demo(Entitas + FrameSync + 全技能栈复用)的核心对照点。memory 3 天前的判断"shooter = 网络同步(Svelto-ECS + statesync)/shooter 未复用技能栈"**当前代码仍然完全吻合**。 |
| 10 | |
| 11 | ## 与 moba demo 的核心差异 |
| 12 | |
| 13 | | 维度 | Shooter | MOBA | |
| 14 | |------|---------|------| |
| 15 | | ECS 框架 | **Svelto.ECS**(`world.svelto` + `thirdparty.svelto`);struct `IEntityComponent`、`ExclusiveGroup`、`QueryEntities` | **Entitas**(`world.entitas`);代码生成 `Actor*Component` | |
| 16 | | 同步方式 | **StateSync**(服务端权威,packed/pure 快照下推) | **FrameSync** + 客户端预测回滚(`ClientPredictionDriverModule`) | |
| 17 | | 技能栈复用 | **不复用**。runtime deps 只含 core/host/world.di/world.svelto/share/protocol.shooter | 全面复用 ability/combat.*/triggering 等 | |
| 18 | | 战斗内核 | 自写极简:`ShooterBattleSimulation` + 双 module + 空间网格命中 | `SkillCastCoordinator`/`MobaBuffService` 完整玩法生产线 | |
| 19 | | 客户端预测 | 自己的 `ShooterClientPredictionRuntimeAdapter` + `ShooterPackedSnapshotRollbackProvider`(**不复用** `ClientPredictionDriverModule`) | 复用 `ClientPredictionDriverModule` | |
| 20 | | 配置 | `ShooterSveltoGameplayScenarioConfig`(内置 `WaveSurvival`)+ `ShooterRuleSet` 硬编码 | Luban + JSON 表 | |
| 21 | | 玩法 | 俯视圆形竞技场、波次生存、射击 + 命中 + 爆炸 + 穿透;3 种攻击槽 | MOBA 四英雄技能/被动/Buff | |
| 22 | | AI | `com.abilitykit.demo.shooter.ai`(ML-Agents)+ `ShooterBotAiRuntime` 规则 Bot | 无独立 AI 包 | |
| 23 | |
| 24 | ## 6 个包 |
| 25 | |
| 26 | | 包 | 文件数 | 职责 | |
| 27 | |----|-------|------| |
| 28 | | `com.abilitykit.demo.shooter.runtime` | ~80 | 逻辑世界 + Svelto 战斗模拟 + 同步导出 | |
| 29 | | `com.abilitykit.demo.shooter.share` | 1 | 共享常量(`ShooterGameplay`:RoomType/WorldType/GameplayId/TickRate=30/MaxPlayers=4/PlayerHp=1000) | |
| 30 | | `com.abilitykit.demo.shooter.view.runtime` | 121 | 客户端表现/同步/会话/PlayMode | |
| 31 | | `com.abilitykit.demo.shooter.editor` | 6 | `Tools/AbilityKit/Shooter Demo` 窗口 + SceneView 渲染 | |
| 32 | | `com.abilitykit.demo.shooter.ai` | 1 | ML-Agents 训练环境适配 | |
| 33 | | `com.abilitykit.protocol.shooter` | 7 | 线协议(MemoryPack 结构体 + Codec) | |
| 34 | |
| 35 | ## Sections |
| 36 | |
| 37 | - [when_to_use.md](when_to_use.md) — 何时启用本 skill |
| 38 | - [packages_overview.md](packages_overview.md) — 6 包依赖图 + 职责 |
| 39 | - [runtime_simulation.md](runtime_simulation.md) — ShooterBattleRuntimePort 9 端口 + ShooterBattleSimulation 双 module 管线 |
| 40 | - [svelto_ecs.md](svelto_ecs.md) — Svelto 适配 + 5 个 ExclusiveGroup + struct 组件 |
| 41 | - [snapshots_hash.md](snapshots_hash.md) — 三类快照 + StateHasher + AOI 兴趣裁剪 + 定点量化 |
| 42 | - [client_sync.md](client_sync.md) — 三种客户端同步策略 + Drift Recovery + Fast Reconnect + Lag Compensation |
| 43 | - [network_protocol.md](network_protocol.md) — 11 opcode + MemoryPack Codec |
| 44 | - [presentation.md](presentation.md) — PresentationSession + ViewProjection + DotsBinder + ViewEventSink |
| 45 | - [playmode_editor.md](playmode_editor.md) — 4 种 PlayMode + 3 种 DriveMode + SceneView 渲染 |
| 46 | - [acceptance_testing.md](acceptance_testing.md) — ShooterAcceptanceSpecs 纯 C# 验收基线 + DeterminismSpecRunner + Benchmark |
| 47 | |
| 48 | ## 相关 skill |
| 49 | |
| 50 | - 完整技能/触发/BUFF(**shooter 不复用**,但可作对照)→ [ability-kit](../ability-kit/SKILL.md) |
| 51 | - 客户端预测(**shooter 不复用** `ClientPredictionDriverModule`)→ [framesync-prediction-rollback](../framesync-prediction-rollback/SKILL.md) |
| 52 | - shooter 接入 coordinator(`ShooterCoordinatorSessionHost` 用 `ExistingWorldSessionCoordinatorHost`)→ [coordinator](../coordinator/SKILL.md) |
| 53 | - moba demo 对照 → [moba-demo](../moba-demo/SKILL.md) |