Привет, друзья!
Я подготавливаю игру для публикации в Steam (
http://store.steampowered.com//app/533950 ), для взаимодействия через SteamAPI использую библиотеку FRESteamWorks (
https://github.com/Ventero/FRESteamWorks ).
Основной функционал .ane работает как надо (под windows, по крайней мере), но есть одна проблема: как известно, для работы SteamAPI параллельно с игрой должен быть запущен Steam клиент. В FRESteamWorks для этого есть функция соответствующей проверки (AIRSteam_Init) и функция перезапуска Steam-клиента (AIRSteam_RestartAppIfNecessary). В комментариях к примеру использованию этого метода так и написано – если игра запущена без стим-клиента, то идёт попытка его запустить:
Код AS3:
if (Steamworks.restartAppIfNecessary(appid)) {
log("App started outside of Steam with no app_id.txt: Steam will restart");
NativeApplication.nativeApplication.exit(0);
return false;
}
Проблема в том, что если Steam клиент не запущен, то FRESteamWorks вообще не работает: т.е. любые запросы к ane возвращают null. (если же клиент запущен, то FRESteamWorks и весь его функционал работает – ачивки, статистика, всё ок) Причём, это проявлятся только в релизной сборке: при тестировании в дебаге, запустить стим-клиент из игры удаётся.
Рядом с .exe приложения в релизной сборке steam_api.dll и FRESteamWorks.ane лежат – вообще, папки дебаговой и релизной сборок идентичны. В чём причина – не могу понять.
Единственное различие – для тестирования в дебаге мне приходилось кидать steam_api.dll в AIR SDK, но это, по идее, вынужденная мера именно для тестирования.