mcpField
G
godot-multiplayer-networking

godot-multiplayer-networking

github.com/thedivergentai开发907382 次安装2 周前更新
代码仓库

关于 godot-multiplayer-networking

面向 Godot 多人游戏开发者的网络编程技能,提供从主机与客户端设置到同步、安全 RPC 和回滚的脚本模式。重点包括服务端权威、带宽控制及大型场景的兴趣裁剪。

主要功能

  1. 01ENet 主机与客户端配置
  2. 02服务端权威验证与安全 RPC
  3. 03自适应同步节流与紧凑封包
  4. 04客户端预测、校正与回滚
  5. 05可见网格兴趣裁剪
  6. 06LAN 发现与连接监控

适用场景

  1. 01搭建专用或 LAN 多人游戏服务器
  2. 02限制 RPC 请求并验证共享状态
  3. 03降低位置同步的带宽开销
  4. 04为大型世界筛选网络实体

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/thedivergentai/game-dev-agentic-skills --skill godot-multiplayer-networking

安装后在 Claude Code 中输入/godot-multiplayer-networking确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
migration-notes.md
rpc-lobby-and-sync.md
scripts/
client_network_setup.gd
client_prediction_synchronizer.gd
game_state_sync_manager.gd
multiplayer_spawner_manager.gd
net_adaptive_sync_throttle.gd
net_anti_desync_reconciler.gd
net_custom_id_mapper.gd
net_enet_expert_config.gd
net_headless_server_auto_start.gd
net_heartbeat_monitor.gd
net_lan_discovery.gd
net_packet_bit_packer.gd
net_packet_rate_limiter.gd
net_rollback_helper.gd
net_visibility_grid_culling.gd
network_error_handler.gd
network_input_synchronizer.gd
networked_interpolator.gd
packet_peer_latency_test.gd
secure_variable_synchronizer.gd
secured_rpc_pattern.gd
server_authoritative_controller.gd
server_dedicated_host.gd

详细介绍

绝对不要做的事(网络专家规则)

核心架构
  • 绝对不要将 Reliable 用于高频数据(位置/移动) — 可靠数据包会阻塞后续所有数据包,直到收到确认(队头阻塞)。请使用 UnreliableOrdered。
  • 绝对不要信任客户端提供的共享状态(生命值/金钱/物品栏) — 客户端只能提出操作建议。服务器必须验证并广播结果。
  • 绝对不要硬编码服务器 IP — 始终支持发现(net_lan_discovery.gd),或通过 CLI/UI 传入 IP。
性能与带宽
  • 绝对不要每帧发送相同的数据 — 使用 net_adaptive_sync_throttle.gd,仅在状态发生显著变化时,或按固定频率间隔(例如 20Hz)发送更新。
  • 绝对不要将 JSON 用于高速同步 — 字符串序列化会大幅增加网络传输量。请使用位打包(net_packet_bit_packer.gd),将数据包控制在 100 字节以内。
  • 非必要时绝对不要向所有对等端广播 — 在大型世界中,请使用兴趣管理(net_visibility_grid_culling.gd)。身处森林中的玩家不需要知道身处城市中的玩家的位置。
安全
  • 绝对不要允许每秒无限次 RPC 调用 — 攻击者可以发送 1,000 个“Attack” RPC 淹没服务器,导致游戏崩溃。请使用 net_packet_rate_limiter.gd。
  • 绝对不要向最终用户暴露 PeerID — PeerID 是内部标识。始终通过数据库中的持久化 UserID(net_custom_id_mapper.gd)进行映射。
  • 绝对不要在启用 GUI 的情况下运行专用服务器 — 使用 --headless(net_headless_server_auto_start.gd)以节省资源并确保稳定性。

决策树(传输方式 / 权限归属 / 同步频率)

