Внедрение Steamworks SDK в Unreal Engine
Steam SDK нужен для внедрения в игру различных функций Steam, такие как достижения, таблицы лидеров, мультиплеерная составляющая и прочие. В интернете множество различных инструкций, но все они переполнены ненужной информацией, и большинство из них для старых версий движка. Мы с вами сделаем всё максимально просто и быстро и без лишних телодвижений.
Если у вас ещё нет ID приложения, то не беда - мы будем тестировать всё на игре Spacewar - тестовая игра от Steam для таких случаев. В материале будет использоваться Unreal Engine последней версии - 4.22, но и на предыдущих версиях движка всё аналогично. Так же, в качестве примера, я буду использовать стандартный шаблон Анриала First-person shooter.
Online Subsystem Steam
Первым делом открываем проект и идём на вкладку Plugins (Edit -> Plugins) и активируем плагин Online Subsystem Steam. Потребуется перезапуск движка, о чём нам и сообщают.
Копирование dll
Далее проходим в папку
/Epic Games/ваша версия движка/Engine/Binaries/ThirdParty/Steamworks/Steamv139
Обратите внимание, не в папку проекта, а в папку самого установленного движка. В этой директории находятся папки Win32 и Win64, а каждой из которых есть по файлу steam_api. Сейчас нам нужно добавить нужные dll. Переходим в папку с установленным Steam-клиентом и в ней находим и копируем файлы:
В папку Win64 движка:
- steamclient64.dll
- tier0_s64.dll
- vstdlib_s64.dll
В папку Win32 движка:
- steamclient.dll
- tier0_s.dll
- vstdlib_s.dll
Конфигурация DefaultEngine.ini
Переходим в папку вашего проекта, в каталоге /Config находим файл DefaultEngine.ini и открываем его блокнотом. Вставляем в него следующие строки:
[/Script/Engine.GameEngine] !NetDriverDefinitions=ClearArray +NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="/Script/OnlineSubsystemSteam.SteamNetDriver",DriverClassNameFallback="/Script/OnlineSubsystemUtils.IpNetDriver") [OnlineSubsystem] DefaultPlatformService=Steam PollingIntervalInMs=20 [OnlineSubsystemSteam] bEnabled=true SteamDevAppId=480 GameServerQueryPort=27015 bRelaunchInSteam=false GameVersion=1.0.0.0 bVACEnabled=1 bAllowP2PPacketRelay=true P2PConnectionTimeout=90 [/Script/OnlineSubsystemSteam.SteamNetDriver] NetConnectionClassName="/Script/OnlineSubsystemSteam.SteamNetConnection"
Финал
Первоначальная настройка завершена! Запустите свой проект в режиме Standalone Game. Если всё прошло хорошо, то после запуска в правом нижнем углу вы увидите стандартную всплывающую подсказку Steam. Внимание! Steam-клиент должен быть запущен на вашем компьютере! В оверлее (Shift-Tab) будет светиться игра Spacewar - то самое приложение для тестов от Стима.
Если у вас уже есть ID вашей игры, то снова открываем DefaultEngine.ini:
- Изменяем SteamDevAppId=480 на SteamDevAppId=ID вашего приложения
- После неё добавляем строку SteamAppId=ID вашего приложения
(Скорее всего вы уже догадались, что 480 - это ID игры Spacewar)
Всё готово к работе! Теперь в вашу игру интегрирован Steamworks SDK и можно спокойно тестировать его функции на стандартном Spacewar. В следующей статье поговорим о том, как добавить достижения в вашу игру.
Смотрите также:
Комментарии
Спасибо большое за этот гайд! А то уже волосы дыбом от отсутствия инфы)) Хотелос бы больше по этой теме. Например, что дальше. Т.е. я подключился к тестовому серверу стим. Как теперь мне синхронизировать двух и более игроков, подключенных к комнате. Вобщем куча вопросов осталось.
Но все равно спасибо!
P.S. : Хотелось бы видеть простые примеры (с кубами) например. И реализацией на С++ в UE4
А что мне делать я включил данный плагин компилирую игра не компилица выдает ошибку
CollectableItemData.cs
[CreateMenuItem(fileName = "newItem", menuName = "Data/Items/Collectable", order = 51]