Выполняю обещание. Спасибо, DTF!

Выполняю обещание. Спасибо, DTF!

Две недели назад под новостью о начале фестиваля варгеймов я оставил комментарий, что и у моей игры Knight's Errand появилось демо в рамках фестиваля. Сначала я встретил поддержку, но потом комментаторы заметили, что демо не поддерживает русский язык и активно указали на это. Когда увидел комментарии об этом утром, то было уже поздно. Поэтому решил, что лучшим выходом из ситуации будет прислушаться и добавить локализацию в следующем обновлении.

Выполняю обещание. Спасибо, DTF!

Говорю искреннее спасибо всем, кто привлёк внимание к проблеме. Я позже заглянул в админку Steam и увидел, что подавляющая часть трафика на страницу пришлась на Штаты из Азии или из Восточной Европы почти никого не было, хотя там как раз моя основная аудитория.

Переходы с DTF чуть скорректировали ситуацию, но в будущем я надеюсь увидеть более типичное для Steam распределение по странам. 
Переходы с DTF чуть скорректировали ситуацию, но в будущем я надеюсь увидеть более типичное для Steam распределение по странам. 

Я передохнул пару дней после напряжённой работы перед фестивалем и приступил к внедрению системы локализации. Это уже вторая моя игра, но в моей предыдущей игре - Doodle Cats мы намеренно избегали использования языка, чтобы сделать её как можно более доступной и универсальной. Тем не менее оказалось, что сама по себе локализация подключается в Godot проще простого.

Вам нужен csv файл, который содержит ключи и их перевод на разные языки. Вы импортируете его в движок как CSV Translation и дальше Godot сам разделяет его на языковые файлы. Далее всё, что вам остаётся — подключить эти файлы в настройках проекта.

Можно настроить прямую синхронизацию с Google Sheets с помощью аддона Sync CSV для Godot
Можно настроить прямую синхронизацию с Google Sheets с помощью аддона Sync CSV для Godot
Если у вас CSV файлы выполняют другие роли помимо локализации то просто измените формат в Import As:
Если у вас CSV файлы выполняют другие роли помимо локализации то просто измените формат в Import As:
Недавно открыл для себя перекрашивание папок, стало намного удобнее ориентироваться проекте
Недавно открыл для себя перекрашивание папок, стало намного удобнее ориентироваться проекте
Чтобы добавить новые языки просто нажмите кнопку справа сверху
Чтобы добавить новые языки просто нажмите кнопку справа сверху

Теперь можно подставлять соответсвующие ключи в нужных местах проекта: либо делая это напрямую, например, в элементах интерфейса, либо в коде через функцию tr("KEY"). Для более замороченных случаев где в предложении в зависимости от языка меняется порядок слов можно использовать .format() после tr(), чтобы например отдельно обозначить подлежащее или сказуемое, но мне это пока не понадобилось.

Пример реализации в интерфейсе
Пример реализации в интерфейсе
Пример реализации в коде
Пример реализации в коде

В итоге само по себе внедрение системы локализации заняло меньше всего времени при работе над обновлением. Перевод с помощью ботов по формуле: "английский вариант + русское значение, пожалуйста, дай перевод на zh, ru, sp, pt, de, ko, fr, jp, pl, tr, uk, cs, vi" тоже не составил труда. Главной проблемой стали шрифты.

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

Наверное, по итогу сложнее всего было найти иероглифические шрифты высотой 10 пикселей, как и мой основной шрифт. Интересней всего добавлять глифы для турецкого и вьетнамского. Последний вообще оказался отдельным приключением.

Те самые вьетнамские глифы в программе FontForge
Те самые вьетнамские глифы в программе FontForge

В нём какое-то невероятное количество символов с разными чёрточками (диакритическими знаками), которые обозначают тона в слове. И пусть вьетнамская аудитория Steam составляет меньше одного процента для меня добавить этот язык было дело принципом. Одним из первых людей, кто меня поддержал был мой вьетнамский друг Нког — разработчик Legendary Hoplite и Just a Shadow Game. Он же порекомендовал мне художника, который в итоге нарисовал ключевой арт для Knight's Errand.

Выполняю обещание. Спасибо, DTF!

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

Ещё раз спасибо всем, кто обратил внимание на проблему. Я изначально хотел выстраивать проект вокруг обратной связи от игроков и благодаря вам это получается!

Если вам интересны Герои в формате Backpack Battles может опробовать демо по ссылке. Играйте, добавляйте в списки желаемого полную версию и делитесь своим мнением здесь или в личке!

Единственное предупрежу: в демо ещё очень много чего нет. Например, в следующем обновлении я планирую наконец добавить звуки. Также в будущем я планирую: улучшения в боевой интерфейс, магию, умения, предметы и прокачку героя, дополнительные расы, классы героев и существ, а также множество других мелких улучшений.

Мне будет очень интересно и важно прочитать о том, что следовало бы приоритизировать в дальнейшей разработке, а также отзывы об геймплее как таковом. Спасибо за внимание!

11
1
1
12 комментариев