VK Play Разработчики

Как добавить в билд достижения (ачивки)?

Чтобы в игре корректно работали достижения, их нужно добавить в Кабинете и реализовать в коде. Для второй части требуется добавление вызовов Steamworks и подмена .dll (подробнее).

Шаг 1. Создайте достижения в кабинете разработчика

Перейдите в проект и найдите раздел управления достижениями. Добавьте достижения.

При создании вам потребуется заполнить несколько полей: уникальное имя (API Name), название и описание на русском (и других языках при необходимости), иконку и редкость. Именно API Name (или ID) будет использоваться в коде игры для выдачи награды.

Шаг 2. Проэмулируйте Steam

VK Play не требует переписывать игру под свой уникальный SDK. Платформа предоставляет специальные версии файлов steam_api.dll и steam_api64.dll, которые перенаправляют вызовы Steam на серверы VK Play.

Вам нужно скачать архив с этими библиотеками из документации VK Play. Важно выбрать версию, которая совпадает с версией Steamworks, используемой в вашей игре (проверьте свойства оригинального `.dll` файла). После скачивания замените оригинальные файлы в папке с билдом игры на те, что вы скачали у VK Play. Для отладки используйте версии из папки Debug, а для финального релиза — из Release.

Шаг 3. Вызывайте достижения в коде игры

Поскольку используется эмуляция Steam, в коде вы работаете с привычными функциями Steamworks. Основной метод для разблокировки — SetAchievement.

Логика обычно выглядит так:
1.  Сначала убедитесь, что статистика игрока загружена (вызовите RequestCurrentStats и дождитесь успешного ответа).
2.  Когда игрок выполняет условие (например, побеждает босса), вызовите SetAchievement("ИМЯ_ВАШЕГО_ДОСТИЖЕНИЯ"), где имя — это тот самый API Name из первого шага.
3.  После вызова SetAchievement при необходимости отправить изменения на сервер с помощью StoreStats.

Шаг 4. Проверьте результат

После выполнения условий в игре, зайдите в кабинет разработчика или воспользуйтесь API-запросом, чтобы проверить, «упало» ли достижение. VK Play предоставляет эндпоинт для проверки списка полученных ачивок конкретным пользователем (через GetAchievements или аналогичные методы). Если ачивка не отображается в профиле, проверьте логи (FUME.log при использовании Debug-библиотек), чтобы увидеть, дошел ли запрос до сервера и что он ответил.