Документация · 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_state | menus, in_match или between_rounds. Приложение использует его, чтобы не загружать систему во время матча. |
map, mode, score | Всё, что делает строку полезнее; показывается через ваш шаблон статуса. |
Локализованные шаблоны статуса (ваши формулировки для каждого status на языке зрителя) задаются для приложения в портале разработчика, в разделе SDK, с предпросмотром. Без шаблона друзья видят исходные значения.
Задайте из игры
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 разбирает его за вас.
Когда друг присоединяется
Друг присоединяется из статуса игрока (кнопка Присоединиться или Попроситься, если игрок хочет подтверждать каждого) либо по приглашению игрока. Остальное делает приложение: проверяет, что у друга есть игра, нужная версия и ветка, при необходимости устанавливает или обновляет и запускает вашу игру со строкой подключения. Ваша игра получает её и подключается.
// 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