7 порад щодо локалізації інді-ігри в Unity

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

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

Це відноситься і до локалізації, завдяки якій ви можете познайомити зі своєю грою весь світ. Проте потрібно бути обережним, адже локалізація гри — складний процес. Давайте розглянемо найкращий спосіб виконати її в Unity.

1. Використовуйте розширення Smart Localization і I2 Localization (але акуратно)
Smart Localization (безкоштовна і платна версії)

Гарним початком локалізації проекту Unity буде вибір готового розширення під назвою Smart Localization, розробленого janeTech. У розширення є дві версії: безкоштовна і платна версія Pro.

image

Ось що можна довірити Smart Localization:

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


І на цьому все. Навіть не витрачайте час на використання функції перекладу, наданої Microsoft Translator. Автор каже, що вона призначена тільки для створення тимчасових перекладів в процесі розробки, а не фінальних перекладів. Але навіть при її використанні в цій якості вона може викликати проблеми з довжиною текстових рядків і розміром ігрових елементів.

I2 Localization (45$)

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

image

Найбільш зручними функціями цього ассета є синхронізація з електронними таблицями 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 надає розробнику свободу у виборі структури. Свобода — це, звичайно, завжди добре, але вона і збільшує ймовірність помилок.

Існує три основних фактори, що впливають на структуру рядків:

  1. Мова
  2. Ідентифікатори (ID) рядків
  3. Текст
Мова

Для більшості ігор (у яких вибір мови зберігається в самому початку) можна зберігати рядки в окремих файлах для кожної мови (наприклад, 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 робить управління процесом локалізації набагато простіше.

Але движок все-таки не може навчити вас робити локалізацію правильно, так що зверніться до тих, хто допоможе вам адаптувати гри під іноземну аудиторію.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.