Сделали новеллу за месяц! Опять?!
Начало
Как вы уже, наверное, догадались по названию я снова буду рассказывать о джеме. Джеме ста цветов! На этот раз о конкурсе я узнал лично от одного из его организаторов - Дани Балахнина.
Этот человек видать запомнил меня по прошлому джему, когда в составе «Hopes and Dreams» я работал над новеллой «Перепутье». Что-ж… Тогда опыт был и вправду интересный, я был совсем не против повторить!
Вообще, сей джем стал для меня уже пятым. И за прошлые четыре раза знаний и навыков я порядком накопил, потому стресса и волнения было куда меньше чем раньше. Я дважды делал новеллы за полгода, делал уже и за месяц, делал даже сюжетную игру за три дня. Как ни как, такой багаж за спиной успокаивает.
Первым этапом по стандартной схеме стал сбор команды. И на этот раз я решил, что обойдусь лишь одним союзником. Ибо чем больше людей, тем подробнее нужно делать план работы и тем больше вещей, за которыми нужно следить.
А вот связка «программист-художник» – это железная классика. Потому, я пошёл в сообщество джема. Нашёл там нужную тему где просто и по делу написал мол, сам программист, сценарист и тимлид, ищу художника. Коли победим – приз пополам.
И на удивление мне написало аж целых три человека! Сами! За все джемы что я прошёл это был первый раз, когда именно художники писали мне, а не наоборот. Чего скрывать, это безумно всё упростило.
Первым кто постучался в личные сообщения был Даниил Юзов. Я попросил примеры работ у него, он у меня. Всех всё устроило, потому остальным товарищам я сразу ответил вежливым отказом.
Комментарий Даниила: Я же свою очередь узнал об этом из видео ютуб каналаЛД | Новости визуальных новелл. Так же отмечу что меня тоже приглашал Даня Балахин.Он сделал это после того, как увидел мою работу после арт конкурса по игре Илиас: Легенды Алькиона в котором я занял дополнительное призовое место.Для меня «Джем Ста цветов» был первым джемом в котором я обмазался. Всегда хотел попробовать создать визуальную новеллу и тут подвернулась причина. Я не особ волновался во время разработки новеллы за исключением последних четырёх дней до окончания первого дедлайна.А что насчет Андрея... Наше знакомство по началу было скромным, но потом я ушёл в отрыв. Без споров не обошлось, но с ним было очень приятно общаться, он всё объяснил и показал.Ведь это был мой первый раз.
За две недели до джема
Времени на подготовку было предостаточно. Я отыскал все необходимые ресурсы, примерно прикинул о чём можно делать игру. Написал небольшой кусок текста, просто чтобы Даниил смог оценить мой стиль.
Затем, поскольку я вновь хотел делать историю в мире Оазиса, пришлось пояснять художнику что это вообще такое. Можно было бы и без этого, но человек сам захотел, а мне только в кайф! Сделал файлик с кратким пересказом лора, дал ссылку на полноценную статью, просто чтобы была. Уточнил пару деталей и ура!
Комментарий Даниила: С первого прочтения я сначала не понял суть. Думал это смесь 1984 и шоу Трумена в сеттинге сай-фая вперемешку с фэнтези. Но внимательно перечитав с объяснениями Андрея я усвоил этот мир и ка-а-а-ак понял.
Дальше примерно прикинул что можно сделать по сюжету, но на этом этапе именно что примерно. Тему джема мы пока не знали и если расписать в плане много и подробно, или не дай боже начать делать сам сценарий… После объявления темы может потребоваться переделать вообще всё.
То же касалось и графики. Я покидал чутка референсов из прошлых своих проектов дабы показать, какой в итоге хочу видеть игру.
В основном то были детали, касающиеся атмосферы, расположения спрайтов на экране и формата самих спрайтов.
Словом, мы обговорили какие-то общие моменты, и стали ждать.
13-14 июля. Джем стартовал!
Темой джема стал «Риск». Очень абстрактная тема, на самом деле, ибо в той или иной форме встречается практически в любом сюжете.
Мне показалось интересным чутка переосмыслить её, переложив на контекст отношений между людьми. И вот тут стоит немного рассказать, что именно я хотел реализовать в сюжете.
Когда-то давно, когда я только начинал делать первые проекты по миру Оазиса я хотел сделать цикл жутких историй, которые, после более детального знакомства со вселенной приобретали бы куда более оптимистичный раскрас. Что-то даже публиковал, но потом это дело забросил и удалил.
Теперь же я вернулся к той давней идее, кардинально изменив не только формат историй, но и саму подачу. В новелле я хотел сделать не просто сборник ужастиков, но полноценную историю, сквозной сюжет.
Главный герой новеллы теперь не проживает страшилки сам, а читает их пересказ от уже помершего старика, который когда-то давно был рыцарем и странствовал по свету.
А вот как дальше поступать с полученной информацией, кому её доверить и как строить отношения с вернувшейся недавно подругой детства – вот это уже решать игроку.
Кстати, главного героя истории зовут Даниэль. И я сначала придумал это имя и только потом сопоставил, что о конкурсе узнал от Дани, а рисует графику для игры Даниил. Крайне забавно получилось)
Комментарий Даниила: )))))))))
После того как план сюжета прикинул, принялся за ТЗ для художника. Расписал там всех нужных персонажей. Описал сколько поз должно быть у каждого, и какие нужны эмоции к каждой позе.
Дал пояснения относительно того, каким должен быть спрайт анимированного персонажа, скинув для примера графику, сделанную когда-то Марфой для другой конкурсной новеллы.
Никаких фонов в игре было решено не рисовать, показав их тайлами, и освободив тем самым больше времени и сил на проработку самих персонажей.
С движком я определился сразу, работать, как и всегда буду на RPG maker версии MZ. Дальше была дискуссия на тему того, какие именно нужно использовать спрайты.
Изначально я думал делать графику из платного дополнения к движку под названием Time Fantasy:
Были даже эксперименты относительно того, как сделать персонажа более читаемым. И возможно я их потом даже где-нибудь использую…
Но в конечном итоге остановили мы свой выбор на стандартной графике старого RPG maker версии XP адаптированной под новые размеры. Разве что персонажи по-прежнему делались на стандартном генераторе из MV частей, после чего растягивались до двух тайлов специальным алгоритмом.
Тем временем Даниил нарисовал уже первый спрайт главного героя, выдал ему пачку эмоций, и даже анимировал, правда удачно это вышло сделать далеко не с первой попытки.
Комментарий Даниила: Нда… Мои первые спрайты танцевали как Гарри Дюбуа в церкви.
Ещё художник сделал скетч воодушевлённой позы, который я решительно отверг.
После чего был сделан новый набросок, который мне понравился куда как больше!
Ближе к ночи я закончил все локации из тайлов, мы обсудили немного эффекты, которые нужно будет накинуть. Что-то у меня получилось потом сделать, как например лепестки сакуры. С чем-то, как например с белым туманом вышел полный провал.
Комментарий Даниила: Я был расстроен, когда узнал, что туман не получится.
15 июля
Я начал вести медийную деятельность по проекту. Узнал у Даниила что его псевдоним при публикации работ - Fruit Salad. Рассказал о том, что мы делаем в своей группе и в соответствующей ветке форума.
16 июля
Я начал писать сам сценарий. Сделал пролог, первые два дня и две ночи.
Художник тем временем сделал несколько набросков Аши – девушки, лекаря по профессии, которая является любовным интересом главного героя.
Комментарий Даниила: Думаю стоило выбрать первый дизайн, где вырез груди был снизу.
А затем были готовы и наброски старика Феба. Того самого рыцаря, который повидал всякой жути по молодости, и перед смертью записки о странствиях оставил главному герою.
Под конец дня я перечитал план сюжета и внёс в него несколько изменений, из-за чего пришлось поменять детали ещё и в ТЗ художника. Благо всё это произошло сейчас, а не много недель позже.
17 июля
Даниил читает то, что я написал в сценарии на данный момент после чего говорит, что нужно поправить. Сам же он в это время рисует воодушевлённый спрайт главного героя, меняет его после критики в ветке форума относительно пропорций и правит анимации прошлых спрайтов.
Тем временем я, выслушав критику, вношу в текст изменения и проверяю работу исправленных анимаций.
Примерно в этот день мы начали проверять работу друг друга. На самом деле очень хорошая практика, которая пусть и несколько замедляла работу, но зато страховала от неприятных ошибок в дальнейшем.
Комментарий Даниила: За всё время разработки делали правку сценария примерно восемь раз.
18 июля
Художник делает наброски молодого Феба и его старшего напарника по путешествиям - Лоуренса.
Я тем временем продолжаю тестировать анимации и отправлять Даниилу записи того, как они работают.
Затем мы обсуждаем какую музыку в игре лучше использовать. Под конец дня художник отправляет лайн Аши и набросок грустной позы главного героя.
19 июля
Я наконец починил все правки, внесённые в сценарий Даниилом и вновь показав текст, принялся за дальнейшее его написание. Тогда же художник подмечает очень нелогичный момент в сюжете.
Главный герой получил от Феба в наследство домик, который ему самому не нужен. Его подруга детства только-только вернулась в поселение и пока не нашла жильё. Но предложить ей дедов дом нельзя.
Я не просто исправил этот ляп, но сделал из такового решения полноценную концовку игры, объяснив заодно почему Даниэль не может пригласить Ашу пожить к себе.
Затем написал в сценарии третий день, а художник тем временем закончил наброски двух второстепенных персонажей. Трактирщика Роба и проповедника из Города Цветов.
Ещё тут правда был набросок дочери трактирщика.
Но полноценный спрайт этого персонажа ради экономии времени и сил было решено не делать, убрав из сценария те немногочисленные реплики девочки, которые у неё были.
Комментарий Даниила: У неё было примерно три строчки диалога.
Под конец дня я немного потусовался в чатике джема, пытаясь привлечь чуть больше внимания к нашей игре.
Даниил же занимался более полезным делом и выкатил покрас Аши, пока без теней.
20 июля
Болтаем с художником на тему того какими делать болванки для безликих третьестепенных персонажей. Пока не приходим к однозначному решению.
Тогда же я дописываю в сценарии третью ночь, а Даниил выкатывает грустный спрайт главного героя.
И вот тут возникает проблемка. Эта поза стилистически как будто отличается от всех прочих, и не в лучшую сторону.
А дело в том, что по первоначальной схеме художник рисовал спрайты в два раза большего размера чем нужно и сжимал их. Это нормальная практика, но конкретно с этой позой Даниил решил поэкспериментировать и нарисовал её в оригинальном размере.
Потому, контур стал ощущаться более толстым чем на остальных изображениях персонажа, зато проблем с анимацией данного спрайта не было вообще.
В дальнейшем было решено от такого метода работы отказаться. Хотя эту позу оставили без изменений, ибо в игре появляется она редко, да и разница в стилях там особо в глаза не бросается. Проблем же с анимацией и так в последствии стало куда меньше.
Комментарий Даниила: Это фиаско...
21 июля
Художник заканчивает первую позу Аши, я тестирую все анимации с ней, попутно добавляя в игру новые фичи.
Теперь в зависимости от говорящего персонажа цвет текста в диалоговом окне будет меняться.
Кроме того, именно в этот день я решаю наконец, что точно буду делать озвучку, пусть и через нейросеть.
Я показываю демку с первым диалогом Аши и Даниэля. Художнику голоса кажутся не естественными.
Я скидываю список всех возможных вариантов, и мы договариваемся о том, какими голосами кого из героев озвучивать будем, после чего я делаю набор реплик Аши для примера.
Под конец дня Даниил скидывает набросок боевой позы главного героя
22 июля
Я предлагаю добавить в сюжет ещё одну секретную концовку, в которой Даниэль при определённых выборах игрока сможет поступить очень аморально, предав друга трактирщика и выдав его церкви выживания, обвиняя в ереси.
Художнику концепция не понравилась, ибо поступок сей портил атмосферу игры и сильно выбивался из характера главного героя. В целом я был согласен и такой вариант развития сюжета делать мы не стали.
Комментарий Даниила:Если бы для читателя это было первой концовкой, то думаю у него пропало бы желание играть дальше.
Художник показывает набросок Сирены - путешественницы, которая встретилась Фебу во время странствий.
Я же поздней ночью заканчиваю сценарий и отправляю его Данилу на оценку.
23 июля
Я безбожно туплю. Даниил раз за разом критикует сценарий, а если точнее, ту его часть где Аша признаётся главному герою в любви. Как бы я не пытался, естественной сделать эту сцену не выходит.
В конце концов художник сам становится немного сценаристом и пишет этот диалог, а я лишь стилизую его, убирая лишнее и делая речь героев немного живее.
Комментарий Даниила: Я пытался.
Затем Даниил показывает концепт Флорэль - богини из Города Цветов.
Я же делаю ещё одну карту- домик Аши который потребовался после небольших изменений в сюжете хорни эпилога.
А под конец дня художник скидывает покрас боевой позы главного героя
24 июля
Обсуждаем на каких платформах будем публиковать игру. Я решаю не делать андроид версию игры по причине огромного количества проблем как с самим портом, так и с публикацией в Гугл Плей.
В этот же день Даниил заканчивает воодушевлённый спрайт Аши.
25 июля
Даниил внезапно вспоминает что на руках главного героя в изначальном дизайне есть браслеты, но у некоторых поз они пропадают. Художник быстренько чинит этот косяк, я тестирую анимации исправленных спрайтов, дальше исправление ошибок анимации.
Примерно в это же время полностью завершается работа над боевой позой.
Затем чутка обсуждаем интерфейс и в результате дискуссии на тему цвета рамки у окна, я решаю дать игроку возможность самостоятельно его менять.
В этот же день появляется первый набросок Мии, который я прошу доработать.
Для тех же кто вдруг не знает, что это за персонаж немного поясню.
Эмилия Сайл (Мия) – является лицом вселенной Оазиса. Из всех созданных мной героев, этот самый любимый. Количество постов с ней в группе настолько большое, что некоторые подписчики сообщества, вообще не запускавшие ни одну из игр с этой девушкой в сюжете, всё равно представляют кто она такая и какой имеет характер.
И ещё появляется набросок Нинэль – девочки которую Феб пытался во время странствий спасти от бездушной.
26 июля - 31 июля
Поскольку сюжет завершён, а спрайты пока готовы не все я беру небольшой перерыв и разве что тестирую новые анимации.
Художник тем временем заканчивает Лоуренса и старого Феба.
1 августа
Я начинаю собирать игру. Делаю из тех спрайтов что есть пролог и первый день истории. Делаю первую концовку и естественно всё это озвучиваю нейронкой.
Художник делает лайн приунывшей позы Лоуренса и кидает исправленные анимации остальных его спрайтов.
2-3 августа
Все спрайты Лоуренса включая уныние и боевую стойку готовы.
А у меня, по причине фатального бага движка падает исходник! Сердце в груди стучит как бешенное, я судорожно проверяю файлы флешки, надеясь, что резервная копия была сделана не слишком давно.
К счастью так почти и оказалось и после некоторых манипуляций с перекидыванием файлов из мёртвого исходника в живую копию я практически ничего не потерял из прогресса.
4-6 августа
Художник закончил все спрайты молодого Феба. Причём любопытный факт, внешность этого персонажа отсылает на аниме «Берсерк», а внешность Лоуренса на игру «Ведьмак».
Комментарий Даниила:Честно говоря, грустная поза Лоуренса и боевая поза Феба вышли неудачно. У Лоуренса лицо не похоже на него, а у Феба броня и сама поза плохо нарисовано.Насчет отсылки на Ведьмака, она получилась случайно. Я думал Лоуренса сделать похожим на персонажа Оду Набунагу из аниме «Скитальцы», но вдруг решил нарисовать его по памяти и получился Геральд.Отсылку на «Берсерк» сделал уже намеренно. Почему бы и нет?
Дальше Даниил скинул скетчи стражника и служителя, лайн богини и покрас проповедника.
Тем временем я сделал второй день и начал готовить ночь, но там возникли проблемы с нехваткой графики болванчиков.
7 августа
Был готов предварительный покрас стражника, который в последствии было решено скорректировать по цветам. Изначально вставки на броне были оранжевыми.
Но ради лучшей сочетаемости с цветом свечения глаз, художник сделал их синими.
Тем временем я закончил сборку первой ночи.
Затем Даниил скинул новый скетч Мии, и на этот раз я полностью его одобрил!
Потом покрас, который тоже вопросов не вызвал.
И наконец рендер с эмоциями и анимациями.
8 августа
Даниил заканчивает спрайты служителя, богини, проповедника и трактирщика.
Тем временем я пропустив середину игры, на которую пока не хватает графики заканчиваю сборку четвёртых дня и ночи, а так же оставшихся концовок.
Примерно к этому моменту я начинаю в полной мере осознавать насколько это нудный, монотонный и долгий процесс. Сначала реплики нужно вставить в игру. Протестировать что они корректно отображаются, и что эмоция спрайта к каждой из реплик подобрана верно.
Потом каждую реплику нужно вручную запихать в нейросеть. Сгенерировать запись несколько раз, чтобы добиться нужной интонации, а ведь генерация происходит не мгновенно и на каждую из полутысячи реплик в этих кусках сюжета, мне приходилось тратить минуту, а то и две.
Затем записи нужно было из формата mp3 конвертировать в ogg, благо тут всё делалось быстро. После чего аудиофайлы нужно было опять же вручную расставлять в исходнике игры. А потом опять тестировать проект, чтобы убедится в корректном звучании.
Потому, с уверенностью могу сказать, что этап сборки для меня был самым долгим и сложным. Работать приходилось по 12-14 часов в день и тем не менее, на данном этапе разработки полностью готовы, иначе говоря добавлены в код, проверены и озвучены вот эти куски сюжета:
Ещё тут возникают небольшие трудности с моментом, когда Аша роняет сумочку во время второго дня.
Картинку упавшего предмета на тайлах я сделал, но вот у спрайта Аши в этот момент сумочка не пропадает. А исходника с нужными слоями той позы у художника уже нет. И тратить время на изменение полноценного, отрендаринного и анимированного изображения человек не хочет.
Но оставлять так мне кажется неправильным и примеряв ненадолго роль художника кривыми ручками я таки убираю сумку.
Даниил тем временем кидает покрас Сирены и Нинэль.
11 августа
Художник заканчивает работу над спрайтами! И хотя из-за ограничений лора я боялся, что будут проблемы с индивидуальностью героев. (На острове где происходят события люди в основном сероглазые и с серыми же волосами)
За счёт небольших компромиссов с цветом волос и крутейших образов, которые Даниил придумал посланцам Оазиса, получилось всё в этом плане очень даже неплохо.
Третьестепенных же героев мы наконец решаем делать не болванчиками, а просто силуэтами.
Комментарий Даниила: Кто помнит игру Shadow Fight?
Я собираю в конструкторе персонажей пиксельные версии всех героев, которых ещё не успел сделать. Выставляю на тестовой карте и проверяю анимации. Всё работает без ошибок.
А Даниил тем временем заканчивает хентайный арт.
Комментарий Даниила: И это поза 69... РЫБА!
12 - 13 августа
Даниил начинает рисовать и заканчивает постер.
Комментарий Даниила: Мне нравится, как я подобрал тут цветовую гамму.
Затем он делает для игры меню, экспериментируя с форматом шрифта.
И даже пытается сделать забавные пьющие версии Даниэля и Аши в виде чибиков, для хорни эпилога, но уже не успевает.
А вариант сломать у пьяных героев не только стиль, но анатомию с рендером я отвергаю.
14 августа
Я заканчиваю сборку и публикую игру везде где только можно.
И тут же оказывается, что опубликовал я не везде. Организация джема даёт список ещё из четырёх сайтов где я игру не выкладывал, и говорит участникам что на доработку игры выделено ещё два дополнительных дня.
Дополнительное время
Я решаю, что буду менять игру только если кто-то найдёт там баги. Художник тоже не хочет уже ничего дорабатывать. Все устали и бежать ещё сто метров после марафона нету никакого желания.
Но Даниил всё же скидывает игру другу, который говорит мол концовка хорошая слишком скомкана. Я самостоятельно пробегаю проект и нахожу больше четырёх ошибок.
В это же время игру проходят на стриме, где из-за уточнения о желании игрока видеть 18+ контент постоянно идут вопросы о его наличии, ведь картинка то хентайная всего одна и получить её можно далеко не при каждом прохождении.
Правда сам по себе стрим оказывается живым, весёлым, и даже порождает локальные мемы о Финесе, Фербе и налогах.
Под конец выданного на доработку срока, я таки выкатываю патч к игре, убирая баги, добавляя небольшой диалог после постельной сцены и перемещая вопрос о 18+ контенте из начала игры ближе к самой картинке. Публикуюсь теперь уже точно везде, следуя рекомендациям организаторов форума.
Даниилу не нравятся изменения в концовке, но менять что-то уже поздно.
Комментарий Даниила: надо было поставить плашку о 18+ контенте перед сценой в трактире т.к. весь этот день ощущается как ova серия на пляже из аниме. По сюжету же конфликт ведь исчерпан. По моему видению проекта если игрок не хотел видеть 18+ контент, то этот эпилог бы автоматически убирался.
Итоги
Что могу сказать относительно данного события? Было весело! Было сложно. Мы много работали и смогли-таки довести проект до релиза. Где-то пришлось пойти на компромиссы, где-то были ошибки, но факт остаётся фактом.
Мы в вдвоём смогли за месяц сделать полноценную визуальную новеллу с нелинейным сюжетом длинною в полтора, а то и все два часа. Успешно всё это дело опубликовали, собрали какую-никакую обратную связь и продолжаем её получать!
А если и вы хотите поиграть, или просто больше информации получить, вот все нужные ссылки:
Не в стиме. Скип
А почему не в стим?
Игра бесплатная, а денег на публикацию в Стиме нет)
@Sibi вот смотри, тут два обалдуя игру за месяц сделали. Ты давай там, поднажми, покажи хоть демку!
Интересно и мило.
Кстати, почему не ИИ-арты? Не в обиду художнику, просто интересно. Озвучку сделал, значит технология для тебя не табу. И почему именно рпг-мейкер?
РПГ мейкер потому, что я этот движок знаю и люблю. А ещё потому, что в игре есть сцены с движением множества героев, которые в том же Ренпай не показать.
Арты рисовал человек, потому, что у него это выходит раз в сто лучше чем у нейросеть.
А озвучку делала нейросеть, потому, что очень сложно найти в ограниченные сроки актёров озвучки, которые согласятся работать исключительно на энтузиазме и надежде выиграть приз. Да и делить в случае чего выигрыш на двоих ещё ничего, а вот если в команде 4-5 человек, цифры будут совсем другими)
За статью плюс. Уникальная.