网络多人节点
2026/4/14大约 6 分钟
最后同步日期:2026-04-15 | Godot 官方原文 — Networking
网络多人节点
多人游戏的核心问题是:如何让多台电脑上的游戏保持同步? 你在电脑 A 上开了一枪,电脑 B 上也要看到这颗子弹——这就是"网络同步"要做的事。
Godot 提供了一套高级多人网络 API,核心思路是:
- 一台电脑当服务器(权威端),负责决定"真相"
- 其他电脑当客户端,听从服务器的指令
- 用两个特殊节点来自动同步:
MultiplayerSpawner(同步生成)和MultiplayerSynchronizer(同步属性)
本章节点继承关系
多人游戏基础概念
在正式介绍节点之前,先理解几个核心概念:
服务器-客户端模型
| 角色 | 说明 |
|---|---|
| Server(服务器) | 掌控全局的"裁判",所有关键决定由服务器做出 |
| Host(主机) | 既是服务器也是客户端(自己也能玩) |
| Client(客户端) | 连接到服务器的普通玩家 |
权威端(Authority)
每个节点都有一个"网络权威"——由谁说了算。默认情况下,服务器的 SceneTree 是权威端。可以用 set_multiplayer_authority() 指定某个节点的权威端是哪个玩家。
RPC(远程过程调用)
RPC 让你可以在一台电脑上调用一个函数,这个函数会在另一台电脑上执行。就像打电话——你在这头说"开火",那边就真的开火了。
节点总览
网络同步
| 节点 | 说明 | 使用频率 |
|---|---|---|
| MultiplayerSpawner | 网络同步生成/删除节点——服务器创建,所有客户端自动跟着冒 | ★★ |
| MultiplayerSynchronizer | 自动同步节点属性(位置、旋转、自定义变量等) | ★★ |
网络通信
| 节点 | 说明 | 使用频率 |
|---|---|---|
| HTTPRequest | 发送 HTTP 请求,让游戏能和 Web 服务器通信 | ★★ |
节点选择指南
| 你想做什么 | 用什么 |
|---|---|
| 同步生成/删除节点 | MultiplayerSpawner |
| 同步节点属性(位置、血量等) | MultiplayerSynchronizer |
| 调用远程函数 | RPC(@rpc 装饰器) |
| 连接服务器/客户端 | ENetMultiplayerPeer |
| 和 Web 服务器通信(排行榜、云存档) | HTTPRequest |
多人游戏搭建流程
1. 创建网络管理器 → 配置 ENetMultiplayerPeer
2. 主机调用 create_server(),客户端调用 create_client()
3. 在角色场景中添加 MultiplayerSynchronizer → 配置要同步的属性
4. 在角色容器中添加 MultiplayerSpawner → 指定 spawn_path
5. 使用 RPC 实现自定义通信(聊天、技能同步等)
6. 使用 set_multiplayer_authority() 分配权威端节点选择指南
不知道该用哪个网络节点?跟着下面的流程图走一遍就知道了:
常见场景搭配
多人联机游戏不只是网络节点的事,下面按具体场景逐一展示典型的节点搭配结构。
在线对战 / 格斗
两个玩家实时对战,双方位置和动作需要精确同步。核心是 MultiplayerSynchronizer 同步双方状态 + CharacterBody 做移动碰撞。
多人合作 PVE
多个玩家合作打怪物,服务器生成怪物,所有客户端同步。核心是 MultiplayerSpawner 同步生成怪物 + MultiplayerSynchronizer 同步状态。
排行榜 / 云存档
和 Web 服务器通信获取排行榜或存档数据。核心是 HTTPRequest 发送请求 + UI 控件展示数据。
实时聊天系统
多人在线聊天,消息通过 RPC 在所有客户端之间传递。核心是 @rpc 装饰器传递消息 + UI 控件做聊天界面。
