{ "author_name": "Dmitry Kachkov", "author_type": "self", "tags": ["\u043e\u043f\u044b\u0442","\u0438\u043d\u0434\u0438","\u043d\u0438\u0447\u0435\u0433\u043e"], "comments": 43, "likes": 46, "favorites": 5, "is_advertisement": false, "section_name": "blog", "id": "12944", "is_wide": "" }
Dmitry Kachkov
1 163
Блоги
Редактирование закрыто

Как мы Redeemer на PAX возили

Первый опыт посещения крупной выставки.

Поделиться

В избранное

В избранном

Всем привет! Я Дмитрий Качков, руководитель компании Sobaka Studio и наша команда занимается созданием инди-игр. Наша первая игра Redeemer уже вышла 1 августа в Steam, собрала критику, отзывы, стримы и летс-плеи. Уже улёгся хаос связанный с выпуском, мы запустили в производство новый проект и настало время делиться впечатлениями о производстве нашей первой игры, которой мы все и я в частности очень гордимся.

Разработка велась трудно, долго и с большим количеством сложностей. Рассказывать можно много о чём, и я подумываю о написании нескольких статей по разным темам.

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

Введение

Redeemer: Violence Awakened

Игру Redeemer, начиная с марта 2016 года, мы делали совместно с партнёрами/издателями (Gambitious Digital Entertainment ныне переименованные в Good Shepherd Entertainment). Организационной и PR-деятельностью занимаются всецело они, то есть вся поездка, билеты, проживание, такси и прочее они обеспечивали, и нам тут нечего было волноваться. Наша задача была в первую очередь собрать рабочий билд и самим собственно показывать игру людям, рассказывать о ней прессе, давать интервью и записывать в блокнотик фидбеки.

На кануне

Самолёт будет в среду утром в 7:40 утра.

Всё должно быть по плану

Понедельник утро, билд собран, протестирован, запакован и отправлен.

Середина дня, приходят новые voice over’ы (голосвая озвучка реплик героев, которые попадают в демо). Естественно, горит желание их вставить в демо, ведь с голосами-то героев сильно эффектнее показывать чем без. Дело плёвое: добавляем озвучку попутно выясняя что прислали нам звуки в 32 бита, а Unreal не понимает wav-файлы в таком качетсве. Прошу переприслать в 16 бит.

До конца дня всё доделываю, запаковываю отправляю коллегам за океан. У них времени проверить нет, они тоже все вылетают на конференцию.

Во вторник прихожу на работу расслабленный, готовимся к поездке, распланировали ночь, сон и прочее. В середине дня приходит первый звоночек: один из заморских коллег, кто смог запустить и потестить чуть-чуть говорит: «игра начинает немного притормаживать через 10 минут игры». Ну, думаю, не страшно, показалось человеку, наверное. До этого тестировали билд, и всё было нормально. Времени тестировать ещё раз и искать, что же тормозит нет, так что просто работаем, доделывая всё что можно ещё доделать.

Локально — всё нормально

Вторник 23:00 выкладываю последний билд на Dropbox, параллельно запуская его и видя, что игра реально подтормаживает. Ну делать нечего, уже до самолета всего ничего, еду домой.

Приключения начинаются

Пока еду в метро, меня озаряет, и я понимаю в чем проблема: при добавлении диалогов я исправил баг, который заключался в том, что враг не обрывает свою фразу если его в это время убить. То есть, он увидел игрока, кричит: «стоять, сейчас зарежу», а я его на первом слове убиваю и он уже лежа на земле продолжает договаривать.

Как я пофиксил этото баг? Ну конечно же вместо просто проигрывания звука я его привязываю к человечку, а когда человечек умирает, останавливаю всё, что привязано. Штука которую я не учёл, это то, что не только произносимые фразочки стали привязываться, но и любые звуки вообще (например звук попадания по врагу). Unreal не полюбил спавнить настолько много компонентов и стал захлебываться. Разница в одну строчку как именно спавнятся звуки стоила нам того, что билд стал тормозить, причём на самом деле ощутимо.

Надо пересобрать билд

