Запуск с локального сервера
Чтобы упростить разработку и тестирование игры, вы можете запустить ее с локального сервера. Тестирование доступно в prod- и dev-окружениях.
После запуска игры на локальном сервере вы можете использовать из нее все функции SDK.
Prod-окружение
Внимание
Требуются регистрация на платформе Яндекс Игры и черновик игры.
Подходит на этапе финальной проверки игры перед отправкой на модерацию. В этом режиме игра взаимодействует с реальной платформой Яндекс Игры.
Особенности:
- Игра открывается по реальному адресу на yandex.ru/games.
- Чтобы отправлять запросы на внешние хосты, их нужно добавить в правила для CSP.
- Показывается настоящая реклама.
- Игрок авторизуется через Яндекс Паспорт.
- Данные игрока и лидербордов сохраняются на сервере.
- Каталог товаров загружается с сервера, покупки обрабатываются на сервере.
- Для отладки можно использовать debug-панель через параметр адресной строки
&debug-mode=16
.
Запуск локальной версии игры в prod-окружении можно настроить:
Самостоятельная настройка локального сервера
- Настройте сервер
localhost
. - Откройте игру в режиме черновика.
- Добавьте в адрес параметр
?game_url=https://localhost
.
Примечание
Из соображений безопасности в параметре game_url
поддерживается только домен localhost
.
Настройка локального сервера с помощью npm-пакета
-
Установите
npm
, следуя инструкциям на сайте Node.JS. -
С помощью
npm
установите пакет @yandex-games/sdk-dev-proxy:npm install -g @yandex-games/sdk-dev-proxy
-
Запустите игру. Вы можете:
Проксировать до локального сервераУказать папку с ресурсами игрыnpx @yandex-games/sdk-dev-proxy -h <Адрес локального сервера>
npx @yandex-games/sdk-dev-proxy -p <Путь до папки с игрой>
Пакет проксирует запросы до ресурсов SDK на том же сервере, на котором будет расположена ваша игра.
Если вы укажете параметр --app-id
, то при запуске откроется ваша игра на yandex.ru/games:
npx @yandex-games/sdk-dev-proxy -p <Путь до папки с игрой> --app-id=<ID игры>
Если не указать --app-id
, то в консоли появятся шаблонная ссылка на игру на сервисе и ссылка на локальный сервер.
Параметры для запуска
Параметр |
Описание |
|
Справка. |
|
Хост, на котором расположен локальный сервер игры (например, используется для |
|
Путь до папки, в которой расположены ресурсы игры. |
|
Порт, на котором откроется сервер (по умолчанию 8080). |
|
ID черновика игры. |
|
Добавляет метатег с |
|
Включение логирования запросов в консоль (по умолчанию включено). |
|
Меняет домен |
|
Если |
Dev-окружение
Примечание
Регистрация на платформе Яндекс Игры и черновик игры не требуются.
Подходит на этапе активной разработки и отладки игровой логики. В этом режиме у игры нет реальной связи с платформой Яндекс Игры, а все вызовы SDK подменены моками, что дает возможность быстро перезагружать страницу и видеть обновления.
Особенности:
- Игра открывается напрямую в
https://localhost
. - Нет ограничений по CSP, можно отправлять запросы на любые внешние хосты.
- Вместо рекламы показываются заглушки, при этом все callback-функции отрабатывают аналогично prod-окружению.
- Авторизация игрока работает через мок браузерного диалога.
- Данные игрока и лидербордов сохраняются в
localStorage
. - Каталог товаров загружается из локального файла, покупки игрока сохраняются в
localStorage
. - Для отладки можно задавать параметры через адресную строку браузера.
- В консоли браузера автоматически логируются все вызовы SDK с разбивкой по модулям.
Запуск в dev-окружении также доступен через npm-пакет @yandex-games/sdk-dev-proxy. Инструкции по настройке аналогичны prod-окружению, только при запуске нужно указать параметр --dev-mode=true
.
Вы можете:
npx @yandex-games/sdk-dev-proxy -h <Адрес локального сервера> --dev-mode=true
npx @yandex-games/sdk-dev-proxy -p <Путь до папки с игрой> --dev-mode=true
Доступные параметры для адресной строки браузера
export interface SDKMocks {
/** Разрешено ли добавить ярлык на рабочий стол? */
canShowPrompt?: boolean;
/** Авторизован ли игрок? */
isAuthorized?: boolean;
/** Если у игры заблокирована ориентация. */
lockedOrientation?: ELockedOrientation;
}
/** Заблокированная ориентация игры на мобильном экране. */
export enum ELockedOrientation {
/** Игра поддержана только в landscape. */
LANDSCAPE = 'landscape',
/** Игра поддержана в обеих ориентациях. */
NONE = 'none',
/** Игра поддержана только в portrait. */
PORTRAIT = 'portrait',
}
Пример
localhost:8080?mocks={"canShowPrompt":true,"isAuthorized":true,"lockedOrientation":"landscape"}
Локальное задание каталога товаров
Для эмуляции каталога товаров создайте в корне проекта файл purchases-catalog.json
и добавьте в него список покупок — такой же, как вы уже внесли или планируете внести в Консоли разработчика. SDK в dev-режиме будет загружать список покупок из этого файла.
Пример
[
{
"description": "Well styled modern avatar image",
"id": "avatar",
"imageURI": "{path-to-image}",
"price": "100 RUB",
"priceCurrencyCode": "RUB",
"priceValue": "100",
"title": "Premium avatar",
"getPriceCurrencyImage": "return ''"
}
]
В момент вызова покупки будет показан мок диалога с опциями успешной покупки и отмены, чтобы вы могли проверить оба сценария.
Альбомная ориентация.
Портретная ориентация.
Искусственные объекты или функции, имитирующие реальные. Используются для тестирования кода без зависимости от внешних ресурсов или компонентов.
В ''
можно подставить путь до изображения.