问题首选方案脚本
桌面端/主机 LAN 或专用 UDPENet必需 net_enet_expert_config.gd
浏览器 / NAT 不友好的对等端WebRTC(或 WebSocket 回退方案)官方文档 + 对等端封装;仍需使用安全 RPC 脚本
谁拥有游戏状态的最终决定权?服务器权威模式必需 server_authoritative_controller.gd
无 GUI 的专用主机--headless必需 net_headless_server_auto_start.gd / server_dedicated_host.gd
位置每秒同步 10–20 次,而非每帧同步自适应节流必需 net_adaptive_sync_throttle.gd

不要从记忆中加载 大厅/RPC 入门范例 — 请使用下方的黄金路径,并且只打开匹配的脚本。

黄金路径

  1. 主机 / 专用服务器 → server_dedicated_host.gd + net_headless_server_auto_start.gd;客户端 → client_network_setup.gd。
  2. 安全 RPC → secured_rpc_pattern.gd + net_packet_rate_limiter.gd + secure_variable_synchronizer.gd。
  3. 预测 / 校正 → client_prediction_synchronizer.gd + net_anti_desync_reconciler.gd;战斗/回滚 → net_rollback_helper.gd。
  4. 兴趣剔除 → 广播位置前使用 net_visibility_grid_culling.gd。

可用脚本

传输与主机
权限、RPC、同步
不同步 / 回滚 / 兴趣管理

专家提示

  • 位置/移动:使用 UnreliableOrdered + 节流——切勿每帧都可靠发送。
  • 客户端提出建议;服务端验证并广播结果。
  • 大型世界:先用可见性网格剔除,再增加同步 Hz。

深入了解(按需)

  • RPC 模式、大厅握手、傀儡插值 → rpc-lobby-and-sync.md
  • 差量压缩和网络模拟器概念见该参考文档(LLM 未知:不可靠与可靠传输的队头阻塞并非通用知识)。

参考

渐进式披露:仅在研究特定 API 时打开官方文档链接;在路由到相关领域时加载相关技能——不要预加载整个技能网格。

官方文档
  • 高级多人游戏 — RPC 模式、权限以及对等端生命周期,用于主机/加入大厅和由服务器验证的操作。
  • 网络 — 传输方式概览(ENet / WebSocket / WebRTC / HTTP),帮助根据平台和 NAT 限制选择合适的对等端。
  • MultiplayerAPI — multiplayer 单例:对等端 ID、连接信号以及 rpc / rpc_id 入口。
  • MultiplayerPeer — 各后端通用的传输模式(可靠 / 不可靠 / 无序)和连接状态。
  • ENetMultiplayerPeer — 用于局域网、专用服务器和大多数动作游戏的 UDP 主机/客户端对等端。
  • SceneMultiplayer — 默认的 MultiplayerAPI:根路径、身份验证回调以及场景树 RPC 路由。
  • MultiplayerSpawner — 生成/销毁复制,使晚加入的玩家也能共享相同的联网场景图。
  • MultiplayerSynchronizer — 属性复制、变更时增量更新和可见性过滤器,可替代临时的位置 RPC。
  • Node — set_multiplayer_authority / is_multiplayer_authority 所定义的所有权规则,用于区分输入与共享状态。
  • PacketPeerUDP — 通过原始 UDP 发送/接收数据包,在高级多人游戏对等端之外实现局域网发现广播。
  • WebRTC — 当 ENet UDP 无法单独穿透防火墙时,适用于浏览器的 P2P 方案。
  • 命令行教程 — 用于启动专用服务器和多实例测试的 --headless 及 CLI 标志。
相关技能
前置条件
  • godot-project-foundations — 项目布局、Autoload,以及主机/加入和专用服务器构建所依赖的导出/功能标志。
  • godot-gdscript-mastery — 安全 RPC 和位打包器所用的类型化 @rpc 注解、Callable 和 PackedByteArray 模式。
  • godot-input-handling — 将 InputMap 读取与模拟分开,使客户端发送意图,并由权限方决定结果。
补充
下游 / 使用方
主索引
  • godot-master — 技能库路由器和镜像模块入口;探索哪个领域技能负责跨领域网络问题时请打开此项。

评论

支持 Markdown