5 1 1043
7 мин.

Долгий тернистый путь. Разработка Star Souls. Ч. 2

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

Начну с приятного, а именно со звука. Обычно музыку пишут ближе к концу цикла разработки, но у нас все было не так. Антон (наш композитор) стал писать саундтрек с самого начала, поэтому его не душили сроками, а для такого тонкого процесса, как мне кажется, это немаловажно. Кроме того, написанные треки задавали игре настроение и ритм, и работать было веселее. В качестве референса мы отобрали какие-то композиции Deine Lakaien, но в целом предоставили полную творческую свободу.

За три года написания у Антона происходило и много романтических моментов, и много разочарований, где-то было больше внутренней гармонии, где-то меньше. Всё это оставляло свой отпечаток на музыкальных композициях, тем самым делая их разнообразнее, но при этом и временами отдаляя от изначального референса. По итогу было написано 18 композиций (8 battle, 8 explore, вступление и концовка).

Полный саундтрек:


По словам самого Антона, особое удовольствие он получил при работе с некоторыми уникальными по музыке новостями в «магазине» (игрок покупает там корабли и оружие), где нужно было передать абсолютно разную атмосферу в очень коротких отрезках времени. С магазином, кстати, получилось довольно интересно. Началось все с того, что я написала новости для «бегущей строки новостей» в магазине, потому что квесты предполагались совсем маленькие и не везде, а нам очень хотелось создать какую-никакую атмосферу и хоть что-то рассказать о лоре. Совершенно случайно нашлась актриса озвучивания Марина Приемко, вместе с ней на студии записали аудио новостей и внедрили в игру. Антон добавил стандартный джингл, а потом не выдержал и творчески переработал кое-какие новости, где это само просилось.

Пример новости из преальфа версии игры:

Одна из уникальных новостей:

Когда мы уже точно знали, чем игра закончится, пришло время создания вступительного и финального роликов. Очень хотели, чтобы озвучивал мужчина с низким голосом и, разумеется, с хорошим английским. Тут уже никакой знакомый не всплыл, поэтому воспользовались услугами voicebunny.com. Это потянуло около 200 баксов. Результат был хорош, звук они записывают в отличном качестве. Можно подобрать актера себе по вкусу, с определенным акцентом (британский, американский, и т.п.), у всех выложено портфолио. Если бы делали сами, пришлось бы арендовать студию, потерянный рабочий день, плюс на пиво, плюс на бензин и т.д., так что по стоимости вышло даже дешевле.

Кстати, об английской озвучке. Насколько бы нам не казалось, что Марина говорит по-английски идеально, американцы/британцы ее русский акцент заметили сразу. Не то, чтобы это было большим минусом, скорее, изюминкой, но такой вот факт.

По-хорошему, звук подгоняют под видео, так как производство последнего дороже. Поскольку наш видеоряд довольно медитативный, и делал его Дима сам (не надо было платить никому), то можно было позволить себе подгонять видео и немного озвучку (за счет пауз) под музыку. Мы втроем решили, что молодцы, сделали чудесные ролики, и теперь они появятся в игре. А вот и … нет! Если со вступлением проблем не было, то в финале возникал какой-то дикий баг, при котором игра во время ролика не становилась на паузу, и прямо посреди проникновенной речи капитана было слышно, как о борт корабля бьются астероиды. Программист решил этот вопрос, конечно, но пришлось понервничать. Вот и урок на будущее: не вкладываться, пока не узнаешь точно, можно ли это будет реализовать.

Один из финалов можно увидеть здесь с 55 минуты:


Далее предоставим слово нашему программисту Валере, который прояснит, почему такие вещи происходили:

«Под капотом все оказалось не так радужно, как казалось в тот момент, когда меня впервые позвали поучаствовать в разработке данного проекта. Если быть совсем откровенным, то в начале я не имел особого желания участвовать в разработке инди-игры, потому что основная работа и так съедала много сил и времени, а любимые хобби укоризненным взглядом наблюдали за моим уставшим телом, которое всячески пыталось ухватить любые возможные минуты сна и отдыха. Но! Всегда есть «но», которое кардинально меняет планы и в данном случае таким «но» стала, если это можно так назвать, «рекомендация» от коллег по хобби-цеху. И началось…

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

Все изменилось в один день. Как сейчас помню, был дождливый вечер четверга (на самом деле нет), когда Дима связался со мной и сказал, что мы потеряли основного разработчика и теперь нам надо искать нового, а до того момента как мы это сделаем вся техническая составляющая либо перейдет в стадию заморозки, либо свалится мне на плечи. Я подумал, что если это событие временное, то можно немного покранчить и взять на себя основную разработку на месяц-два. Как же ты ошибался – говорит мне сейчас мой внутренний голос. Следующие два года основным разработчиком стал я.

