Дельта-обновления
Сборка — это манифест файлов, каждый адресуется своим sha256. При обновлении лаунчер сверяет хеши и качает только изменившееся. Патч из двух файлов весит два файла, а не всю игру.
Магазин, лаунчер и SDK в одном месте. Покупайте и качайте игры, зовите друзей в отряд и заходите в матч вместе — а патчи прилетают по-файлово, за секунды.
Список тянется прямо из магазина платформы — то же, что видит лаунчер.
Сборка — это манифест файлов, каждый адресуется своим sha256. При обновлении лаунчер сверяет хеши и качает только изменившееся. Патч из двух файлов весит два файла, а не всю игру.
Статусы в реальном времени, приглашения в отряд до восьми человек. Лидер начинает матч — остальные попадают в ту же комнату автоматически.
Игра получает одноразовый токен запуска и меняет его на сессию. Личность игрока ваш сервер подтверждает одним запросом — подделать нельзя.
Прогресс переезжает между машинами сам: SDK пишет и читает слоты по одному вызову.
Каждый файл проверяется по хешу во время записи. Битая загрузка не попадёт в установленную игру, а «Восстановить» дозакачает только повреждённое.
Windows, Linux и macOS. Магазин, библиотека, очередь загрузок, друзья и отряды — и запуск игр одной кнопкой, без второго логина внутри игры.
Портал студии считает хеши в браузере и заливает только новые файлы.
Профиль команды, участники с ролями, общий баланс к выплате.
Цена, скидка, теги, платформы, обложка и скриншоты — как в магазине.
Выберите папку — файлы, уже лежащие в хранилище, не поедут второй раз.
После проверки игра появляется в магазине. Откат на прошлую сборку — одной кнопкой.
выручки остаётся студии по умолчанию — доля настраивается индивидуально
за публикацию и за каждое обновление: платите только процентом с продаж
вход тем же аккаунтом, что и в лаунчере
Авторизация, друзья, отряды и облачные сейвы — из коробки.
# автозагрузка NIGames появляется вместе с плагином
func _ready() -> void:
NIGames.session_ready.connect(_on_ready)
NIGames.party_launch.connect(_on_launch)
NIGames.initialize()
func _on_ready(identity: Dictionary) -> void:
$UI/Nick.text = identity.display_name
NIGames.invite_friend(friend_id) # позвать в отряд
func _on_launch(lobby: Dictionary) -> void:
join_room(lobby["room"], lobby["map"]) # лидер начал матч
using NIGames;
async void Start()
{
var session = await NIGamesSDK.InitializeAsync();
if (!session.Success) { Debug.LogWarning(session.Error); return; }
Debug.Log($"Игрок: {session.Identity.DisplayName}");
await NIGamesSDK.SaveCloudAsync(new { level = 3, coins = 120 });
}
void OnApplicationQuit() => NIGamesSDK.EndSession();
UNIGamesSubsystem* NI = GetGameInstance()->GetSubsystem<UNIGamesSubsystem>();
NI->OnSessionReady.AddDynamic(this, &AMyGameMode::HandleSession);
NI->StartSession();
// в Blueprint — те же узлы:
// Get NIGames Subsystem → Start Session → On Session Ready
POST /api/v1/sdk/verify и получает подтверждённую личность игрока
вместе с правом владения игрой.
Играйте с друзьями — или выпустите свою игру уже сегодня.