Ладно, приезжаю домой, срочно ставлю выкачиваться весь проект на домашний комп, сон конечно сразу идёт лесом, жду пока выкачается, параллельно нахожу строчку и меняю её на нужную (возвращая баг который я изначально фиксил, но который не имеет значения для демо). Примерно в 3 часа ночи проект наконец выкачался, я восстановил батники и прочие скрипты для сборки и нажал заветную сборку, ну, думаю, сейчас за часик соберётся запакую и поеду. Но нет, проект только выкачан, а это значит что шейдеры и материалы ещё не были ни разу собраны и скэшированы движком. Итог: 4 ночи, такси уже ждёт с моим коллегой, билд ещё билдится. Даю инструкции жене (какую папку в итоге класть на «Яндекс.Диск»), и уезжаю.

Лог сборки

Сразу скажу, что летели мы через Хитроу с пересадкой в 4 часа. С собой у меня был только iPad (да, ноутбук я не взял, не спрашивайте почему, не хотел я его брать и всё тут). Коллега ноутбук с собой взял (ибо хотел ещё успеть поработать на месте).

В «Домодедово»

Приехали в «Домодедово», прошли все сканы и досмотры, сидим ждём вылета. Потихоньку начинаться посадка, звоню жене, как там, что там, встает, диалог:

— Что там на мониторе? Буквы бегут?

— Не, не бегут, какие-то красные буквы.

— Присылай фотографию.

— Как я тебе пришлю фотографию у тебя же телефон «дедовский»?

— Кидай в Skype кому-нибудь.

В аэропорту

В это время встаю в очередь на посадку и потихоньку топчусь в конце очереди, присылает, смотрю скрин. Build Failed. Чёрт, как же так, смотрю внимательнее: фейл только при отправке на Steam сервер, сам билд вроде собрался. Звоню:

— Скопируй папку ххх в папку ууу.

— Не понимаю…

— Малышка, очень важно, давай, давай, три кнопки нажать.

— ваши посадочные, пожалуйста, — говорит сотрудник аэропорта. Оборачиваюсь, сзади никого, я последний.

— О получилось, копируется.

— Фуф , — захожу в самолет, а связь обрывается.

Прилетели в Хитроу

Переходим поближе к воротам на посадку до бостона. 9 утра (по Москве), вылетать через три часа. Подсоединяюсь к wi-fi захожу на «Яндекс.Диск» через веб-браузер, вижу архив, на месте, залился. Пишу коллеге (художнику в Калининграде), чтобы он скачал этот архив и протестировал. Он просыпается, ворчит, качает, запускает. Все работает отлично, прошу его полностью отключить Steam. Тут надо сделать оговорочку: очень важно для конференции запускать билд без левого софта, потому что там нет интернета и нет возможности качать всего что надо, и меня об этом предупреждали партнёры на опыте.

Через полчаса он сообщает мне, что игра крашется на старте. Чёрт, как же так? Думаю. Говорю: «Запусти предыдущий билд (который с тормозами), без Steam». Через полчаса он пишет: «Всё работает, только тормоза появляются » Ладно, билд на Unreal состоит из двух частей: экзешник и пак с контентом (в том числе скомпиленные блюпринты), строчку я поменял в экзешнике, а с контентом может быть в теории все что угодно, прошу взять exe-файл из нового билда и положить его в старый. В итоге, всё работает и не тормозит. Попросил залить компиляцию из двух билдов на «Яндекс.Диск» . До вылета из Хитроу оставалось полчаса.

Прилетели в Бостон

Бостон

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

Первый запуск

Компьютеры привезли в обед, всё подключили уже после. Итак, время Ч наконец запустить игру. Запускаем... не запускается.

В чем дело — фиг знает. Уже не помню как, разобрались, не установлены visual studio redistributable — ну, библиотеки Microsoft, которые требуются большому количеству игр. Сам не очень понимаю, что это, зачем, и почему оно само не происходит, но вечно с ними проблемы. Смотрим, а на телефоне wi-fi поймался. Хоть что-то, ведь у компьютеров модуля wi-fi всё равно нет, не подключится. Думали, думали, волновались, волновались, далее коллеги подсказывают, что если телефон на Android подключить его по USB, компьютер сможет к сети подключится. Попробовали. Работает.

