Чтобы в игре корректно работали достижения, их нужно добавить в Кабинете и реализовать в коде. Для второй части требуется добавление вызовов 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-библиотек), чтобы увидеть, дошел ли запрос до сервера и что он ответил.