用途:本技能用于在 GraphOS 项目中开发游戏表现层,使用 TypeScript 与 PixiJS 实现渲染、UI、动画、场景组合、相机以及视觉输入反馈等。它负责将已有逻辑状态映射到视觉层,适用于实现或重构游戏视觉、场景、角色表现、UI 组件与特效,改善渲染结构、性能或可维护性而不改变图逻辑模型。
主要能力与边界:表现层只实现渲染、动画、相机、UI、视觉输入反馈、资源加载与显示,不直接修改 World 模型、Context、Variant、System、Event、EventSystem 等逻辑层制品。若需求涉及逻辑层变更,应先暂停表现层编码,交由 graph-world 完成逻辑更新与闭环验证后再继续表现层适配。
使用方式:表现层通过 graphos-world-client 包访问运行中的逻辑层,安装命令为 npm install graphos-world-client。标准用法为创建 Client 实例,在渲染循环中遍历 client.objects() 读取对象状态并驱动 PixiJS 渲染,配合 requestAnimationFrame。对象类型定义在自动生成的 app/World.ts 中,不可手动修改,可从其中导入类型以获得 TypeScript 类型安全。生命周期钩子通过 Client 事件处理,运行时事件名为 spawn、despawn、change,对应 SpawnEvent、DespawnEvent、ChangeEvent,均带有 object 字段,ChangeEvent 另带 changes 字段。动态几何默认采用立即模式渲染,每帧清空 PixiJS Graphics 并基于当前状态与对象关系重绘;需要每对象渲染资源时,可用 WeakMap 以逻辑对象引用为键存储。
目录与输出约束:表现层源码必须位于 ./app/,构建输出必须位于 ./dist/app/,不得放入逻辑层或 Graph 生成目录。
工作流程:先拆分需求为表现层与逻辑层需求,确认是否需先运行 graph-world;随后在 ./app/ 内组织场景、视图、组件与资源模块,设计状态映射层,保持输入处理仅为表现层;再实现场景引导、资源加载、渲染循环与 UI 挂载,并通过 client.objects() 读取状态、绑定 PixiJS 对象、添加动画过渡;之后构建并验证输出到 ./dist/app/,最后与 graph-world 提供的逻辑状态集成,验证初始化、状态转换、事件反馈与回退表现。
限制与失败恢复:禁止直接导入或引用逻辑层源码文件,逻辑层状态的读写都须经 graphos-world-client。无法从 client.objects() 获得的字段,应记录契约缺口并交由 graph-world 暴露,不得在表现层绕过。构建失败先检查 TypeScript 与资源路径,再做最小构建配置调整;立即模式重绘性能下降时,可将静态层改为保留容器;类型不匹配时重新阅读 app/World.ts 并调整表现层代码,不得修改该文件。
该技能还支持迁移为个人全局技能,复制到用户技能目录,例如 ~/.copilot/skills/graph-world-pixijs/SKILL.md 或 ~/.agents/skills/graph-world-pixijs/SKILL.md。