VC Redistributables

Качаем redistributable, устанавливаем. Ура, запускается, всё нормально (вроде бы). Работает как то средненько, но в целом нормально. Далее, один из наших коллег (ребята тоже показывают свои игры) подсказывает проверить, какая видеокарта определилась системой, а то игра может запускаться на встроенной. И действительно — запускается игра на встроенной, ерунда какая, переключаем на нормальную, мощную (очень мощная NVIDIA, специально заказанная, ибо большая выставка и всё должно быть идеально). Запускаем игру, но она просто дико тормозит. Почему? Да потому что игра по умолчанию берёт самое большое разрешение которое поддерживается видеокартой, а она мощная — 4К выдает.

4К — наше все

Опции не работают

В игре много пост-процесса, вот оно всё и натужилось. Ну, делов-то: сейчас разрешение в опциях приберём. Захожу в опции, но разрешение не меняется.

Рассказываю партнерам (PR-специалистам), сказать что они расстроились — #ничего не сказать: привезли такую аппаратуру, крутой стенд сделали, много сил потратили, а по итогу разрешение поменять нельзя.

Ну, как так-то

У меня очередная волна паники потихоньку спала, думаю. Ну, в целом, задача просто откуда-то взять save-файл, в котором прописано другое разрешение. В отеле есть ноутбук, и ещё целая ночь впереди.

Подменяем сейв

Вечером поели, приехали в отель, запускаем ноутбук коллеги. Открываю движок, смотрю почему могут сейвы не меняться. Оказывается, есть баг, что в том случае когда сейва ещё нет, то сейв всегда подменяется на дефолтный, исправляю баг, запускаю игру, выставляю разрешение 1920, забираю сейв копирую на флешку.

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

PAX

Подходим к нашему стенду, запускаем компы, вставляем флешку, копируем сейв, тестируем . Все работает! Ура!

Катарсис

Первые игроки

Степаныч

Сначала было тухленько, потому что в первую очередь конечно игроки пришли к Bethesda, Blizzard и другим Sony с Microsoft. Но к обеду подтянулись. Сначала приходилось каждого за локоть подводить, но потом уже поток возрос.

Игроки знакомятся с игрой

Ну, а дальше уже всё пошло гладко, игра всем нравилась, и была куча позитивных эмоций.

Впечатления

Самые позитивные эмоции были когда приходили афроамериканцы и дико угарали, когда наш герой Василий в очередной раз эффектно припечатывал врагов об стены или вырывал кадыки.

Наши пиарщики сработали по отлаженной схеме и приводили раз в час представителя той или иной прессы. Совсем уж крупные СМИ не заходили, но Hardcore Gamer, Destructoid, Games Zone, Everything Action и другие были. Мы им показывали игру, с кем-то записывали интервью. Ну, в общем, к концу третьего дня язык совсем отсох.

PR устал

Заключение

На той же конференции познакомились с ребятами, которые сделали Ruiner, так они вообще привезли билд, а он крешится когда катсцену скипаешь. Они резко отправили реквест в свой штаб, так те, не разобравшись, просто биндинг с esc кнопки убрали. И ребята уже прямо на выставке перевешивали там хитро кнопки, чтобы и не крешилось и меню паузы вызывать можно было.

Так что весь мой пост про то, чтобы не паниковать. По возможности никогда. Паника с лёгкостью может разрушить всё, что ты с таким упорством строишь на протяжении долгого времени.

#опыт #инди

Материал дополнен редакцией
Популярные материалы
Показать еще
{ "is_needs_advanced_access": false }

Комментарии Комм.

Популярные

По порядку

0

Прямой эфир

Узнавайте первым важные новости

Подписаться
[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjog" } } }, { "id": 10, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "create", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-250597-0", "render_to": "inpage_VI-250597-0-549065259", "adfox_url": "//ads.adfox.ru/228129/getCode?p1=bxeub&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid21=&puid22=&puid31=&puid32=&fmt=1&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudo", "p2": "ftjf" } } } ]