people-arrowsМатчмейкинг/игры-хабы

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

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

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

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

Приоритет экземпляра + режим требования высокого приоритета

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

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

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

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

circle-info

Эта функция доступна только по запросу, поскольку если вашим экземплярам никогда/редко не присваивается приоритет 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 в настоящее время устарели, но могут вернуться. Предпочитайте 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;
}
circle-exclamation

Пример: отправить игрока в другую игру

circle-info

В настоящее время нет способа передать дополнительную информацию при переводе игрока в новую игру, а также нет способа динамически настраивать серверы при запуске. Если вы хотите иметь разные режимы (например, 1v1 и 2v2), вам нужно будет создать отдельные игры и связать их с системой родительских игр.

circle-info

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

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