跳转至

GFNetworkLobbyDescriptor

API Reference / Network / 类索引

  • 路径:addons/gf/extensions/network/session/gf_network_lobby_descriptor.gd
  • 模块:Network
  • 继承:Resource
  • API:public
  • 类别:值对象 (value_object)
  • 首次版本:8.0.0

平台中立的 lobby 快照。 描述外部平台、局域网或自建服务中的房间状态。它只承载可复用的联机结构, 不把玩家准备、队伍、角色或具体玩法写入框架层。

成员概览

类型 名称 签名
枚举 Visibility enum Visibility
属性 lobby_id var lobby_id: String = ""
属性 backend_id var backend_id: StringName = &""
属性 display_name var display_name: String = ""
属性 owner_peer_id var owner_peer_id: int = -1
属性 owner_platform_user_id var owner_platform_user_id: String = ""
属性 max_members var max_members: int = 0
属性 joinable var joinable: bool = true
属性 visibility var visibility: Visibility = Visibility.DEFAULT
属性 members var members: Array[GFNetworkLobbyMember] = []
属性 tags var tags: PackedStringArray = PackedStringArray()
属性 metadata var metadata: Dictionary = {}
方法 configure func configure(p_lobby_id: String, options: Dictionary = {}) -> GFNetworkLobbyDescriptor:
方法 get_display_name func get_display_name() -> String:
方法 get_member_count func get_member_count() -> int:
方法 is_full func is_full() -> bool:
方法 get_member func get_member(peer_id: int) -> GFNetworkLobbyMember:
方法 set_member func set_member(member: GFNetworkLobbyMember) -> void:
方法 remove_member func remove_member(peer_id: int) -> bool:
方法 to_dict func to_dict() -> Dictionary:
方法 apply_dict func apply_dict(data: Dictionary) -> void:
方法 duplicate_lobby func duplicate_lobby() -> GFNetworkLobbyDescriptor:
方法 get_debug_snapshot func get_debug_snapshot() -> Dictionary:
方法 from_dict static func from_dict(data: Dictionary) -> GFNetworkLobbyDescriptor:

枚举

Visibility

  • API:public
  • 首次版本:8.0.0
enum Visibility {
    ## 由 backend 或平台默认策略决定。
    DEFAULT,
    ## 可公开查询。
    PUBLIC,
    ## 仅好友、群组或平台关系可见。
    RELATIONSHIP,
    ## 只能通过邀请或精确 ID 加入。
    PRIVATE,
    ## 不可查询且不可加入。
    HIDDEN,
}

Lobby 可见性。

属性

lobby_id

  • API:public
  • 首次版本:8.0.0
var lobby_id: String = ""

Lobby 外部稳定 ID。动态平台 ID 使用 String 保存。

backend_id

  • API:public
  • 首次版本:8.0.0
var backend_id: StringName = &""

提供该 lobby 的 backend 标识。

display_name

  • API:public
  • 首次版本:8.0.0
var display_name: String = ""

编辑器或 UI 可显示名称。

owner_peer_id

  • API:public
  • 首次版本:8.0.0
var owner_peer_id: int = -1

owner 的传输 peer 标识。未知时为 -1。

owner_platform_user_id

  • API:public
  • 首次版本:8.0.0
var owner_platform_user_id: String = ""

owner 的平台用户 ID。用于尚未建立传输连接但平台已返回 owner 的场景。

max_members

  • API:public
  • 首次版本:8.0.0
var max_members: int = 0

最大成员数。小于等于 0 表示 backend 未声明。

joinable

  • API:public
  • 首次版本:8.0.0
var joinable: bool = true

当前是否允许加入。

visibility

  • API:public
  • 首次版本:8.0.0
var visibility: Visibility = Visibility.DEFAULT

Lobby 可见性。

members

  • API:public
  • 首次版本:8.0.0
var members: Array[GFNetworkLobbyMember] = []

成员列表。

结构:

  • members: Array[GFNetworkLobbyMember] lobby member snapshots.

tags

  • API:public
  • 首次版本:8.0.0
var tags: PackedStringArray = PackedStringArray()

Lobby 标签,用于轻量查询或展示。

metadata

  • API:public
  • 首次版本:8.0.0
var metadata: Dictionary = {}

调用方自定义 lobby metadata。

结构:

  • metadata: Dictionary caller-defined lobby metadata.

方法

configure

  • API:public
  • 首次版本:8.0.0
func configure(p_lobby_id: String, options: Dictionary = {}) -> GFNetworkLobbyDescriptor:

配置 lobby 快照。

参数:

名称 说明
p_lobby_id Lobby 外部稳定 ID。
options 可选字段,支持 backend_id、display_name、owner_peer_id、owner_platform_user_id、max_members、joinable、visibility、members、tags 和 metadata。

返回:当前 lobby。

结构:

  • options: Dictionary lobby fields.

get_display_name

  • API:public
  • 首次版本:8.0.0
func get_display_name() -> String:

获取展示名称。

返回:展示名称。

get_member_count

  • API:public
  • 首次版本:8.0.0
func get_member_count() -> int:

获取成员数量。

返回:成员数量。

is_full

  • API:public
  • 首次版本:8.0.0
func is_full() -> bool:

检查 lobby 是否已满。

返回:已满返回 true;未声明 max_members 时返回 false。

get_member

  • API:public
  • 首次版本:8.0.0
func get_member(peer_id: int) -> GFNetworkLobbyMember:

获取成员。

参数:

名称 说明
peer_id 传输 peer 标识。

返回:成员;不存在时返回 null。

set_member

  • API:public
  • 首次版本:8.0.0
func set_member(member: GFNetworkLobbyMember) -> void:

设置或替换成员。

参数:

名称 说明
member 成员。

remove_member

  • API:public
  • 首次版本:8.0.0
func remove_member(peer_id: int) -> bool:

移除成员。

参数:

名称 说明
peer_id 传输 peer 标识。

返回:找到并移除时返回 true。

to_dict

  • API:public
  • 首次版本:8.0.0
func to_dict() -> Dictionary:

转换为字典。

返回:Lobby 字典。

结构:

  • return: Dictionary with lobby_id, backend_id, display_name, owner_peer_id, owner_platform_user_id, max_members, joinable, visibility, members, tags, and metadata.

apply_dict

  • API:public
  • 首次版本:8.0.0
func apply_dict(data: Dictionary) -> void:

从字典应用 lobby 字段。

参数:

名称 说明
data Lobby 字典。

结构:

  • data: Dictionary with lobby_id, backend_id, display_name, owner_peer_id, owner_platform_user_id, max_members, joinable, visibility, members, tags, and metadata.

duplicate_lobby

  • API:public
  • 首次版本:8.0.0
func duplicate_lobby() -> GFNetworkLobbyDescriptor:

创建 lobby 深拷贝。

返回:新 lobby。

get_debug_snapshot

  • API:public
  • 首次版本:8.0.0
func get_debug_snapshot() -> Dictionary:

获取调试快照。

返回:调试快照。

结构:

  • return: Dictionary JSON-safe lobby debug snapshot.

from_dict

  • API:public
  • 首次版本:8.0.0
static func from_dict(data: Dictionary) -> GFNetworkLobbyDescriptor:

从字典创建 lobby。

参数:

名称 说明
data Lobby 字典。

返回:新 lobby。

结构:

  • data: Dictionary with lobby_id, backend_id, display_name, owner_peer_id, owner_platform_user_id, max_members, joinable, visibility, members, tags, and metadata.