people-arrows配对/Hub 游戏

我们提供 API/设置来管理玩家如何被匹配到你游戏中的服务器,并允许你将玩家路由到新的服务器,以支持 Hub 游戏场景。

配对偏好

填充模式:

All Out 在全球范围内托管服务器,为玩家提供低延迟体验;不过,如果你的游戏才刚刚开始,你可能希望在延迟上做出妥协,以确保玩家能够在同一服务器中一起游玩。填充模式已记录在 Creator 门户主页上,并且可以随时更改。

实例优先级 + 要求高优先级模式

有一种特殊的配对模式,允许你避免使用代码将玩家发送到特定服务器。

游戏可以根据回合状态、玩家数量等,为每个实例设置“优先级”级别,使用 Server.set_matchmaking_priority(priority).

你也可以选择为你的游戏请求启用“要求高优先级”模式,这将会 中导入 将玩家路由到优先级设为 0 的实例,并会启动 新服务器 如果没有可用的。

如果你有一款基于回合的游戏,并且不希望新玩家加入已经在运行中的游戏,这会很有用。

circle-info

此功能仅按请求提供,因为如果你的实例从未/很少被设置为优先级 0,那么它会启动大量服务器!请 联系我们!

枢纽游戏

枢纽游戏是一种常见模式,允许玩家在一起游玩基于回合的游戏之前先会合并排队。示例如下:

  • 《Red Sun》的大厅,允许玩家排队一起游玩并在等待时购买升级

  • 《Bed Wars》的枢纽,允许你在不同游戏模式之间进行选择(如 classes/vs classic)

API 参考

Server :: struct {
    // 将玩家转移到另一款游戏(枢纽 -> 匹配,匹配 -> 枢纽,等等)。
    transfer_player_to_game :: proc(player: Player, game_id: string);

    // 设置此实例的匹配优先级(0 = 最高优先级)。
    set_matchmaking_priority :: proc(priority: int);

    // 将玩家从服务器踢出。
    kick_player :: proc(player: Player, reason: string = "Kicked.");

    // 自定义匹配的队列系统。这些 API 目前已弃用,但可能会恢复。优先使用 transfer_player_to_game API。 
    queue_add_player           :: proc(queue: string, player: Player);
    queue_remove_player        :: proc(queue: string, player: Player);
    queue_set_server_available :: proc(queue: string, available: bool);

    // 服务器标识。
    get_id :: proc() -> string;
    get_private_server_host_id :: proc() -> string, bool;
}
circle-exclamation

示例:将玩家发送到另一款游戏

circle-info

目前在将玩家转移到新游戏时,无法传递额外信息;也无法在启动时动态配置服务器。如果你希望有不同的模式(例如 1v1 与 2v2),你需要创建专门的游戏,并通过游戏父级系统将它们连接起来。

circle-info

我们建议启用 跨游戏产品/数据在使用传送/枢纽 API 时,以确保玩家购买内容和存档数据可以在两者之间轻松复用。

最后更新于