Если вы заходили на главную страничку Steam ночью воскресенья, возможно, вы заметили довольно интересное новое предложение: «Watch paint dry». Это вызвало множество разногласий (а я успел повеселиться на форуме) в Steam, поскольку люди утверждали, что Valve/Steam полностью потеряли контроль над качеством игр в Greenlight, хотя эта игра никогда даже и не проходила Greenlight.
Я даже не платил $100 за Steam Greenlight Submission Fee, для того чтобы сократить себе время загрузки дистрибутива на сервер. Лично я считаю, что Greenlight — это прекрасная платформа, для того чтобы люди выставляли свои игры, и благодаря ей работа инди-разработчика уже стала и продолжит оставаться успешной профессией.
Я хотел бы заранее извиниться, если я чем-то оскорбил инди-разработчиков, которые испытывают какие-либо затруднения по публикации своих игр в Steam. Все это — не более чем проделка, совершенная ради теста, для того чтобы проверить то, что я пытался донести до Valve последние несколько месяцев — о возможности загрузить в Steam любую игру без возможности проверки сотрудниками Valve.
Это уже устаревший гайд, поскольку владельцы Steam устранили существовавшие лазейки, но если вы не прочь переместиться назад во времени, то это станет для вас основательным гайдом о том, как выпустить свою игру.
Получение аккаунта SteamWorks
Это начинает становиться техническим гайдом, но получение доступа к SteamWorks стало для меня началом исследования этой проблемы. Я не могу комментировать как/почему я получил доступ к SteamWorks, но я подтвержу, что у меня не было никаких лазеек ни при оформлении документов в интернете, ни в Greenlight, ни в самой Valve. Несмотря на то, что она больше не работает, я не собираюсь оглашать какие-либо детали, того, как это было сделано, поэтому не просите меня об этом. У меня есть на то причины.
Как бы то ни было, я получил доступ в SteamWorks (внутренняя платформа Valve для публикации в Steam, основа для создания достижений, DRM, мультиплеера и т.д.) и это подало мне идею поискать слабые места платформы. Я попробовал связаться насчет них с Valve, но не получил ответа. В конце концов, ближе к апрелю я решил использовать «безымянное приложение» в качестве первоапрельской шутки, дабы привлечь внимание Valve к этим проблемам.
«Я не буду рассказывать о том, как я создал симулятор сохнущей краски с геймплеем на 45 секунд в RPG Maker, поскольку я не слишком им доволен, да и вообще это неважно.»
Получение подтверждения коллекционных карточек Steam
Разве такая игра как «Симулятор сохнущей краски» обойдется без коллекционных карточек Steam?
За 10 минут Photoshop’а я создал веселья ради базовый шуточный набор. Однако Valve должны оценить карточки, смайлики и рубашки, перед тем как я выпущу их. Но оценили ли они?
С первого взгляда можно увидеть, что у статуса релиза есть несколько изначальных опций:
Интересно, что насчет источника этой формы:
Еще интереснее… Новая опция «Последний редактор» это кто-то из Valve. А что будет, если мы заново сохраним форму со статусом «Released»?
В итоге, когда я ввел неправильный запрос, он вернулся с целым списком опций и их значений. В данном случае я увидел, что статус «Released» имеет значение 5. Обновление формы вернуло мой «editor_accountid» назад, а изменение значения в выбранном окне “Ready for Review” с 3 на 5, сохранило все это на сервер, словно бы мои коллекционные карточки подтвердили. Сервер не делает проверку, если кто-то из Valve утвердил карточки и ставит статус «Released». А теперь перейдем к загрузке самой игры.
Процесс утверждения Valve
Небольшой инсайд для вас: Прежде чем Valve загружает что-либо в Steam, оно подвергается трехступенчатому процессу выпуска. Во-первых, вы должны поставить свою страничку в магазине в очередь для оценки, затем предоставить финальный или почти финальный билд вашей игры, и только потом вы сможете выпустить ее.
Главное событие: выпуск игры
Сайт Steamworks написан в основном на AJAX. Весь код функций Javascript, на котором базируется источник, весьма запутан, но доступен для чтения кому угодно (зарегистрированному в Steamworks). В коде много интересно, но так как эта игра была скорее доказательством идеи, я придерживался того, что было важно и нашел интересную функцию Javascript «ReleaseGame(appid, data) ». Похоже, что это создало типичный запрос в AJAX (хотя в нем не было никакой аутенфикации) к Steam и, как там говориться, приложение было выпущено.
Я попытался вызвать ReleaseGame со значением 445730 (мой appid) , не заполнив данные и получил ошибку 403 (доступ заблокирован). Интересно. Я просмотрел несколько других функций в файле и заметил, что большинство из них добавляли значения в JSON-запрос, названный “sessionid” с тем Session ID, который мы видели ранее, когда выпускали наши коллекционные карточки.
Итак, вызываем ReleaseGame(445730, { ‘sessionid’: ‘my_session_id’)
Переходим на страницу магазина Steam:
Тадам! Должен признать, что появление игры в разделе новых релизов было недосмотром с моей стороны. Изначально я хотел, чтобы она «выходила первого апреля» и не появлялась в Steam до пятницы. Хотя я и не ожидал, что она так долго продержится. Также признаю, что мне очень хотелось посмотреть, насколько далеко я могу зайти в процессе релиза игры. Но я думаю, то, что она не появилась в продаже — это к лучшему.
Позже я связался с Valve, которые исправили все вышеописанное.
Чему я действительно научился, так это тому, что когда работаешь с создаваемым юзерами контентом, который должен получить одобрение, не стоит выставлять в качестве значений для этого контента только «Review Ready» и «Reviewed». Вместо этого попробуйте подойти к этому иначе, создайте «билеты для рецензирования» каждого элемента контента или что-то в этом роде. Или просто не давайте пользователям возможности отправлять предмет в релиз.