Продолжение истории разработки головоломки Prism Puzzle: Laser Reflection.
Суть, крутим-вертим зеркала, сплиттеры, источник, пытаемся попасть в мишень.
1/2
Скриншот геймплея. Цветастые лучи, зеркала, призма и сплиттеры в действии
На удивление, этот этап разработки прошел без багов. Хотя может я их еще не встретил и об этом узнаю только на этапе отзывов от пользователей.
Переработанное меню выбора уровней. С выбором сложности.
На данный момент в игру добавлены 2 сложности не зависимые от прохождения другой. Вам не нужно как в титан квесте проходить всё в режиме lite, чтобы запустить hard или expert. Если Вам кажется, что lite слишком скучен, я приглашаю опробовать сложности Hard и Expert.
Hard режим:
3 жизни, вы можете несколько раз ошибиться перед решением, но прогресс уровня сброшен не будет. Количество подсказок - не ограничено. Если Вам сложно, пожалуйста, воспользуйтесь, посмотрите какой элемент стоило повернуть.
Expert режим:
Настоящий вызов для любителей сложных головоломок. 1 жизнь, 1 подсказка, права на ошибку нет и не может быть. Сможете пройти все уровни без единой ошибки? Чтож, я обязательно буду это фиксировать в обновленной аналитике.
В любом случае, я приглашаю Вас оставить свой комментарий, отзыв по игре, или просто поддержать меня плюсиком поста.
Меня посетила идея - сделать простую Top-Down стрелялку из скриншота. Сразу оговорюсь, это откровенный эксперимент на тему "а можно ли". На звание полноценной игры, или хотя бы ее альфа версии это совершенно не претендует. Даже Top-Down выбран - чтобы не сильно париться с анимациями.
И вот в субботу, делать было нечего и я решил попробовать. Для начала попросил Gemini (мне его рисунки нравятся) сделать мне скриншот выдуманной Top-Down игры про зомби. Описал примерно, что хочу видеть
Неплохо, но простенько
Не то, хотя симпатично
Совсем не то
А вот то, что надо для начала.
В общем, с нескольких попыток, получил перспективный скриншот. Для начала, вырезал героя и парочку зомби
Героиня. Да, для Top-Down это вся анимация
Зомби обычный, самый слабый
Зомби толстый и медленный. На спине видно, что знак радиации я вырезал криво
Зомби шустрый, чтобы не скучно было.
Кстати, тут я накосячил, ориентировать персонажей лучше на правую сторону экрана. Потом в коде пришлось придавать им принудительный разворот, что не очень хорошо, и я потратил 30 минут, пытаясь понять, почему стрела формируется справа от героини.
Дальше я решил, что город мне нужен побольше, с большим разннобразием домов. Скормив первую картинку в качестве референса, попросил сделать то же самое, но с другим масштабом
Совсем неудачный вариант
Вариант получше, но скучно
Вот прям хорошо.
Дальше я почистил улицу и поле от домов, и вырезал домики отдельно
Шаблон улицы
1/3
Дома и машины, как отдельные объекты
Дальше пошло мучение уже ДипСика с просьбой написать код к каждому объекту, для которого нужен был код и куча вопросов, как сделать то-то и то-то. Тут то и начали всплывать косяки моего выбора ракурса.
ДипСик решил писать с красивой разбивкой
На уровне видно расставленные здания и врагов с радиусом обнаружения
Фон я сделал одной повторяющейся картинкой, а домики и врагов расставил вручную. Довольно муторное занятие, особенно "с наскоку", без плана.
В общем, 30 минут рисования - и я получил уровень со зданиями, машинами и врагами. Отдельно замечу, что создание уровней в годоте довольно функционально, но удобным его назвать сложно. В частности, очень неудобно переносить большой кусок тайлсета на уровень. Так что рисовать длинные, насыщенные уровни может занять много времени и сил. Или рисовать тайлсеты так, чтобы можно было легко "нарезать" их удобными кусками, заранее давая тайлам нужные свойства, но для этого нужен опыт работы именно с тайлсетами и именно в годоте.
В общем, примерно к 10 вечера тот "технический минимум", который позволяет это запустить, был готов. Героиня бегала и стреляла, зомби на нее бросались и кусали за жопь.
Вот такой вот результат.
В общем, эксперимент, можно сказать успешный. Учитывая, что параллельно я смотрел видео, ел и гулял с собакой, можно сказать .что чистыми я на это потратил часа 4. Может быть, это кого то и вдохновит попробовать свои силы. Если кто-то вдруг захочет попробовать, можно загрузить с itch.io
Телеграм, ВКонтакте, Дзен, Макс — площадок становится все больше, а вот внимание аудитории по-прежнему ограничено. Что делать? Продвигать!
На Пикабу можно рекламировать свои каналы прямо в лентах сайта. Находите новую аудиторию и получайте живые переходы без сложных рекламных кабинетов.
Подойдет для:
авторских и экспертных блогов
бизнеса
медиа и новостных каналов
мемных и развлекательных сообществ
Запускается просто: добавляете ссылку, пишете заголовок и краткое описание и выбираете географию для показов. А дальше о вашем канале узнают тысячи пользователей Пикабу!
В прошлом посте я рассказал о построении новой комнаты в Unity для моего retro-fps в sci-fi сеттинге. А сейчас, после переноса моделей в игру я набросал простейшие процедурные материалы, чтобы скорректировать палитру для игры. Вот что у меня получилось:
1/2
Так же немного детализировал модель турелей, создал новую модель пола, а дальше планирую доработать стены, проходы и лестницы. Как только закончу всё, то запеку модели на low-poly и закину в Unity.
Подписывайтесь, чтобы не пропустить обновления по проекту!
Здравствуйте! Продолжаем делать игру про жуков на планете жуков. Добавили размытие на крылья во время полета - стало лучше. Доделываем ИИ для жуков врагов/компаньонов. Доделываем пыль при взлете и посадке. Также идет работа с диалогами и квестами для игрока в начале игры (познакомить с основными механиками). Убираем ошибки и баги. Работы еще много).
Это небольшая история о разработке игры Super Special Squad длиною в долгие 16 лет. Как она была (и была ли?) вдохновлена игрой Plants vs Zombies, как и почему несколько раз меняла своё название, и в какой точке истории она находится сейчас, ведь я продолжаю над ней работать даже спустя 16 лет!
Постараюсь очень коротко ввести в курс дела. Я начал свой путь разработчика игр еще в далёком 2009 на Flash, когда продал свою первую игру за $500 знаменитым ArmorGames (от чего был в неимоверном восторге). Следующим проектом была игра Heaven or Hell и лицензирование у таких гигантов как King.com (серия игр Candy Crush). После этого было еще множество проектов, но в этой статье сосредоточусь на одном - Super Special Squad и истории его разработки.
1/2
ChiChi(2009) и HeavenorHell (2010)
Как всё начиналось
Пожалуй, стоит начать с того самого 2009, когда, собственно, и вышла бессмертная классика Plants vs Zombies. Играл ли я в неё тогда? Нет. Но, так как игра была, мягко скажем, на слуху, я о ней знал, да и ролики геймплея, конечно, попадались. Мне правда сложно вспомнить всю хронологию тех событий, но я тут поднял свои пыльные архивы и постарался немного разобраться, а действительно ли я просто сел разрабатывать клон Plants vs Zombies?
Первым делом откопал свои зарисовки. Это полный хаос, но некоторые отголоски Super Special Squad можно обнаружить. Датировки нет, но так как эти скетчи соседствуют со скетчами игры Heaven or Hell, я полагаю, это примерно 2010 год.
1/3
Наброски для игры Super Special Squad из времён динозавров
По скетчам можно было бы сделать вполне однозначный вывод - вот у нас есть некая "база" с героями в левой стороне экрана, а с правой стороны на наших героев надвигаются всякие монстрики - case closed, как говорится. Но всё стало намного интересней, когда я начал разгребать свои наработки уже непосредственно во flash.
Прототип на прототипе
Судя по всему, сразу после выпуска Heaven or Hell я кинулся в разработку и прототипирование новой игры. И ей стал будущий Super Special Squad. Но в самом начале пути название было другим - Atomic Clash. Я подобрал скрины и постарался показать только наиболее интересные кейсы, но поверьте, прототипирование было масштабным и длилось годами - с 2010 по 2013. Но так всё и заглохло на некоторое время.
1/5
Ранние прототипы игры Super Special Squad
Точка старта - решение о разработке игры
Непосредственно разработка началась только в 2015 году. Мы с моим коллегой программистом копались в моих старых архивах в поисках чего бы такого сделать. И тут я вспомнил свои старые наработки в виде забавных героев, отражающих нападение монстров на базу. И тут понеслось. Игра получила ещё одно название Lethal Storm. За 2-3 месяца игра была разработана практически полностью. Был найден паблишер Y8, который попросил внести небольшие изменения, в том числе и изменить название игры. Так родилась Super Squad - небольшая, но очень забавная игра в жанре тактики реального времени про защиту от нашествия зомби, мутантов и роботов. Про спасение мира, как обычно.
1/3
Выпуск игры Super Squad от Y8
Клон ли это игры Plants vs Zombies? Я считаю, нет. Plants vs Zombies это tower defence, моя игра - скорее real-time tactics, где важнее комбинация героев и правильный тайминг использования способностей. Тем не менее, я благодарен Plants vs Zombies, т.к. она, косвенно являлась вдохновением для моей игры.
Что же теперь?
Сейчас у меня фулл-тайм занятость в одной из российских студий разработки игр. Но в свободное время я продолжаю делать игры: 1) Так я не теряю компетенцию в областях, которых не касаюсь на основной работе. 2) Это просто классно, и я не могу без этого.
Посчитав, что сделать ремейк с переработкой графики/геймплея + добавление контента в уже готовую игру это проще, чем начинать заново, я взял ту самую Super Squad и начал перенос игры с Flash на Unity. Конечно, как всегда, это оказалось не так просто, и это отнимает большое количество времени. Но результат превосходит все мои ожидания: сочные эффекты, плавные анимации, новый контент и многое другое. А главное - игра всё еще в разработке, и в итоге она будет ещё лучше! Считаю, что визуальный стиль, заложенный мною еще в далеком 2010 был настолько удачным, что и сегодня в целом работает отлично и остаётся привлекательным.
1/5
Скриншоты из игры Super Special Squad 2026
Страница Steam, вишлисты, закрытое тестирование
Игра стала доступна в Steam 12 июня. В наличии: хорошо оформленная страница, описание на 11 языках, зубодробительный трейлер и иллюстрации основных игровых фич. Маркетинг в виде публикации шортсов в YouTube/TikTok/Instagram с переменным успехом. Из этого, пожалуй, пока могу похвастаться только ютубом - некоторые шортсы набирают по несколько тысяч просмотров, но с достаточно низкой вовлечённостью. Самый успешный шортс с 3к просмотров
Super Special Squad - самый популярный shorts на YouTube
Посты в реддит так же не показывают фантастических цифр (самый успешный в районе 100 лайков), однако, отзывы исключительно положительные. Многие сравнивают с Plants vs Zombies и пророчат популярность на китайском рынке. Тем не менее, количество вишлистов за 2 недели не добралось даже до 100, что я не считаю катастрофой, но, сказать по правде, надеялся на большее :) Но история на этом не заканчивается. Разработка идёт, и я продолжу делиться успехами или провалами.
Добавил летающих врагов — комаров. Заодно починил неприятный баг, из-за которого персонаж иногда проваливался сквозь пол при загрузке уровня
Долго воевал с критическими ударами: шанс крита почему-то не рос при прокачке. Нашёл причину, переделал — теперь всё считается правильно
Подкрутил баланс опыта. Раньше первые уровни пролетали за пять минут, и игра ощущалась слишком быстрой. Теперь начало плавнее: первая локация работает как нормальное обучение
Появилась система точности. У каждого монстра есть своя "необходимая точность" — чем сильнее враг, тем она выше. Если точности у персонажа не хватает, по такому врагу будут частые промахи. Так что просто прибежать к сильным мобам не выйдет — сначала надо докачать точность через снаряжение и через нпц-улучшатора
Сделал ещё две новые локации с врагами и ресурсами — теперь готовы город и 6 карт
У торговца-улучшателя теперь куча прокачек — можно вкладываться в разные характеристики персонажа и понемногу его усиливать
Отдельно повозился с управлением на телефоне: раньше на Android не нажимались склад, деревья и руда — игра реагировала только на мышь. Починил, теперь всё работает пальцем
По мелочи: добавил возможность расширять инвентарь прямо в игре, но они пока не сохраняются после выхода из игры, завёл отдельные слоты под инструменты (кирку и топор), активные вкладки теперь подсвечиваются
Сделал в инспекторе у себя типо как выбор класса, можно выбрать маг\воин\лучник и у них от своих статов растёт урон, т.е. изначально в приложении стоит воин, т.е. у него урон растёт от СИЛЫ, 1 сила = 1 сила атаки, у лучника стат - ловкость, у мага - интеллект
Что хочу сделать дальше
Пока в игре нет анимаций — персонажи и враги двигаются без них. Это в планах, но с анимацией у меня туговато. Если есть кто-то, кто умеет в анимацию для 2D-игр и готов помочь — пишите, буду рад. Я сделаю анимацию если что сам, но не факт что она будет "классной", у монстров будет покадровая анимация, у персонажа - костная, чтобы была возможность надевать разные вещи и чтобы они отображались на персонаже, персонаж как и монстры к релизу будут ещё переработаны когда определюсь какими они точно будут к релизу, кого оставить кого добавить
В будущем планирую сделать игру серверной — чтобы в городе можно было видеть других живых игроков. У каждого будет видна надетая экипировка, так что сразу понятно, насколько человек прокачан
Ещё хочу такую систему заточки оружия: чем выше уровень заточки начиная с +4, тем ярче будет светиться оружие. Прокачанный игрок будет заметен издалека
Так же будут добавлены скилы\таланты
Потихоньку ползу к релизу, если что потом буду просто обновы клепать дополнять разным контентом, карты начиная с "волчьей" пока однообразные, это я за следующую неделю переделаю, а то был занят механиками, с дизайном пока не хотел заморачиваться да и к релизу карты буду скорее всего изменены и добавить надо будет ещё по дизайну всяких там ёлочек, кустов и т.п. мелких, так же с задним фоном пока хз он один общий, мб сделать его ещё проще, плюс игры весит валом т.к. я её не оптимизировал некоторые картинки по 1мб весят, в общем работы ещё валом, всё что криво - буду фиксить
Кто хочет может написать мне в тг https://t.me/zhe_nick скину рабочую версию под телефон, потыркаете, баги возникающие распишите если что) ЧТо нравится\не нравится, мобы слишком сильные или слабые, опыта мб сыпет валом или мало, в общем если что пишите, нужна обратная связь чтобы понимать куда что подкручивать по циферкам
Нам посчастливилось принять участие в разработке синтеза речи для новой версии игры игры Ил-2 Штурмовик — Ил-2: Корея. Это был длинный путь, но в итоге у нас получилось:
Сделать синтез на 8 языках русском, английском, китайском, корейском, японском, немецком, французском и итальянском;
В итоге пришлось работать на основе записей "профессиональных программистов" (как в старые добрые, но в этот раз это были C++ программисты-разработчики игры);
Синтез работает только на CPU практически без задержек;
Голоса умеют не только говорить, но и "кричать".
В игре на данный момент озвучиваются только игровые боты (игра сейчас в раннем доступе), но возможно когда-нибудь синтез доедет и до мультиплеера.
Как это выглядит в игре
Демонстрацию ниже для нас сделали разработчики игры. Сразу нужно оговориться, что "крик" тут немного "особенный" и скорее соответствует очень возбуждённой речи в стрессовой ситуации.
То есть, грубо говоря, в идеале должна быть довольно пунктирная речь, или очень возбуждённая пунктирная речь. Естественно в игре на это накладывается шум радио и двигателя самолёта, что несколько сглаживает углы и понижает требования к качеству синтеза.
Легенда ИЛ-2 и текущее состояние игровой индустрии в России
Ну тут я довольно мало во что играл
Оригинальный Ил-2 Штурмовик входит в "пантеон" великих игр позапрошлой итерации нашей игровой индустрии, которая немного закончилась примерно к концу нулевых. Ну то есть было и мировое признание, и миллионные тиражи (если знаете точнее — напишите) и народная любовь. В те времена Ил-2 прямо называли лучшим авиасимулятором (ключевое слово тут симулятор) и он прямо конкурировал с Microsoft Flight Simulator по уровню популярности и фанатской любви.
Если перенестись в настоящий момент, у нас наблюдается системный кризис игровой индустрии. Все более менее успешные команды в лучшем случае "сменили прописку" (почитайте фамилии в титрах таких успешных игр как Space Marine 2 или Rogue Trader). По этой причине для нас представляет особенную радость и гордость "прикоснуться" к легенде и в идеале оставить в вечности маленький кусочек своей работы в таком легендарном продукте, который сделан в нашей стране.
Пара слов про AI-slop и не только
Многих разработчиков западных AAA-игр принципиально пытались "отменить" за присутствие низкокачественных нейросетевых ассетов в играх. Тут ситуация по сути обратная, т.к. мы не пытаемся подменять творчество нейрослопом (или агрессивно резать косты, выставляя нереалистичные задачи команде разработки на фоне общего навязывания "круток" и "подписок").
По сути мы создаём контент, который бы иначе не мог бы в принципе быть создан. А именно сам контент игры по факту создаётся людьми (синтез только озвучивает то, что ему дал разработчик).
Постановка задачи
Весь проект, если коротко
В современном мире задача сделать "yet another" синтез же простая, правда? Берёшь самый модный публичный репозиторий с 100500 звёзд и самой большой LLM, берёшь, что записал диктор, и "GPUs Go Brrr", правда? Но, к сожалению, нет.
Какое-то время назад к нам обратились разработчики игры и рассказали, что хотят добавить синтез в свою игру. При этом на старте сразу обсуждался некий продуктовый список требований, при этом требования зачастую были очевидно продиктованными необходимостью:
Работа сильно быстрее реального времени без задержек (ну тут очевидно);
Работа внутри клиента игры (синтез не может зависеть от внешних серверов, да и задержка будет портить впечатление, плюс сложно масштабироваться при успехе игры);
Покрытие как минимум 8 популярных языков (тут по сути неизбежно, так как это список воюющих сторон);
Возможность гибкой озвучки имён собственных и топонимов (без этого теряется гибкость разработки нового контента);
Возможность генерировать как обычную пунктирную речь, так и "крик" (речь должна быть похожа на то, как говорят реальные лётчики).
Программа минимум — оживить общение с игровыми ботами, диспетчерами и игровым окружением. Сделать добавление нового контента не зависящим от дикторов и разработки синтеза (все же знают приколы про "билдоту" и кривые и лишние фразы озвучки в старых играх).
"Оживление" диспетчеров и ботов подразумевает, что нужно произносить всякие разные топонимы и числа в разных комбинациях, что раньше решалось конкатенацией слов, что несколько делало игру более "роботизированной" и шаблонной. То есть заранее предзаписать всё и поддерживать это потом на N языках просто технически невозможно с современными требованиями к качеству контента.
Шумность обстановки, радиопомехи, звучание речи на фоне — несколько упрощает задачу, но не решает основной проблемы. Речь должна быть чёткой и не должна нарушать погружение игрока в игру.
Поскольку подразумевается длительная поддержка и выпуск большого количества DLC, направленных на разные театры военных действий, ситуация, где нужно потом будет бегать за дикторами на всех языках тоже — совсем не очень.
В начале нашего общения у нас была гипотеза, что раз активное комьюнити игры большое, имя студии известное, какой-то бюджет есть, то мы сможем привлечь профессиональных актёров.
В итоге найти людей-носителей нужных языков в команду для проверки синтеза и собственно создания контента получилось, а вот с актёрами озвучки вышел конфуз:
Санкции плюс мало кто хочет работать с компанией из России;
Иррациональный страх актёров перед AI (небезосновательный, если послушать безумную риторику ряда заинтересованных корпораций, в части синтеза — пока преждевременный);
Ну и ... как бы помягче сказать. В списке языков для озвучки присутствует подозрительно много стран, которые в разные исторические эпохи пытались осуществить нехорошие планы, разнящиеся от простого военного поражения до полного уничтожения нашей цивилизации.
Также в какой-то момент при планировании ресурсов стало понятно, что нельзя использовать GPU. Ну вот совсем. То есть нужна кастомная, особенная, просодия ("спокойный крик"), дикторов нет, синтез должен работать на 1 потоке процессора на "калькуляторах". Отличное начало!
Карточки есть, но использовать их нельзя
Озвучено профессиональными программистами
В сухом остатке, получается, на старте мы имеем следующее:
Отсутствует возможность привлечь профессиональных актёров в нужном количестве;
Довольно сильные требования к кастомизации, портативности, поддерживаемости;
Длинный список языков.
Отсюда получается, что неизбежно использование услуг озвучки "профессиональных программистов" как в старые добрые времена игр на CD-дисках. Но на этой базе нужно ещё и научить голоса русскоязычных программистов говорить на других языках. Бонус тут состоит в том, что целевой крик тут немного проще, чем настоящий крик у профессиональных актёров.
Для начала стоит взглянуть на список языков и их фонетику:
Краткое описание фонетики языков
Если, для начала для простоты, сфокусироваться на первых четырёх языках, то видно, что все языки используют совсем разные системы письма, которые ну вообще никак не связаны (разве что исторически). Отсюда получается, что надо или пытаться приводить их к некой единой схеме "правописания" или использовать фонемы.
Но даже так, слоном в комнате является английский язык, где произношение (особенно топонимов) может вообще никак не быть связано с написанием. Отсюда нужно или придумывать свою общую схема романизации / кириллизации или просто использовать фонемы.
Всё, как обычно, упирается в наличие адекватных инструментов и простоту их поддержки на дистанции:
Для русского нет адекватных готовых общепринятых инструментов по фонемизации или латинизации, увы. Но тут всё "просто". У нас они есть. Берём наши обширные словари ударений и фонем, нейросетки для ударений и фонем (фонемы разрешаются с точностью 99% на русском, если знать ударение), передаём это всё разработчику игры, и переводим все корпуса в фонемы. Ах да, ещё у нас есть активная морфология, падежи, спряжения, согласование в роде числе и падеже — но думаю вы про это всё знаете. Дальше при появлении нового слова (допустим название населённого пункта) разработчик просто ставит ударение и прогоняет слово через фонемизатор, слушает, добавляет в игру. Все эти инструменты быстрые, но на данном моменте их наличие в клиенте пока не требуется;
Для английского ввиду отсутствия падежей в современном языке — всё по сути сводится к поиску правильного словаря. Но вот незадача, если мы идём в использование фонем, то нужно выбирать словари и фонемы так, чтобы один и тот же звук в разных языках обозначал реально один и тот же звук. По сути это, конечно, проблема, так как в английском существуют десятки диалектов и люди реально говорят по-разному. И, зачастую, словари фонем существуют все в разных форматах. Это всё, естественно приходится править руками и массово отслушивать. По сути сложность задачи тут состоит в том, чтобы найти точку, где дальше различие между звуками уже не является важным. Точность фонемных моделей тут составляет примерно 95%, то есть при добавлении нового слова часто приходится переписывать, но это лучше, чем писать фонемами руками с нуля. Ещё мозг часто взрывает то, что при внимательном отслеживании материала носители языка сами очень часто не говорят знаменитый звук θ и часто жуют все гласные и превращают их в "шва";
С китайским как ни странно всё просто. Есть по сути официальный государственный фонетический стандарт пиньинь. Есть готовые библиотеки, которые переводят китайские иероглифы (汉字) в него с расстановкой тонов. Дальше, по сути у китайцев всего около 1500 слогов (слог состоит из инициали и финали). Каждый слог можно однозначно записать фонемами, то есть существует прямой словарь соответствия (плюс символы для тонов) между слогами и фонемами (естественно не все слоги встречаются во всех тонах). Особняком стоит вопрос расстановки пробелов между словами (сами китайцы их зачастую не пишут). Пробелы помогают синтезу (как минимум в индо-европейских языках) с ритмикой и ударениями. Тут это нивелируется тонами, но мы ради интереса всё-таки решили расставить пробелы между словами (но разницы особо нет, чуть докидывает буквально). Есть незакрытый вопрос с "омографами" (иногда биграммы "знаков", 字, читаются по-разному в зависимости от смысла) и тем, что некоторые тоны не могут соседствовать друг с другом (попробуйте быстро прочитать два слога подряд третьим тоном, то есть nǐ hǎo) — но это мы уже отдали на откуп самой нейросети и носителям языка. По сути использование такого процесса упрощает поддержку, так как все носители языка априори знают тоны и пиньинь (пусть писать тоны циферками и чуть менее удобно);
С корейским языком всё одновременно и очень просто, но есть свои подводные камни. Для начала, все материалы в интернете ... это, естественно, южнокорейский язык. Но тут мы ничего не можем поделать. Письмо у корейцев фонетическое, но знаки "странные", потому что глядя на китайцев (видимо они бумагу так экономили), они решили объединять свои буквы в слоги и писать их тоже "квадратиками". То есть, по сути, надо разложить "квадратики" в обычные буквы и дальше перевести в фонемы. У корейцев есть строгие правила чтения, но там ряд звуков меняется в зависимости от контекста. По идее это можно записать в виде правил ... но мы решили этот вопрос тоже через нейросети на минимальном корпусе и сформировали словарь на все слова языка. Точность перевода получается очень высокой. Из плюсов тут нет тонов, почти нет ударения и почти нет пробелов между словами;
В сухом остатке — каждый язык мы преобразуем в набор фонем. При этом мы тщательно перебрали руками все эти фонемы, чтобы они друг другу не противоречили. Это невозможно сделать абсолютно идеально, но основные проблемы классических фонемных словарей мы победили (например палатализацию). Всегда есть тонкости и маленькие детали, от которых приходится отказываться.
Итак, со "знаками" мы разобрались. Теперь нужно что-то сделать с голосами и криком. С криком проще — нужный в игре крик можно просто записать. То есть можно записать "спокойную" и "кричащую" (возбуждённую) версию голосов. Из этого, в принципе, даже можно сделать синтез на русском языке. Но как сделать синтез на всех языках?
Тут, глобально мы перепробовали очень много всего, но можно глобально выделить три работающих подхода:
Подходы к снаряду
Изначально мы проделали большое количество экспериментов по генерации крика на основе формант. На чистых идеальных данных на одном языке (русском) — метод интересный и перспективный. Но когда мы стали пытаться накрутить наши данные на другие языки — метод перестал работать. Судя по проведённым экспериментам метод рабочий, если вы условно делаете Алису и не ограничены в записях, бюджете и количестве аудио.
Первую более-менее рабочую версию мы сделали на основе transfer learning, то есть когда мы обучали модели на публичных данных, и потом дообучали на наших голосах. Но тут проблема основная в том, что с учётом требования по крику, допустим два языка у нас получалось поселить в модели с нужным качеством. А дальше — уже модель начинала плыть, то есть данные шумноваты, их слишком мало. Оно говорит чётко, произносит все тоны и фонемы, но акцент слишком сильный. Носители языка совсем не одобряют, даже с учетом того, что ты управляешь самолётом.
В итоге мы остановились на том, что использовали нашу собственную систему синтеза и переозвучки, чтобы сгенерировать синтетический датасет для обучения итоговой модели. В итоге на основе уже синтетического датасета, сделанного из записей "профессиональных программистов", мы сгенерировали продуктовую модель на других языках.
Вместо вывода
Судьями нашей работы и работы разработчиков будут только игроки и время. В любом случае у нас на рынке есть не так много живых нетривиальных игровых проектов и поучаствовать в разработке продолжения легендарной игры — для нас большая удача и честь. Остаётся выразить надежду, что дальше будет только больше нетривиальных проектов и что кризис рано или поздно закончится.