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

Интеграция за 3 минуты

Консоль

🚀 Быстрый старт

Интеграция universalSDK за 3 минуты.

1. Создайте скрипт в проекте: Project → Scripts → правый клик → Add script. Назовите usdk.js и вставьте:

// usdk.js — загружает universalSDK и добавляет usdkInit()
const USDK_URL = "https://universalsdk.ru/sdk/v1/usdk.js";
let rt = null;
runOnStartup(r => { rt = r; });

globalThis.usdkInit = async (appID, apiKey) => {
    if (!globalThis.usdk) await new Promise((ok, no) => {
        const s = document.createElement("script");
        s.src = USDK_URL; s.onload = ok; s.onerror = no;
        document.head.appendChild(s);
    });
    return usdk.boot(appID, apiKey, rt);
};

2. Инициализируйте SDK: Event Sheet → правый клик → Add action → Add JavaScript:

usdkInit("APP_ID", "API_KEY");

APP_ID и API_KEY → консоль разработчика → зарегистрируйте игру. Готово! Все методы ниже доступны через usdk.* в любом Add JavaScript.

⚠️ Глобальные переменные: везде где используется runtime.globalVars.xxx — создайте одноимённую переменную в Project → Global variables (Number или String).

📢 Реклама

Rewarded, Interstitial и Banner — единый API для всех платформ.

🎁 Rewarded (за вознаграждение)

usdk.showRewarded("100 coins");

Колбэки: On_Rewarded_Show, On_Rewarded_Success, On_Rewarded_Close, On_Rewarded_Error. Проверьте tag = "100 coins" → выдайте награду в On_Rewarded_Success.

⏸ Interstitial

usdk.showInterstitial("level_end");

Колбэки: On_Interstitial_Show, On_Interstitial_Close. В On_Interstitial_Close — продолжите игру.

📌 Banner

usdk.showBanner();
usdk.hideBanner();

Колбэки: On_Banner_Show, On_Banner_Hide.

🏆 Таблица лидеров

Submit score и показ лидерборда.

usdk.leaderboard.submitScore(runtime.globalVars.coins);
usdk.leaderboard.show(10);

Колбэки: On_Score_Submitted и On_Leaderboard_Shown. ⚠️ Переменную coins создайте в Project → Global variables.

💾 Сохранения

Ключ-значение и Dictionary-сохранения.

🔑 Ключ-значение

usdk.save("coins", runtime.globalVars.coins);
usdk.load("coins").then(v => { runtime.globalVars.coins = v });

Колбэк: On_Save_Done / On_Load_Done. ⚠️ coins — глобальная переменная (Project → Global variables).

📖 Dictionary

saveDict("yourDictionary");
loadDict("yourDictionary");

Сохраняет/загружает весь C3 Dictionary с указанным именем через On_Save_Done / On_Load_Done.

👤 Игрок

Авторизация и данные игрока.

usdk.authorizePlayer().then(() => {
    runtime.globalVars.playerName = usdk.adapter.playerName || "";
});

// или просто получить имя
usdk.getPlayerName().then(n => {
    runtime.globalVars.playerName = n || "?";
});

// язык платформы
usdk.getLanguage().then(v => {
    runtime.globalVars.language = v;
});

Колбэки: On_Auth_Success / On_Auth_Fail. ⚠️ Переменные playerName, language нужно создать в Project → Global variables.

🔗 Социальные функции

Share, Invite, Join Community, Rate.

usdk.share({ text: "Score: " + runtime.globalVars.coins });
usdk.inviteFriends();
usdk.joinCommunity();
usdk.rateGame();
usdk.addToFavorites();
usdk.clipboardWrite("universalSDK " + location.href);

Колбэки: On_Share_Done, On_Invite_Done, On_Join_Done/On_Join_Fail, On_Rate_Done, On_AddedToFav.

🎮 Геймплей

Сигналы начала/конца игры и проверка блокировщика рекламы.

usdk.gameplayStart();
usdk.gameplayStop();
usdk.checkAdBlock();
usdk.happyTime();

gameplayStart/Stop — сигналы для платформ (пауза/продолжение). Колбэки: On_AdBlock_Detected, On_HappyTime.

🛠 Утилиты

usdk.getLanguage().then(v => {  // "ru" | "en" | "tr"…
    runtime.globalVars.language = v;
});
usdk.clipboardWrite("text");  // копировать в буфер
usdk.checkAdBlock();          // проверка AdBlock

📋 API Reference

Полный список методов universalSDK.

МетодПараметрыВозвращает
usdkInit(appID, apiKey)appID: string, apiKey: stringPromise<void>
usdk.boot(appID, apiKey, runtime)appID: string, apiKey: string, runtime?: objectPromise<void>
usdk.showRewarded(tag, onSuccess?, onClose?, onError?)tag: string, callbacks: functionsPromise<void>
usdk.showInterstitial(tag, onClose?)tag: string, onClose: functionPromise<void>
usdk.showBanner()Promise<void>
usdk.hideBanner()Promise<void>
usdk.leaderboard.submitScore(score)score: numberPromise<object>
usdk.leaderboard.show(limit?)limit: number (default 10)void
usdk.save(key, value)key: string, value: anyPromise<void>
usdk.load(key)key: stringPromise<any>
saveDict(name)name: string (C3 Dictionary)Promise<void>
loadDict(name)name: string (C3 Dictionary)Promise<void>
usdk.authorizePlayer()Promise<void>
usdk.getPlayerName()Promise<string>
usdk.getLanguage()string
usdk.share(data)data: {text?: string, url?: string}Promise<void>
usdk.inviteFriends()Promise<void>
usdk.joinCommunity()Promise<void>
usdk.rateGame()Promise<void>
usdk.addToFavorites()Promise<void>
usdk.clipboardWrite(text)text: stringPromise<void>
usdk.gameplayStart()Promise<void>
usdk.gameplayStop()Promise<void>
usdk.checkAdBlock()Promise<boolean>
usdk.happyTime()Promise<void>