Перейти к содержимому

Документация · 06

Расширенный статус

Несколько ключей о том, что делает игра: их видят друзья в приложении и в оверлее; плюс строка подключения, по которой друг может присоединиться.

3 минуты чтенияОбновлено 4 окт. 2026

Разделы документации

Расширенный статус и приглашения уже работают целиком: друзья видят строку в приложении, на сайте и в оверлее, а кнопка «Присоединиться» запускает игру. Локализованные шаблоны статуса задаются для приложения в портале разработчика, в разделе SDK.

Что видят друзья

Ваша игра задаёт несколько пар «ключ — значение». Gameway показывает под именем игрока строку, собранную из них («Соревновательный · Kasbah · Раунд 14»), вторую строку с группой («2/5 в группе») или временем игры и, если игрок разрешил, кнопку Присоединиться. Обновления ограничены примерно одним в секунду на игрока, поэтому задавайте ключ, когда он изменился, а не каждый кадр.

Ключи и ограничения

  • Не больше 20 ключей, ключ до 64 байт, значение до 256 байт, всего 4 КБ.
  • Значение null удаляет ключ. ClearRichPresence() удаляет все.
  • Всё — обычный текст. Что бы ни увидел друг, оно показывается как текст, а не как разметка.

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

КлючЗначение
statusЧто делает игрок, короткий ключ, который определяете вы: menus, in_match, warmup.
party, party_maxСколько человек в группе игрока и сколько помещается.
match_statemenus, in_match или between_rounds. Приложение использует его, чтобы не загружать систему во время матча.
map, mode, scoreВсё, что делает строку полезнее; показывается через ваш шаблон статуса.

Локализованные шаблоны статуса (ваши формулировки для каждого status на языке зрителя) задаются для приложения в портале разработчика, в разделе SDK, с предпросмотром. Без шаблона друзья видят исходные значения.

Задайте из игры

C#
using Gameway.Sdk;
using GW = Gameway.Sdk.Gameway;

// when the player enters a match
GW.SetRichPresence("status", "in_match");
GW.SetRichPresence("map", "Kasbah");
GW.SetRichPresence("party", "2");
GW.SetRichPresence("party_max", "5");
GW.SetRichPresence("match_state", "in_match");
// friends may join; the connect string is shown only to a friend who asks or is invited
GW.SetJoinable(true, "203.0.113.5:27777;sid=7;pw=hunter2");

// when the player is back in the menus
GW.SetRichPresence("status", "menus");
GW.SetRichPresence("match_state", "menus");
GW.SetJoinable(false, null);

// on quit: leave no stale status behind
GW.ClearRichPresence();

SetJoinable(true, connect) сообщает друзьям, что к вам можно присоединиться. connect — до 1 КБ, и он никогда не входит в видимый статус: его получает только друг, который просит присоединиться или которого игрок пригласил. Рекомендуемый вид — host:port;sid=<номер сервера>;pw=<пароль>, а ParseConnect разбирает его за вас.

Когда друг присоединяется

Друг присоединяется из статуса игрока (кнопка Присоединиться или Попроситься, если игрок хочет подтверждать каждого) либо по приглашению игрока. Остальное делает приложение: проверяет, что у друга есть игра, нужная версия и ветка, при необходимости устанавливает или обновляет и запускает вашу игру со строкой подключения. Ваша игра получает её и подключается.

C#
// the game was started to join a friend
string connect;
if (GW.GetLaunchJoinString(out connect) == GwResult.Ok) TryJoin(connect);

// the game is already running: a friend accepted your invite, or the player chose "join" in the app
GW.JoinRequested += e => TryJoin(e.Text);   // e.Text is untrusted text from another player

void TryJoin(string connect)
{
    GwConnectInfo info;
    if (GW.ParseConnect(connect, out info) != GwResult.Ok) return;   // strict parser: anything odd is refused
    // connect to the host and port in info; ask for a ticket for the server id it carries
}
  • Если друг уже в вашей игре, вы получите JoinRequested, пока она работает. Спросите, прежде чем выходить из матча: этот экран ваш.
  • Запросите пропуск запуска для сервера из строки подключения, затем подключайтесь. См. Онлайн-пропуска.
  • Приглашения живут около десяти минут; неудавшееся присоединение показывает другу причину (сервер полон, сессия завершена, приглашение истекло).

Никогда не кладите секрет в ключ. Пароль — только в строку подключения: её видит присоединяющийся друг и больше никто.

Gameway · 2026-10-04