Перевод игр на unity

Те кто знаком с Unity знают, что написание скриптов происходит при помощи языков C# и JavaScript. На самом деле языков куда больше и в статье мы расскажем вам об этом.

Движок поддерживает несколько популярных языков программирования, так что вам не придется учить новый язык с нуля. Нужно только выбрать один из языков, которыми уже владеете, «прокачать» его и можно начинать экспериментировать. Причем дело не сводится только к C#, нормально работать с Unity можно и с использованием JavaScript, Python и ряда других языков, на этом сегодня остановимся подробнее.

Если владеете этим языком программирования, то сможете использовать потенциал Unity на 100%. По сути, все библиотеки Unity написаны именно на C Sharp. В Unity используется Mono – open-source проект, являющийся одной из вариаций Microsoft. NET.

C Sharp – довольно простой в освоении язык, к тому же вам не нужно знать его досконально. Для работы с Unity достаточно базовых навыков. Его синтаксис схож с C++, Java, так что если владеете одним из этих языков, то освоить C Sharp будет еще проще.

В Unity в роли основного может быть несколько языков. Многое зависит от команды разработчиков, их целей.

Язык выпущен в 2011 г., автор – Родриго де Оливейра, этот же человек в прошлом активно работал над Unity. Синтаксис Boo – нечто среднее между IronPython и CPython, через настройку компилятора его можно сделать динамически-типизированным хотя по умолчанию он таковым не является.

Язык прост и удобен, синтаксис не перегружен сложными предложениями. В Unity он поддерживался до тех пор, пока над платформой работал его автор. Как только Оливейра ушел из команды, поддержка Boo была прекращена.

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

JavaScript

Наряду с C# был базовым языком Unity. В платформе использовался UnityScript, этот язык несколько отличается от классического JS. US правильнее было бы назвать специальной версией JavaScript синтаксис схож, но отличий хватает. Например, в US отсутствует возможность переназначения переменных, нельзя использовать необязательные точки с запятой.

До недавнего времени коды скриптов давались как на C#, так и на UnityScript. Но в последнее время от US команда Unity отказывается. Причем не просто прекратили его поддерживать, а активно переводят все скрипты на C# и в будущем UnitySript будет искоренен полностью. С середины 2017 г. авторам скриптов рассылается предупреждение о необходимости перевода кода в C#. Так что, если собрались изучать этот язык, лучше оставьте эту затею.

Обойти это ограничение можно через компилятор на GitHub, специально ограничивать использование JS в Unity никто не собирается. Но работать с таким «костылем» все же не так удобно.

Lua – довольно специфический язык с однообразным синтаксисом, широко используется разработчиками игр. Именно на Lua создана большая часть модов для World of Warcraft. В других проектах этот язык часто используется для написания AI.

Что касается Unity, то в платформе используется специальный интерпретатор MoonSharp, чтобы можно было подключить сторонний код, написанный на Lua. MoonSharp не стоит рассматривать как замену C#.

IronPython и IronRuby

Оба языка – результат реализации Python и Ruby соответственно на платформе .NET. Чтобы использовать их в Unity придется немного повозиться с подключением нужных библиотек , их можно найти на GitHub. Все материалы в свободном доступе.

После подключения обоих языков можно будет вызывать скрипты, написанные на них, прямо из C# кода. Бонусом получим возможность вызова .NET библиотек из Python.

Если сравнивать скорость и технические возможности, то Rust сопоставим с С++, язык не имеет проблем с безопасностью, скоростью и параллелизмом. В прошлом его называли неплохим вариантом для разработки ядер ОС.

В среднем 1.0-1.5% программистов регулярно используют Rust, пик популярности еще впереди, поэтому не стоит обращать внимания на столь незначительный процент. Функции и методы можно вызвать из Unity кода, но напрямую писать их не выйдет. Тем не менее, и такой уровень поддержки Rust отметить стоит.

Использование этих языков стало привычной практикой для проектов, в которых важна скорость и надежность работы. Это универсальный язык, используется не только в разработке игр, но и в разработке операционных систем, прикладного ПО – вариантов применения масса. В Unity поддержка этих языков реализована «из коробки», то есть можно сразу переходить к созданию плагинов.

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

Заключение

Если собрались работать в Unity, то придется освоить C#, игнорировать этот язык не получится. Зацикливаться только на нем не обязательно, платформа поддерживает разношерстные языки программирования, так что каждый найдет вариант себе по душе. Исключением является разве что JavaScript. От него команда Unity решила отказаться и в будущем US вряд ли вернется, так что его для работы с Unity изучать не стоит. В остальном ограничений нет, работать можно с любым из перечисленных языков.

