跳转到内容

多人游戏中继服务

Godot Relayer 是一个专为 Godot 引擎设计的多人游戏中继服务。它的作用类似于 Unity 生态中的 Photon —— 开发者无需自建和维护后端服务器,只需在项目中安装插件,传入 Server URL 和 API Key,即可快速实现多人联机功能。

与其他方案不同的是,Godot Relayer 完全基于 Godot 原生多人网络框架。它只替换底层传输层(ENet → WebSocket),你的 RPC 调用、MultiplayerSynchronizer、MultiplayerSpawner 等代码无需任何改动,迁移成本几乎为零。

玩家 A(Host)←→ 中继服务器 ←→ 玩家 B(Client)

中继服务器只负责透明转发消息,不运行任何游戏逻辑。Host 创建房间后获得一个 4 位加入码,其他玩家凭码加入。连接建立后,双方直接使用 Godot 标准多人 API 通信,中继服务器不感知游戏内容。

配置项
Server URLwss://relayer.yiapp.com.cn/ws
API Keygdr-live-a8f3k2m9xq4tz6ew

下载插件包,解压后将 addons/relay_multiplayer/ 目录复制到你的 Godot 项目中,然后在 项目设置 -> 插件 中启用 Relay Multiplayer

var SERVER_URL = "wss://relayer.yiapp.com.cn/ws"
var API_KEY = "gdr-live-a8f3k2m9xq4tz6ew"
func host_game():
var server = RelayServer.new(SERVER_URL, API_KEY)
var peer = RelayMultiplayerPeer.new()
peer.lobby_created.connect(_on_lobby_created)
peer.create_lobby(server, { "max_players": 4 })
multiplayer.multiplayer_peer = peer
func _on_lobby_created(join_code: String):
print("房间已创建,加入码:", join_code)
# 将 join_code 展示给玩家,供其他人加入
func join_game(join_code: String):
var server = RelayServer.new(SERVER_URL, API_KEY)
var peer = RelayMultiplayerPeer.new()
peer.lobby_joined.connect(_on_lobby_joined)
peer.join_lobby(server, join_code)
multiplayer.multiplayer_peer = peer
func _on_lobby_joined():
print("已加入房间")

连接成功后,直接使用你熟悉的 Godot API 即可:

# RPC 调用
@rpc("any_peer", "call_local")
func sync_position(pos: Vector2):
position = pos
# MultiplayerSynchronizer、MultiplayerSpawner 同样正常工作
RelayServer.new(url: String, api_key: String)
参数说明
url中继服务器 WebSocket 地址
api_keyAPI 密钥

方法:

方法说明
create_lobby(server, options)创建房间,options 支持 max_playersname
join_lobby(server, join_code)通过加入码加入房间
get_join_code()获取当前房间的加入码(Host 调用)
is_host()判断当前节点是否为 Host

信号:

信号说明
lobby_created(join_code: String)房间创建成功,返回加入码
lobby_joined成功加入房间
peer_connected(peer_id: int)有新玩家加入
peer_disconnected(peer_id: int)有玩家离开
kicked被 Host 踢出房间

错误码:

范围说明
1xxx连接错误(如 CONNECTION_FAILED
2xxx房间错误(如 ROOM_NOT_FOUNDROOM_FULL
3xxx运行时错误(如 HOST_DISCONNECTED
  • 中继服务器仅转发消息,不存储任何游戏数据,服务器断开后房间自动销毁
  • 目前服务处于公测阶段,API Key 免费使用,后续可能引入配额机制
  • 支持所有 Godot 导出平台:Web、桌面端(Windows / macOS / Linux)、移动端(iOS / Android)
  • 需要 Godot 4.x 版本,不支持 Godot 3