跳到主要内容

开发者指南

FPSMatch 为团队竞技玩法提供地图实例、队伍、玩家数据、回合驱动和扩展接口。你可以用它开发一个独立游戏模式,也可以为已有模式补充规则、装备、界面或外部服务。

本文档假设你已了解 Java、Forge 模组入口、事件订阅和 Gradle 项目结构。示例使用 Minecraft 1.20.1、Forge 47.4.10、Java 17,与当前仓库源码配套。示例工程直接依赖该源码;旧发布版本不一定具有相同的 API。

第一个游戏模式

初次使用 FPSMatch,建议从团队淘汰赛教程开始。教程贯穿同一个 elimination_addon 工程:先注册空地图,再添加队伍、出生流程、胜负和回合,最后加入设置、能力和比分 HUD。

每章只引入当前需要的概念。代码块会指出文件或放置位置,需要保留的上一章代码会明确说明。仓库的 examples/elimination/chapters/0108 保存各章完整源码。

按功能阅读

开发任务从这里开始
理解游戏类型、地图实例和比赛状态对象关系
创建、开始、结束和复用地图地图生命周期
组织队伍、准备大厅、出生和重连队伍与玩家
添加计时阶段、结束规则和暂停回合系统
暴露地图规则和复杂配置设置系统
编写可复用地图或队伍功能能力系统
监听伤害、死亡、结算,添加命令事件命令
保存配置、能力或独立业务数据持久化
同步比分、处理客户端操作网络通信
编写 HUD、配置资源和接入其他模组客户端与集成

除了玩法主线,框架还提供独立的客户端和扩展模块。已有明确目标时,可以直接进入:

开发任务专题
开场、死亡或地图预览镜头相机与演出
按游戏类型绘制 HUD 与 TabHUD 管理器 · Tab
读取客户端状态、处理旁观客户端数据 · 旁观视角
播放音乐和配置 MVP 曲目音乐
开发房间列表和详情界面房间查询与订阅
定制商品分类、组内装备逻辑商店分类 · 监听模块
添加投掷物、爆破目标和编辑预览投掷物 · 内置能力 · 编辑预览
下载文件或适配 TaCZ 表现下载 · TaCZ 动画

完整的包与专题对应关系见源码模块索引

示例中的三个名字

elimination_addon 是 Forge 模组 ID,用于入口、依赖声明和资源命名空间。elimination 是 FPSMatch 游戏类型 ID,用于找到地图工厂。training 是某一张地图的 ID,用于区分区域、配置和比赛状态。这三个名字承担不同职责,后续章节会持续使用它们。

已经熟悉框架时,可以从 API 索引按类型寻找专题。