10

Все (по) Star Souls: физики и лирики

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


Начну с приятного, а именно со звука. Обычно музыку пишут ближе к концу цикла разработки, но у нас все было не так. Антон (наш композитор) стал писать саундтрек с самого начала, поэтому его не душили сроками, а для такого тонкого процесса, как мне кажется, это немаловажно. Кроме того, написанные треки задавали игре настроение и ритм, и работать было веселее. В качестве референса мы отобрали какие-то композиции 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. В целом, мы рассказали все, что хотели. Я спрашивала Диму, хочет ли он поведать что-нибудь широкой аудитории, на что в ответ услышала: «Я рисовал, балансил, что мне еще говорить?». Ну, пусть за него говорят его работы)


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

Правила сообщества

ОБЩИЕ ПРАВИЛА:

- Уважайте чужой труд и используйте конструктивную критику

- Не занимайтесь саморекламой, пишите качественные и интересные посты

- Никакой политики


СТОИТ ПУБЛИКОВАТЬ:

- Посты о Вашей игре с историей её разработки и описанием полученного опыта

- Обучающие материалы, туториалы

- Интервью с опытными разработчиками

- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе

НЕ СТОИТ ПУБЛИКОВАТЬ:

- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры

- Посты, единственная цель которых - набор команды для разработки игры

- Посты, не относящиеся к тематике сообщества

Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.

ЗАПРЕЩЕНО:

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

- Выдавать чужой труд за свой

Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.


О РАЗМЕЩЕНИИ ССЫЛОК:

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

- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества

- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз

- Cсылка размещается в формате: "Страница игры в Steam: URL"

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества