Если вы заходили на главную страничку Steam ночью воскресенья, возможно, вы заметили довольно интересное новое предложение: «Watch paint dry». Это вызвало множество разногласий (а я успел повеселиться на форуме) в Steam, поскольку люди утверждали, что Valve/Steam полностью потеряли контроль над качеством игр в Greenlight, хотя эта игра никогда даже и не проходила Greenlight.

Я даже не платил $100 за Steam Greenlight Submission Fee, для того чтобы сократить себе время загрузки дистрибутива на сервер. Лично я считаю, что Greenlight — это прекрасная платформа, для того чтобы люди выставляли свои игры, и благодаря ей работа инди-разработчика уже стала и продолжит оставаться успешной профессией.

Я хотел бы заранее извиниться, если я чем-то оскорбил инди-разработчиков, которые испытывают какие-либо затруднения по публикации своих игр в Steam. Все это — не более чем проделка, совершенная ради теста, для того чтобы проверить то, что я пытался донести до Valve последние несколько месяцев — о возможности загрузить в Steam любую игру без возможности проверки сотрудниками Valve.

Изображение 1

Это уже устаревший гайд, поскольку владельцы Steam устранили существовавшие лазейки, но если вы не прочь переместиться назад во времени, то это станет для вас основательным гайдом о том, как выпустить свою игру.

Получение аккаунта SteamWorks

Это начинает становиться техническим гайдом, но получение доступа к SteamWorks стало для меня началом исследования этой проблемы. Я не могу комментировать как/почему я получил доступ к SteamWorks, но я подтвержу, что у меня не было никаких лазеек ни при оформлении документов в интернете, ни в Greenlight, ни в самой Valve. Несмотря на то, что она больше не работает, я не собираюсь оглашать какие-либо детали, того, как это было сделано, поэтому не просите меня об этом. У меня есть на то причины.

Изображение 2

Как бы то ни было, я получил доступ в SteamWorks (внутренняя платформа Valve для публикации в Steam, основа для создания достижений, DRM, мультиплеера и т.д.) и это подало мне идею поискать слабые места платформы. Я попробовал связаться насчет них с Valve, но не получил ответа. В конце концов, ближе к апрелю я решил использовать «безымянное приложение» в качестве первоапрельской шутки, дабы привлечь внимание Valve к этим проблемам.

«Я не буду рассказывать о том, как я создал симулятор сохнущей краски с геймплеем на 45 секунд в RPG Maker, поскольку я не слишком им доволен, да и вообще это неважно.»

Получение подтверждения коллекционных карточек Steam

Разве такая игра как «Симулятор сохнущей краски» обойдется без коллекционных карточек Steam?

За 10 минут Photoshop’а я создал веселья ради базовый шуточный набор. Однако Valve должны оценить карточки, смайлики и рубашки, перед тем как я выпущу их. Но оценили ли они?

С первого взгляда можно увидеть, что у статуса релиза есть несколько изначальных опций:

Изображение 3

Интересно, что насчет источника этой формы:

Изображение 4

Занимательно, что они отслеживают одновременно мою сессию и ID аккаунта редактора. Давайте попробуем изменить эти данные на данные работника Valve (т.е. 1). Например, изменить value в select на что-то несуществующее и посмотрим как это повлияет на форму.

Изображение 5

Еще интереснее… Новая опция «Последний редактор» это кто-то из Valve. А что будет, если мы заново сохраним форму со статусом «Released»?

Изображение 6

В итоге, когда я ввел неправильный запрос, он вернулся с целым списком опций и их значений. В данном случае я увидел, что статус «Released» имеет значение 5. Обновление формы вернуло мой  «editor_accountid» назад, а изменение значения в выбранном окне “Ready for Review” с 3 на 5, сохранило все это на сервер, словно бы мои коллекционные карточки подтвердили. Сервер не делает проверку, если кто-то из Valve утвердил карточки и ставит статус «Released». А теперь перейдем к загрузке самой игры.

Процесс утверждения Valve

Небольшой инсайд для вас: Прежде чем Valve загружает что-либо в Steam, оно подвергается трехступенчатому процессу выпуска. Во-первых, вы должны поставить свою страничку в магазине в очередь для оценки, затем предоставить финальный или почти финальный билд вашей игры, и только потом вы сможете выпустить ее.

Главное событие: выпуск игры

Сайт  Steamworks написан в основном на AJAX. Весь код функций Javascript, на котором базируется источник, весьма запутан, но доступен для чтения кому угодно (зарегистрированному в Steamworks). В коде много интересно, но так как эта игра была скорее доказательством идеи, я придерживался того, что было важно и нашел интересную функцию Javascript «ReleaseGame(appid, data) ». Похоже, что это создало типичный запрос в AJAX (хотя в нем не было никакой аутенфикации) к Steam и, как там говориться, приложение было выпущено.

Изображение 7

 Я попытался вызвать ReleaseGame со значением 445730 (мой appid) , не заполнив данные и получил ошибку 403 (доступ заблокирован). Интересно. Я просмотрел несколько других функций в файле и заметил, что большинство из них добавляли значения в JSON-запрос, названный “sessionid” с тем Session ID, который мы видели ранее, когда выпускали наши коллекционные карточки.

Изображение 8

Итак, вызываем ReleaseGame(445730, { ‘sessionid’: ‘my_session_id’)

Изображение 9

Переходим на страницу магазина Steam:

Изображение 10

Тадам! Должен признать, что появление игры в разделе новых релизов было недосмотром с моей стороны. Изначально я хотел, чтобы она «выходила первого апреля» и не появлялась в Steam до пятницы. Хотя я и не ожидал, что она так долго продержится. Также признаю, что мне очень хотелось посмотреть, насколько далеко я могу зайти в процессе релиза игры. Но я думаю, то, что она не появилась в продаже — это к лучшему.

Позже я связался с Valve, которые исправили все вышеописанное.

Чему я действительно научился, так это тому, что когда работаешь с создаваемым юзерами контентом, который должен получить одобрение, не стоит выставлять в качестве значений для этого контента только «Review Ready» и «Reviewed». Вместо этого попробуйте подойти к этому иначе, создайте «билеты для рецензирования» каждого элемента контента или что-то в этом роде. Или просто не давайте пользователям возможности отправлять предмет в релиз.