Доработать интеграцию игры с сервисом Steam (Язык С)

20 000 руб. за проект
09 декабря 2021, 07:36 • 3 отклика • 48 просмотров
  1. Есть проект на С:
https://github.com/wolfetplayer/RealRTCW

Проект - модификация для игры, требующая файлы оригинальной игры для запуска. Мод доступен в Steam:
Мод:
https://store.steampowered.com/app/1379630/RealRTCW/
Оригинальная игра:
https://store.steampowered.com/app/9010/Return_to_Castle_Wolfenstein/
Итак,чтобы запуститься, моду нужно найти игровые архивы оригинала.

Вот как мод делает это в настоящее время:(см. Sys_steampath(поиск файлов оригинала)+следующий за ним Sys_steamworkshoppath(поиск дополнений в мастерской Steam)
https://github.com/wolfetplayer/RealRTCW/blob/master-steam/code/sys/sys_win32.c

Сейчас мод ищет файлы оригинала только в стандартной библиотеке Steam(её расположение он цепляет из реестра),которая расположена в папке самого клиента Steam. То есть чтобы запустить мод, игрокам нужно держать клиент,оригинальную игру и мод на одном жестком диске, в пределах одной библиотеки. В противном случае мод не запустится. Это несколько накладно.

Например, у многих, клиент Steam стоит на диске С: а игры на другом. При таком раскладе мод не найдет файлы оригинала, поскольку они не в библиотеке по умолчанию.

Таким образом, нужно научить мод искать кастомные расположения библиотеки Steam. Я узнал,что пути к ним обозначаются в файле “libraryfolders.vdf”. Подробнее см.здесь:
https://github.com/NPBruce/valkyrie/issues/1056

То есть нужно запарсить этот .vdf файл и заставить мод искать файлы оригинальной игры в том числе в пользовательских библиотеках. Тоже самое по аналогии провернуть с поиском дополнений из Мастерской Steam.

Удалось также отрыть парсер .vdf файлов на плюсах:
https://github.com/TinyTinni/ValveFileVDF

У проекта также есть свой wrapper для с++, который использовался для интеграции достижений:
https://github.com/Kundrata/steamworks_cppWrapper_custom