For the complete documentation index, see llms.txt. This page is also available as Markdown.

配对/Hub 游戏

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

匹配偏好

填充模式:

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

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

有一种特殊的匹配模式,可让你通过代码避免将玩家发送到特定服务器。

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

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

如果你的游戏是按回合进行的,并且不希望新玩家加入已经在进行中的对局,这会很有用。

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

大厅游戏

大厅游戏是一种常见模式,可让玩家聚在一起并共同排队进入按回合进行的游戏。示例如下:

  • Red Sun 的一个大厅,让玩家排队一起游玩,并在等待时购买升级

  • Bed Wars 的大厅,可让你在不同游戏模式之间选择(例如职业模式/经典模式)

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;
}

transfer_player_to_game, set_matchmaking_priority,以及 kick_player 会在服务器上生效。请在正常的共享游戏流程中调用它们;对应的客户端调用不会产生任何效果。

这两个 ID 查询只有在服务器上才会返回有用的数据。不要根据它们的结果在共享的预测性游戏玩法中进行分支判断。

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

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

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

最后更新于