Unity — один из самых популярных игровых движков среди независимых разработчиков. Это мощный инструмент, открывающий доступ в игровую индустрию даже самым мелким издателям и разработчикам-одиночкам.

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

Это относится и к локализации, благодаря которой вы можете познакомить со своей игрой весь мир. Однако нужно быть осторожным, ведь локализация игры — сложный процесс. Давайте рассмотрим наилучший способ выполнить её в Unity.

1. Используйте расширения Smart Localization и I2 Localization (но аккуратно)

Smart Localization (бесплатная и платная версии)

Хорошим началом локализации проекта Unity будет выбор готового расширения под названием Smart Localization, разработанного janeTech. У расширения есть две версии: бесплатная и платная версия Pro.

Вот что можно доверить Smart Localization:

  • Создание структуры папок для разных языков.
  • Импорт и экспорт файлов

И на этом всё. Даже не тратьте время на использование функции перевода, предоставленной Microsoft Translator. Автор говорит, что она предназначена только для создания временных переводов в процессе разработки, а не финальных переводов. Но даже при её использовании в этом качестве она может вызвать проблемы с длиной текстовых строк и размером игровых элементов.

I2 Localization (45$)

Среди платных ассетов определённо полезным будет I2 Localization, разработанный игровой студией Inter Illusion.

Наиболее удобными функциями этого ассета являются синхронизация с электронными таблицами Google и автоматическое отображение текста справа налево для арабского.

«I2 Localization в целом прекрасный инструмент для локализации. [. ] Первое и главное — это возможность импорта данных непосредственно из Таблиц Google даже после выпуска игры. Это чрезвычайно полезно, потому что большинство компаний-локализаторов отдаёт результаты в файле Excel, который можно быстро перенести в Таблицы Google и импортировать все данные.

Вторая функция, которую я люблю, позволяет обрабатывать hardcoded-текст в коде. Вместо того, чтобы создавать конструкции из циклов или switch, можно использовать единственную строку для перевода текста: I2.Loc.ScriptLocalization.Get(»»);».

Читайте также:  Слово зашифрованное с помощью кнопок телефона

Оба расширения популярны среди разработчиков Unity (в особенности бесплатная версия Smart Localization, по понятным причинам). Это полезные инструменты, но применяйте их аккуратно. Ни одно расширение не решит всех вопросов локализации, и уж точно не выполнит процесс локализации за вас.

2. Наймите профессиональных переводчиков

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

Подготовьте первый черновик переводов ещё до начала разработки.

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

Если вы займётесь локализацией после завершения разработки, то это обернётся кошмаром.

3. Выберите правильный формат текстовых строк

После начала разработки первое, что нужно сделать с точки зрения локализации — выбрать способ форматирования текстовых строк. Здесь вы делаете выбор не только с точки зрения разработки: это определит, насколько просто или сложно будет добавлять новые языки в игру в будущем или изменять существующие переводы.

Unity поддерживает множество форматов, самые популярные из них это:

  • JSON
  • XML
  • YAML
  • CSV

Можно также создать свой собственный формат, если хотите. Однако при этом вероятны ошибки, и это один из самых сложных вариантов для локализации. Поэтому в этой статье мы не будем его рассматривать.

Если вы разрабатываете игру на JavaScript, то правильнее всего будет использовать JSON. Это простой и лёгкий формат, используемый множеством разработчиков в течение долгих лет. Кроме того, он быстр в обработке. Кроме преимуществ для разработчика, он очень лёгок в чтении даже для тех, кто не занимается разработкой. Это важный плюс для будущих переводов и правок.

Многие разработчики по-прежнему работают с XML, и это хороший выбор, если вы предпочитаете работать именно с этим языком разметки. Это не самый эффективный язык и его сложнее читать, так что учтите это при создании игры.

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

4. Определитесь со структурой строк

Подбор самого эффективного способа структурирования строк может стать настоящей проблемой. Для этого процесса нет чётко заданных инструкций. Unity предоставляет разработчику свободу в выборе структуры. Свобода — это, конечно, всегда хорошо, но она и увеличивает вероятность ошибок.

Существует три основных фактора, влияющих на структуру строк:

Для большинства игр (в которых выбор языка сохраняется в самом начале) можно хранить строки в отдельных файлах для каждого языка (например, en.json, es.json, fr.json и т.д.). Это наиболее продуктивный способ разделения строк по языкам, чтобы игре не требовалось обрабатывать ненужные дополнительные файлы.

Затем нужно подумать об идентификаторах строк. Объём этой задачи сильно зависит от количества текстовых строк в игре. Стремитесь предугадывать проблемы при создании ID строк, давая каждой из них уникальный подробный идентификатор, позволяющий с лёгкостью найти нужную строку в будущем.

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

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

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

