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

Подбор игроков/игры-хабы

Мы предоставляем API/настройки для управления тем, как мы подбираем игроков к серверам в вашей игре, и позволяем направлять игроков на новые серверы для поддержки сценариев игр-хабов.

Параметры подбора игроков

Режим заполнения:

All Out размещает серверы по всему миру, чтобы обеспечить игрокам низкую задержку, однако если ваша игра только начинает развиваться, возможно, вы захотите пожертвовать задержкой, чтобы игроки могли играть вместе на одном и том же сервере. Режимы заполнения описаны на главной странице портала Creator и могут быть изменены в любое время.

Приоритет экземпляра + режим «Требовать высокий приоритет»

Существует специальный режим подбора игроков, который позволяет избежать отправки игроков на определённые серверы с помощью кода.

Игры могут задавать для каждого экземпляра уровень «приоритета» на основе состояния раунда, количества игроков и т. д. с помощью Server.set_matchmaking_priority(priority).

При желании вы можете запросить включение режима «Требовать высокий приоритет» для вашей игры, который будет только направлять игроков на экземпляры с приоритетом, установленным в ноль, и будет поднимать новые серверы если их нет.

Это может быть полезно, если у вас игра с раундами, и вы не хотите, чтобы новые игроки присоединялись к уже идущим играм.

Эта функция доступна только по запросу, поскольку если ваши экземпляры никогда или редко получают приоритет 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 в настоящее время устарели, но могут вернуться. Предпочитайте API transfer_player_to_game.
    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 vs 2v2), вам нужно будет создать отдельные игры и связать их с помощью системы родительских игр.

Мы рекомендуем включить Продукты/данные между играми при использовании API телепортации/хаба, чтобы покупки игроков и сохранённые данные можно было легко использовать повторно между ними.

Последнее обновление