Про добавление достижений в VK Play для проекта на UE4 / UE5 блюпринтами

Про добавление достижений в VK Play для проекта на UE4 / UE5 блюпринтами

К сожалению абсолютное большинство любителей игр, да и разработчиков склонны придерживаться мысли, что Стим наше всё и пуп Земли. В виду такой популярности на сетевых просторах полно мануалов на тему как привинтить игровые достижения к проекту в Стим. А когда сталкиваешься с более «экзотичной» темой, начинаются нюансы.

И первый же нюанс, это вопрос, а как это сделать, если мануалов в сети нет? Такие вот мы нынче разбалованные. Требуется разжевать и в рот положить. Это не упрёк, лень движет прогрессом. И ей это вполне удаётся.

Финальный результат: ачивки работают
Финальный результат: ачивки работают

Кто-то возразит, что это же всё легко, у них на ВК Плей эта канитель скопирована с, мать его, Стим... Тогда вот вам ещё один нюанс. А что если нет опыта работы с этим самым «наше всё»? Может ведь такое быть? И ещё нюанс. Касается языка C++. Последний раз я участвовал в разработке крупного проекта на Си в далёком 2004-м и уже мало чего помню, да и изменилось оно всё. Игру же я сделал на чистых блюпринтах. Мне можно, я в геймдеве не профи. Хобби.

И так. Этот материал я пишу, чтобы заполнить информационный вакуум для тех, кто:

  • Имеет собственную игру и хочет выложить её в наш отечественный VK Play
  • И не просто выложить, а привинтить ачивки
  • Игра создана на Эпиковском движке. Причём, на блюпринтах
  • Слазить с блюпринтов назад в Си++ ну пц какая ломка и просто лень)

Начинаем с того, что регистрируемся в сервисе developers.vkplay.ru и создаём заявку на доступ в ЛК разработчика. Лично со мной на этом этапе произошло приключение. Я старательно заполнил все данные. Но в поле с описанием игры вписал всего 1 предложение. После чего кликнул кнопку отправки. А уже после этого действия до меня вдруг дошло. У них ведь там чёрным по белому сказано, что описывать надо подробно. Блинский! Ну, думаю, завернут мою заявку. А откатить и внести правки уже нет возможности. Дело было в субботу. И выходные прошли в ожидании сурового отклонения заявки. Но случилось чудо и в начале трудовых будней мне прилетела весть с положительным решением проблемы. И теперь я не знаю, что думать. Это действительно было легко? Или на решение модераторов повлияла ссылка на мой сайт? Там при регистрации был пункт такой, про сайт. Предполагаю, что это именно его посмотрели и приняли решение на добро. В любом случае советую не повторять мой опыт, а заполнять данные как того просят.

Далее нужно было заполнить инфу о игре. Прикрепить картинки/мультики и т.д. Тут сложности вообще никакой, т.к. есть документация. Кривоватая, с неточностями, но есть. Так что на этом этапе подробности излишни.

Потом надо закачать билд. Без него никак. Нужен и всё тут. Хоть какой нить мало-мальски рабочий. И далее 2 этапа модерации. Техническая и маркетинговая. И каждая от 3 до 5 рабочих дней. На самом деле быстрее. Дня 2-3. Но на маркетинговой я умудрился накосячить по невнимательности. Мне выслали рекомендацию убрать картинку с неприличиями. Я это требование старательно выполнил. Но. Только в русской локализации. Про английскую забыл. Не удобно это устроено. Для каждой локализации заливать отдельные картинки. Даже если они одинаковые. Поэтому кю и ещё раз кю. Модерация получилась долгая. Так что будь внимательней и будет тебе счастье!

Последним этапом будет перевод билда в состояние «Live» и отправка заявки на публикацию. Но перед этим можно ещё и достижения добавить. Поехали!

Для начала эти самые достижения надо внести в систему. Это настоящая пытка. Ужасно неудобно и сводная таблица совершенно не информативна. В ней отображаются лишь 5 колонок. Причём, с колонкой локали полнейшая путаница. И это никак не настроить. Позорище!

Интересно, а если б локализаций было больше, их так же перемешает?
Интересно, а если б локализаций было больше, их так же перемешает?

А теперь... Та-да-да! Снова Стим! Берём и смотрим ролик, как добавляются достижения на площадку Стим. Мне вот этот попался См. первый и третий ролики. Всё просто и понятно. Рекомендую сперва повторить те манипуляции, что показаны в этих роликах.

В выше указанном уроке на Ютуб это есть в текстовом виде, чтоб копипастить
В выше указанном уроке на Ютуб это есть в текстовом виде, чтоб копипастить

Если коротко, то. Подключаешь плагин OnlineSubsystemSteam. Копируешь DLL файлы в папку плагина, которая в папке движка. Вносишь изменения в DefaultEngine.ini, на этот раз не в папке движка, а конкретно в папке проекта. Вставляешь в нужное место проекта всего 3 ноды: Cache, Write и Get. Обязательно нужно проверить их на корректную работу. Со Стим это работает, как видно из ролика, а в случае с ВКПлей придётся плясать с бубном. Так что проверяй сперва на Стим.

Всего 3 ноды. На самом деле их 4, но в последней нет смысла.
Всего 3 ноды. На самом деле их 4, но в последней нет смысла.

Пляшем дальше. Всё, что нужно, это подменить DLL в папке движка на те, что предлагает ВК Плэй. А в DefaultEngine.ini внести ID своей Игры и список её достижений с её API Name для эмуляции Steam.

В самом низу: API Name для эмуляции Steam
В самом низу: API Name для эмуляции Steam

При этом проверить корректность твоих действий локально не получится. ВКП устроен по другому. Мне пришлось собрать проект, закачать его на площадку ВКП, назначить себя тестером, скачать и установить билд в режиме разработки и... Чудо чудное! Ачивки работают!

Назначение тестеров и другие права, если у тебя имеется команда
Назначение тестеров и другие права, если у тебя имеется команда

Не обошлось и без ложки дёгтя. Наградить пользователя достижением ты можешь. При помощи ноды Write. Но после этого скинуть/обнулить полученное достижение этой нодой не получится. А других в распоряжении нет.

Итог. В своей Игре я прописал UI виджет под ачивки. Во время отладки хранил о них информацию локально. Затем убедился, что все достижения правильно назначаются при наступлении соответствующих событий. После этого переключил функцию записи ачивки в «боевой» вариант. Собрал проект и залил его в ВКП. Вот кадры первого тестирования. В городской локации бродит невидимый НПЦ. На него можно наткнуться случайно. А можно его выследить и подловить. В любом случае такое действие ожидает награда в виде достижения.

На 0:35 срабатывает получение ачивки
1010
5 комментариев

А если кастомный движок? Можно забыть или писать свои обертки для вызова функций из . DLL-ок от VK?

1
Ответить

Писать свои, но перед этим обратиться в телеграм чат разработчиков ВКПлей. Возможно, уже имеется решение, а мир не без добрых людей, готовых поделиться опытом или даже готовым кодом.

1
Ответить

Александр, а вы молодец.

1
Ответить

Не работает

Ответить

ответил в Дзен
если что, пиши в ВК в личку
чем смогу помогу

1
Ответить