5. Создавайте большинство компонентов локализации в Unity

Unity позволяет создавать компоненты, что значительно уменьшает объём разрабатываемого вручную кода. Это также снижает риск возникновения ошибок и экономит время.

Подробно о компонентах можно почитать на странице ресурсов Unity. Однако в этой статье мы сосредоточимся только на нескольких задачах:

  • Возможность смены языка пользователями
  • Сохранение выбранного языка
  • Автоматический выбор языка при перезапуске игры
  • Загрузка правильной строки для каждого значения

Благодаря компонентам Unity можно решить все четыре задачи одним простым действием!

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

Способ выбора дизайна и реализации этой возможности больше относится и к UX, и к локализации. Здесь важно сохранить выбранное игроком значение (если оно было выбрано) и сохранить его как новое значение по умолчанию. После этого вам не придётся задавать один и тот же вопрос при каждом запуске игры.

Чтобы сделать это в Unity, можно создать компонент Master для назначения языка по умолчанию. Если пользователь решает сменить настройку языка, то новый язык назначается компоненту и обрабатывается как язык по умолчанию.

6. Локализация визуальных элементов в Unity

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

  • Стиль
  • Языковая поддержка
  • Размеры шрифтов
  • Размеры файлов

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

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

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

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

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

Самое важное — не пропустить текстовую графику, влияющую на геймплей. Это может быть что-то простое, вроде элемента UI внутри мини-игры, но вы будете жалеть о том, что упустили такие мелкие детали.

Читайте также:  Биллинг адрес карты сбербанка

Как локализовать текстовую графику в Unity

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

  • Создание атласов в упаковщике спрайтов (Sprite Packer)
  • Создание отдельной графики и вызов её при необходимости
  • Замена графики текстом и элементами UI

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

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

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

7. Используйте AssetBundle движка Unity

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

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

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

Итак, это была инструкция для начинающих по локализации игр в Unity. Плохие новости в том, что невозможно выполнить её в одиночку – вам необходимы профессиональные переводчики. Однако, есть и хорошие новости: Unity делает управление процессом локализации гораздо проще.

Но движок всё-таки не может научить вас делать локализацию правильно, так что обратитесь к тем, кто поможет вам адаптировать игры под иностранную аудиторию.

Вы можете помочь и перевести немного средств на развитие сайта

Unity — один из самых популярных игровых движков среди независимых разработчиков. Это мощный инструмент, открывающий доступ в игровую индустрию даже самым мелким издателям и разработчикам-одиночкам.

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

Это относится и к локализации, благодаря которой вы можете познакомить со своей игрой весь мир. Однако нужно быть осторожным, ведь локализация игры — сложный процесс. Давайте рассмотрим наилучший способ выполнить её в Unity.

1. Используйте расширения Smart Localization и I2 Localization (но аккуратно)

Smart Localization (бесплатная и платная версии)

Хорошим началом локализации проекта Unity будет выбор готового расширения под названием Smart Localization, разработанного janeTech. У расширения есть две версии: бесплатная и платная версия Pro.

Вот что можно доверить Smart Localization:

  • Создание структуры папок для разных языков.
  • Импорт и экспорт файлов

И на этом всё. Даже не тратьте время на использование функции перевода, предоставленной Microsoft Translator. Автор говорит, что она предназначена только для создания временных переводов в процессе разработки, а не финальных переводов. Но даже при её использовании в этом качестве она может вызвать проблемы с длиной текстовых строк и размером игровых элементов.

I2 Localization (45$)

Среди платных ассетов определённо полезным будет I2 Localization, разработанный игровой студией Inter Illusion.

Наиболее удобными функциями этого ассета являются синхронизация с электронными таблицами Google и автоматическое отображение текста справа налево для арабского.

«I2 Localization в целом прекрасный инструмент для локализации. [. ] Первое и главное — это возможность импорта данных непосредственно из Таблиц Google даже после выпуска игры. Это чрезвычайно полезно, потому что большинство компаний-локализаторов отдаёт результаты в файле Excel, который можно быстро перенести в Таблицы Google и импортировать все данные.

Вторая функция, которую я люблю, позволяет обрабатывать hardcoded-текст в коде. Вместо того, чтобы создавать конструкции из циклов или switch, можно использовать единственную строку для перевода текста: I2.Loc.ScriptLocalization.Get(»»);».

Оба расширения популярны среди разработчиков Unity (в особенности бесплатная версия Smart Localization, по понятным причинам). Это полезные инструменты, но применяйте их аккуратно. Ни одно расширение не решит всех вопросов локализации, и уж точно не выполнит процесс локализации за вас.