Первой технической проблемой, а точнее первым вопросом, который возник у меня стали AssetBundl’ы. Собственно, большая часть ресурсов игры подгружалась именно через них, причем для их создания и сборки существовал второй проект и, собрав бандлы в нем, приходилось руками переносить их в основной проект. Зачем и почему, так и осталось загадкой. Единственным моим предположением было, то что игру в будущем планировали переносить на планшеты, но насколько я помню, все это планировалось в далеком будущем или если быть точнее, то «может быть, когда-нибудь, мы пока об этом сильно не задумывались» . На самом деле, на практике это оказалось не такой большой проблемой, потому что в основном таким образом переносилась именно графика, а механики от нее не зависят, поэтому подобного обновления раз в месяц или по команде «обновись из второго проекта» было вполне достаточно.

Вторая техническая проблема – это хвосты недоделки. Если не сильно углубляться в технические детали, то выглядит это следующим образом: есть некая фича, которая планируется быть реализована, под нее существует UI и возможно даже какие-то точки входа, но сам функционал либо отсутствует вовсе, либо он слишком запутан и стоит комментарий //TODO: надо будет это потом переписать, либо существующий код имеет характер раннего прототипа. (Забегая вперед: через пару месяцев мне предстоит узнать, что код из базового прототипа перекочевал в релизную ветку, что породило несколько бессонных ночей и седых волос.)

Третья техническая проблема – нетривиальные решения. В данном случае хочется привести пример, когда я обнаружил некоторое условие, которое по своей логике можно в целом было приравнять к if (true) { a = a; }. Я даже сломался на несколько минут, пытаясь разгадать тайну сего выражения. Открытием для меня стало то, что «a» - оказалось property, внутри обработчика которой находилось обновление UI, и, по сути, вся конструкция нужна была просто для обновления интерфейсов. Сюда же мы можем отнести нарушения MVC модели, т.к. в некоторых случая именно интерфейс являлся ключевой точкой входа для логики.

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

И немного комментариев, которые были найдены мной и вызвали улыбку. Уверен, что что-то подобное есть всегда и на всех проектах, даже если это Cyberpunk 2077. //TODO - ну так себе решение честно говоря - на этом проекте ИИ писался гдето недели 2 + правки - так что все уныло StartCalculateRoute();//корень тормозов //TODO - вообще это надо выпилить наверное //TODO а здесь ли это нужно? //ЭТО ПЕРВАЯ ПОПЫТКА НАПИСАТЬ ТАРАН - НУЖНО ВСЕ ПЕРЕОСМЫСЛИТЬ И ОПИСАТЬ АККУРАТНО»

Спасибо, Валера))

P.S. А это довольно банальная информация (более актуальная для жителей Беларуси и совсем-совсем новичков), которая касается всяких пустяков и формальностей.

Когда будете подсчитывать ваши будущие миллионные прибыли, не забывайте о налогах и доле магазина. Магазин берет 30%, США – 20% (с граждан Беларуси и России, не забудьте заполнить соответствующую форму в Стим об избежании двойного налогообложения, иначе будет 30%). С поступления из-за границы на родине тоже нужно платить налог, как физическое лицо 13%, если открыто ИП с УСН без НДС – 5%. Открыть ИП можно в 1 день, но потом придется платить за обслуживание банку (условия везде разные), ежеквартально не забывать сдавать декларации (даже если дохода нет), а начиная с прошлого года еще и ПУ-3 раз в год. Если не хотите топать ножками в налоговую и ФСЗН, нужно купить ключ с подписью, а в создателей всех этих государственных криптографических программ я лично плюнула бы. Они становятся на компьютер с какими-то особыми танцами с бубном, в полночь, руками невинной девы. Если вы все же откроете ИП под это дело и начнете получать деньги от магазина, не забывайте о валютном контроле. В обслуживающий вас беларуский банк надо будет в кратчайшие сроки послать скан договора с магазином. Договор есть только на английском языке и в электронном виде, без подписей и печатей.

Насчет счетов за границей имеем ввиду статью 19 Закона Республики Беларусь «О валютном регулировании и валютном контроле» и статью 11.5. Кодекса Республики Беларусь об административных правонарушениях.

Серьезные дяди работают, конечно, под ПВТ, что упрощает обозначенные проблемы.

P.P.S. В целом, мы рассказали все, что хотели. Я спрашивала Диму, хочет ли он поведать что-нибудь широкой аудитории, на что в ответ услышала: «Я рисовал, балансил, что мне еще говорить?». Ну, пусть за него говорят его работы)

Долгий тернистый путь. Разработка Star Souls. Ч. 2. - Изображение 1
Долгий тернистый путь. Разработка Star Souls. Ч. 2. - Изображение 2

Страница игры в Steam: https://store.steampowered.com/app/819520/Star_Souls/

1 комментарий

Полдник: Борис Николаев. Индустрия игр, Кипр, работа в Wargaming.net