Repository navigation
World Sandbox Editor
SSOrangeCATY edited this page Sep 16, 2026
·
1 revision
状态:设计阶段,尚未实现。
世界沙盘编辑器计划直接使用 Minecraft 实际世界作为三维视口,让地图作者通过自由镜头、俯视观察、点击和拖动来配置点位与区域。
- 队伍出生点及出生朝向。
- 地图边界。
- 爆破区域。
- 对象列表、选中高亮、显示/隐藏和锁定。
- 坐标吸附、数值编辑、撤销/重做、本地草稿和统一保存。
商店区域、比赛结束传送点、入场演员布局和镜头关键帧计划后续接入。编辑器不负责方块建造。
| 区域 | 内容 |
|---|---|
| 顶部 | 地图、工具模式、吸附、撤销/重做、保存、退出。 |
| 左侧 | 按队伍与类型分组的对象列表。 |
| 中央 | 实际世界、点位、朝向箭头、区域边框与操作手柄。 |
| 右侧 | 坐标、朝向、队伍和区域端点属性。 |
| 底部 | 当前坐标、草稿状态、区块加载与保存反馈。 |
左键负责选择或放置;右键按住进入 WASD/QE 自由飞行,滚轮调整速度;Alt + 左键围绕焦点旋转,F 聚焦对象。出生点默认吸附到方块顶面中心,区域继续使用现有整数方块边界语义。
FPSMatch 提供编辑器底座,玩法通过适配器接入:
-
WorldEditorScreen:面板、焦点和输入路由。 -
EditorCameraRig:自由、环绕、俯视和聚焦,通过CameraDirector取得镜头。 -
EditorDocument:基线快照、草稿、选择和撤销历史。 -
EditorObjectAdapter:对象属性、渲染、校验和正式配置映射。 -
EditorOverlayRenderer/EditorPicking:标记、手柄和鼠标射线拾取。 -
MapEditService:服务端授权、快照、冲突检测、提交和持久化。
编辑器镜头建议使用优先级 50,低于死亡 100 和过场 200。失去镜头控制时暂停编辑并保留草稿,不自动抢回镜头。
打开编辑器时由服务端下发地图快照和版本标识。拖动只修改客户端草稿,点击保存才提交完整变更。服务端必须在主线程重新检查权限、维度、比赛状态、版本、队伍、坐标和请求规模,并在全部验证通过后统一应用。
版本标识应覆盖点位与区域的规范化配置摘要,这样旧工具或命令造成的外部修改也能被发现。冲突时保留客户端草稿并要求重新加载,不能静默覆盖或部分写入。
独立镜头不会让服务器自动发送远处区块。第一期只允许在客户端已经加载的范围内拾取和编辑;未加载位置必须显示明确状态。编辑器可以提供经过服务端校验的“前往此处”操作,通过移动管理员真实玩家来加载区域。
后续若增加以相机为中心的区块订阅,需要同时处理客户端接收、服务端范围限制、缓存和退出释放。只添加强加载票据不足以让客户端看到区块。
- 只读对象展示、镜头与输入。
- 出生点增删、拖动、朝向和撤销重做。
- 地图边界、爆破区、统一提交和冲突处理。
- 保存后重载、多管理员同时编辑、权限变化和旧工具修改的验证。
验收重点包括 GUI 缩放后的拾取、一次拖动对应一次撤销、输入框不驱动镜头、未加载区域不误放点,以及死亡/过场抢占和退出重进后无镜头或输入残留。