2. Наймите профессиональных переводчиков

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

Подготовьте первый черновик переводов ещё до начала разработки.

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

Если вы займётесь локализацией после завершения разработки, то это обернётся кошмаром.

3. Выберите правильный формат текстовых строк

После начала разработки первое, что нужно сделать с точки зрения локализации — выбрать способ форматирования текстовых строк. Здесь вы делаете выбор не только с точки зрения разработки: это определит, насколько просто или сложно будет добавлять новые языки в игру в будущем или изменять существующие переводы.

Unity поддерживает множество форматов, самые популярные из них это:

  • JSON
  • XML
  • YAML
  • CSV

Можно также создать свой собственный формат, если хотите. Однако при этом вероятны ошибки, и это один из самых сложных вариантов для локализации. Поэтому в этой статье мы не будем его рассматривать.

Если вы разрабатываете игру на JavaScript, то правильнее всего будет использовать JSON. Это простой и лёгкий формат, используемый множеством разработчиков в течение долгих лет. Кроме того, он быстр в обработке. Кроме преимуществ для разработчика, он очень лёгок в чтении даже для тех, кто не занимается разработкой. Это важный плюс для будущих переводов и правок.

Многие разработчики по-прежнему работают с XML, и это хороший выбор, если вы предпочитаете работать именно с этим языком разметки. Это не самый эффективный язык и его сложнее читать, так что учтите это при создании игры.

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

4. Определитесь со структурой строк

Подбор самого эффективного способа структурирования строк может стать настоящей проблемой. Для этого процесса нет чётко заданных инструкций. Unity предоставляет разработчику свободу в выборе структуры. Свобода — это, конечно, всегда хорошо, но она и увеличивает вероятность ошибок.

Читайте также:  Как говорить с акцентом кавказца

Существует три основных фактора, влияющих на структуру строк:

Для большинства игр (в которых выбор языка сохраняется в самом начале) можно хранить строки в отдельных файлах для каждого языка (например, en.json, es.json, fr.json и т.д.). Это наиболее продуктивный способ разделения строк по языкам, чтобы игре не требовалось обрабатывать ненужные дополнительные файлы.

Затем нужно подумать об идентификаторах строк. Объём этой задачи сильно зависит от количества текстовых строк в игре. Стремитесь предугадывать проблемы при создании ID строк, давая каждой из них уникальный подробный идентификатор, позволяющий с лёгкостью найти нужную строку в будущем.

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

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

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

5. Создавайте большинство компонентов локализации в Unity

Unity позволяет создавать компоненты, что значительно уменьшает объём разрабатываемого вручную кода. Это также снижает риск возникновения ошибок и экономит время.

Подробно о компонентах можно почитать на странице ресурсов Unity. Однако в этой статье мы сосредоточимся только на нескольких задачах:

  • Возможность смены языка пользователями
  • Сохранение выбранного языка
  • Автоматический выбор языка при перезапуске игры
  • Загрузка правильной строки для каждого значения

Благодаря компонентам Unity можно решить все четыре задачи одним простым действием!

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

Способ выбора дизайна и реализации этой возможности больше относится и к UX, и к локализации. Здесь важно сохранить выбранное игроком значение (если оно было выбрано) и сохранить его как новое значение по умолчанию. После этого вам не придётся задавать один и тот же вопрос при каждом запуске игры.

Чтобы сделать это в Unity, можно создать компонент Master для назначения языка по умолчанию. Если пользователь решает сменить настройку языка, то новый язык назначается компоненту и обрабатывается как язык по умолчанию.

6. Локализация визуальных элементов в Unity

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

  • Стиль
  • Языковая поддержка
  • Размеры шрифтов
  • Размеры файлов

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

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

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

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

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

Самое важное — не пропустить текстовую графику, влияющую на геймплей. Это может быть что-то простое, вроде элемента UI внутри мини-игры, но вы будете жалеть о том, что упустили такие мелкие детали.

Как локализовать текстовую графику в Unity

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

  • Создание атласов в упаковщике спрайтов (Sprite Packer)
  • Создание отдельной графики и вызов её при необходимости
  • Замена графики текстом и элементами UI

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

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

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

7. Используйте AssetBundle движка Unity

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

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

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

Итак, это была инструкция для начинающих по локализации игр в Unity. Плохие новости в том, что невозможно выполнить её в одиночку – вам необходимы профессиональные переводчики. Однако, есть и хорошие новости: Unity делает управление процессом локализации гораздо проще.

Но движок всё-таки не может научить вас делать локализацию правильно, так что обратитесь к тем, кто поможет вам адаптировать игры под иностранную аудиторию.

9726552