Уже год я неторопливо разрабатывают свою небольшую инди-игру Creepy Support, о которой уже делал посты на Пикабу, о технической части например. И недавно меня в очередной раз спросили, «а ты не пробовал использовать «ИИ» для ускорения разработки»? Я начал писать человеку развёрнутый ответ, и в процессе понял, что текст разрастается до небольшого поста...
Что за игра и какой мне нужен контент
В этой игре вы берёте на себя роль работника поддержки в секретной организации, к которой обращаются люди, столкнувшихся с чем-то аномальным или паранормальным. Клиент рассказывает, что у него случилось, игрок задаёт ему вопросы и пытается выяснить детали, а потом советует, как же клиенту лучше дальше поступить.
С точки зрения геймплея это интерактивная книга, а если ещё точнее — сборник коротеньких интерактивных рассказов в формате ужастиков-крипипаст.
Каждая история — это возможность задать 10-20 вопросов, и по мере того, как игрок их задаёт — открываются новые вопросы. Но количество самих вопросов за сеанс лимитировано! Ну т.е. игрок не может просто протыкать всё подряд, приходится выбирать, о чём спросить необходимо, а какие детали можно и упустить. По результатам в каждой истории выходим на одну из примерно 3-6 концовок. Минимум 3 есть всегда, но порой удаётся разгуляться от души)
Также в игре есть глобальный сюжет и глобальные концовки, которые будет определяться от того, насколько успешно игрок закрывал обращения. Плюс справочник монстров и явлений, пополняемый каждый игровой день, а также новостная рассылка и разговоры с менеджером и иногда другими персонажами. Ну а поскольку клиенты общаются с игроком в чате — они могут присылать не только сообщения, но и фото, а также аудио-записи (всеми нелюбимые голосовухи, ага).
Возможность присылать видео сразу вычеркнул — не потяну в плане бюджета сделать что-то прикольное в достаточном количестве, а рисовать ролики в «ИИ» — с моими скиллами качество будет достаточно посредственным.
Программирование
Игра пишется на MonoGame (.NET) + UI библиотеке Myra. И так уж получилось, что я по профессии — программист, и мне просто-напросто в кайф писать код. Плюс у меня уже был опыт написания мелких бесплатных игрушек и даже выкладывания их в опенсорс, так что деятельность не совсем незнакомая. По итогу я пробовал «вайбкодить» для игры полтора раза.
Успешный опыт: написания для Myra компонента отображения анимированных текстур. Написал подробный промт со ссылкой на исходники библиотеки и описаним того, какие параметры должны быть в компоненте, что он должен делать — и получил на выход рабочий код буквально с трёх запросов. Тот случай, когда я примерно понимаю, как решить задачу, но и могу оценить, что работа может затянуться на час. А тут всё было решено буквально за 5-7 минут. Если вам интересно — описал тут этот опыт, включая дословное цитирование тех самых запросов в ChatGPT.
Неудачный опыт: попытка прикрутить Яндексовскую AppMetrica к десктопному приложению. Сдался минут через 15-20 и отложил на потом, т.к. до релиза задачка третьестепенная. И кстати, оффтоп, но я был просто поражён, насколько лучше вопрос с метриками и аналитикой решён в веб- и мобильной разработке по сравнению с десктопом. Для десктопа все сервисы или платные, или с таким минимумом фич, что польза от них становится сомнительна.
Всё! Больше мне помощь всей это LLM-ной братии пока была не нужна: мне интереснее самому построить все подсистемы, взаимодействия между компонентами, код игровой логики и т.п. Какой-то особой рутины, которую хочется отдать наружу там уже нет. И по факту, где-то осенью этого года развитие кода почти прекратилось — изредка я что-то дописываю или фикшу, но основное время работы приходится на создание контента.
Тексты историй
Основная суть, на которой держится игра. Тут я всё пишу сам по той же причине, что и код: я хотя бы в каком то объёме умею это и мне этот процесс в кайф! Так зачем мне делегировать машине то, что я и сам умею и что меня радует? Надо мной нет издателя или другой необходимости бежать к какому-то конкретному дедлайну. Поэтому 100% текста в игре написано самостоятельно.
Впрочем, частичное применение для LLM я таки нашёл: бывает так, что я уже дописал историю целиком со всеми концовками, но кажется, что «чего-то не хватает». В этом случае я скидываю в сетку синопсис истории и прошу накидать мне идей, какие ещё вопросы мог бы задать игрок? По итогу оказывается, что из примерно 10 нейросетевых идей 5 я уже реализовал, 4 — какая-то дичь или просто не подходит конкретно мне, а одна оставшаяся «звучит прикольно, но в сыром виде использовать нельзя, хотя если использовать в качестве трамплина для других идей...» В общем, LLM-ка тут мне заменяет утёнка, но текст из неё в игру не идёт ни в каком виде, только идеи.
Музыка и звук
Музыку для игры частично пишет мой брат, композитор и дирижёр, частично — нахожу в сервисах типа Zapslat, выбирая тот контент, который можно использовать в игре легально и бесплатно, лишь указав автора в титрах. Со звуками аналогично. Мне просто нет причин упражняться с промтами для звуков и музыки, если нужный контент уже создан кем-то или будет создан лично для меня ;-)
Озвучка
Те самые голосовухи в черновом варианте я пишу сам (получается кринжово и криво, но живо!), в релизе — попрошу друзей и профессиональных актёров (иногда эти множества пересекаются :D). А вот нейросетевой озвучки в игре не будет: пока что там не то качество, не те эмоции, что мне хочется, слишком заметные артефакты и т.п. Да и блин, это просто прикольно — позвать, например, какого-нибудь крутого чтеца крипипаст на озвучку игры про крипипасты ;-)
Пока не уверен, буду ли я делать англоязычную озвучку, но скорее всего нет, т.к. целюсь в основном русскоговорящую аудиторию — сеттингом является Россия, крипипасты в качестве ориентира тоже используются локальные, ну и т.п. Но с другой стороны — в игре уже есть возможность прочитать текстовую расшифровку голосового сообщения, и вот она точно будет переведена. Если вы играли в демку — в ней это фичи с расшифровкой пока нет и озвучку для демо-контента на английском я сделал сам, но в движке поддержка уже есть, так что скоро обновлю и демку.
Перевод текста на английский
Вот тут скорее всего придётся LLM-ки активно юзать, потому что по бюджету перевод такого объёма живым человеком я не потяну. Для демки перевод вообще был сделан через Google Tranlsate, лол... Кстати, вы знали, что он умеет принимать табличные файлы, например из того же Excel?) Я вот раньше не знал.
Ну а вычитку результата я буду делать сам, плюс вызвалась помочь моя жена, у которой профильное языковое образование и уровень английского позволял в прошлом вести коммерческие переговоры с англоговорящими клиентами, так что думаю, как-нибудь с ней справимся.
Графика
Пу-пу-пу… вот тут мы ступаем в область, в которой я сам абсолютно некомпетентен и где сложно найти что-то готовое. Давайте разобьём и тут всё на несколько подразделов, что потом если и холиварить, то предметно.
Графика: интерфейс
Тут моих навыков в графическом редакторе пока хватило: референсом стал стиль Windows 3.X, воспроизвести его было несложно даже руками с моим радиусом кривизны.
С иконками поступил также, как с звуковыми эффектами и музыкой: брал их на сервисах типа Freepik, Flaticon, Freeicons, внимательно проверяя лицензию и выбирая те, где возможно бесплатное коммерческое использование лишь за упоминание в титрах.
Графика: ключевой арт, он же заставочный экран
Генерация нейросетками. 50+ попыток, куча референсов, разных промтов, немного Фотошопа Gimp’а — и вот результат, который вы уже видели. Изначально я планировал его использовать только как референс для живого художника, но за время создания и использования его в разных материалах настолько прикипел к этой картинке, что перерисовывать уже просто жалко. А вы что думаете? Бросилась ли вам в «нейронность» картинки ДО того, как вы узнали, что это нейронка?
Графика: лица клиентов
Здесь я тоже без зазрения совести использовал нейросети: на экране картинки занимают примерно 50x50 пикселей:
Важной информации или художественной ценности для истории они не несут, просто позволяют легче и быстрее находить игроку нужный чат. Впрочем, ко мне уже пришёл в комментариях англоязычный игрок, настаивающий, что если эти иконки не перерисовать реальным художником — это утопит игру и все мои труды пойдут насмарку :( Согласны с ним?
Графика: присылаемые игровыми клиентами фотографии и скриншоты
Эти картинки как работают на атмосферу, так и порой содержат намёки на то, как игроку стоит поступить чтобы выиграть.
И здесь решение гибридное: где-то я сам делал скриншоты и фотографии, редактируя их содержимое, где-то мои фотографии обработаны «ИИшкой» для изменения каких-то деталей, а где-то — и сгенерированы ей же с нуля, благо ряд таких сервисов позволяет коммерческое использование результата их работы. Фотографии показываются в чатики, и по клику открываются в модальном окне примерно на половину экрана, поэтому если не слишком долго в них вглядываться, огрехи будут незаметны.
К тому же, иногда неидеальность генерации иногда даже работает на атмосферу: вот например здесь надпись ДОЛЖНА по сюжету быть кривой, и мне даже не нужно было что-то ещё специально дописывать для её генерации :D
И вот тут я в затруднении: с одной стороны, было бы круто потом все скрины сделать в одном стиле, например заказать у реального художника сделать единообразные изображения. Но: мне кажется, что учитывая сеттинг игры почти любая стилизация картинок (в пиксельарт например) будет мимо, и в идеале мне нужен фотореализм. Стоил ли оно того (усилий, денег, времени)? Я пока не знаю. Решение ещё не принято, и было бы интересно послушать, что вы думаете по этому поводу.
При этом я точно знаю, что слайдшоу для интро и концовок я буду заказывать у реального живого художника, тут без вариантов.
Единственное здесь применении «ИИ» — генерация картинки с лиминальным офисом, на фоне которой я читаю текст. Но я практически уверен, что об этом никто из смотревших трейлер не догадался ;-)
Кстати, я уже писал про создание англоязычного трейлера, но если вам интересно — могу сделать пост и про то, каких усилий стоило сделать приемлемый трейлер для такой нифига не динамичной игры. Пожалуйста, напишите в комментариях, надо оно или нет?
Маркетинг и продвижение игры
Область, которую я с огроменным удовольствием бы делегировал «ИИ», но я не знаю ни одного сервиса, который бы это умел. Поэтому по старинке, ручками, ручками...
Вместо итога
Мне кажется, что ситуации с ненавистью к «ИИ» как инструменту для большинства сродни отторжению к «компьютерной графике» в кино. Люди говорят, что «не любят компьютерную графику, она всегда хуже реальных декораций и аниматронных кукол», но подразумевают, подчас неосознанно, что они не любят ПЛОХУЮ компьютерную графику. Когда же она сделана хорошо, и ты не можешь провести явную грань и угадать, что в кадре реально, а что нет — то и отторжения она не вызывает.
И мне кажется, что ситуация с «ИИ» для многих аналогична — большинству не нравятся именно водянистые нелогичные тексты или явно косячная графика, а не инструмент, который использован для их создания. Так что закончу классикой — цитатой с башорга:
xxx: У плохого мастера всегда инструмент виновал
xxx: *виноват
xxx: Долбаная клавиатура!