Unreal tournament как поменять язык

Локализация игр в Unreal Engine 4

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

Мы работаем над игрой «Cat Movies!» в движке Unreal Engine 4. Это экономическая стратегия, в которой достаточно много текста, и его мы планируем переводить на различные языки. Как и многие другие (но это не точно, и, надеюсь, что это не так), мы решили отложить этап настройки локализации на более поздние итерации разработки и, как оказалось, зря.

Локализация в UE4 реализована шикарно, и если помнить, что достаточно весь текст, который будет переводиться, хранить в Ftext (Text в Blueprint’ах) полях, то в целом, с выхватом текста из игры нет никаких проблем. Достаточно открыть Localization Dashboard, потыкать пару кнопок — и вуаля.

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

Ребята из Epic Games упростили сборку текста до максимума, сводя все к одному клику и дальнейшему переводу. Все очень просто — для локализации используется тип данных FText (Text в Blueprint’ах), в который сохраняется текст, и этот текст в дальнейшем собирается системой локализации и предоставляется для перевода.

FText — это не стандартный тип данных, который хранит в себе данные. Он, конечно, хранит в себе данные, но не те, которые мы ожидаем.

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

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

Когда запускается сбор текста, то система локализации собирает все Text — переменные из всех блюпринтов, виджетов и таблиц, и выкатывает один огромный список текста, который можно экспортировать в *.po и переводить.

И вот тут начинается сложность. Если мы будем в каждом виджете заново писать названия отделов, то в какой-то момент в одном из виджетов название отделов будет написано не так. Осложняется это дело тем, что сами «описания» (например, описание отдела) в большом кол-ве знаков сложно отследить, чтобы везде были одинаковыми (естественно, мы так не делали). Еще больше веселья в том, что у нас большая часть виджетов используется, как шаблон, в который залетают данные из различных источников, и исходя из того, какой это был источник, меняются названия и тексты внутри кода.

Мы облегчили себе задачу, создав Data Table (таблицы данных), в которых мы начали хранить данные конкретных типов. Например, таблица отделов, которая содержит в себе название, описание, максимальный уровень, кол-во сотрудников на каждый уровень, и т.д. и т.п.

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

Читайте также:  Дни недели на кыргызском языке

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

Перевод — дело человеческое. Если будет возможность ошибиться, человеки обязательно ошибутся. И чтобы этого избежать или хотя бы минимизировать, нужно сводить все тексты к единому шаблону. То есть, вывести куда-то в одно место, откуда текст будет браться во всех частях кода. И который будет переведен лишь единожды, чтобы свести риски ошибок до минимума. Казалось бы, можно использовать DataTable, но и там кроется ряд проблем — чтобы сохранить просто названия чего-то, нам нужно создавать целые таблицы, которые будут хранить эти названия.

Поковырявшись в документации Epic Games, я обратил внимание на String Tables (далее «строковые таблицы»). Оказалось, это идеальный вариант — хранить текст в отдельной специальной для текстов таблице, которая создана именно для того, чтобы подключаться в FText — переменным. То есть, мы можем создать таблицу, которая будет хранить в себе текст. И этот текст мы можем подключать к любой переменной — будь то переменная в таблице данных, переменная в виджете, переменная в коде — все сводится к одному месту, где хранится текст.

Строковые Таблицы позволяют избегать повторения текста в проекте по нескольку раз чуть более, чем полностью, таким образом избегая ошибок.

Строковые таблицы создаются в движке, как и таблицы данных в разделе «miscellaneous»:

Заполняются очень легко — каждая новая строка должна иметь уникальный ключ, который придется придумывать самостоятельно. А сам текст уже может быть любым. Так же, в таблице можно указать отличное название пространства текста от названия таблицы, но, по нашему опыту, это не обязательно.

После того, как строковая таблица создана, текст теперь можно подключать к FText — переменной:

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

Теперь нам остается только собрать весь текст и начать с ним работать. Для этого нам необходимо запустить Localization Dashboard и начать настройки локализации. Запустить таблицу можно через меню Window->Localization Dashboard.

И перед вами откроется примерно такое окно:

В этом окне нужно обязательно указать цель (модуль), из которого будет выдергиваться текст. В нашем случае, это игра — Game.

Далее, нужно указать, откуда именно будет в модуле будет выдергиваться текст. В нашем случае, это только блюпринты, так как в сурсах мы не храним текст. Поэтому нужно указать только «Gather from Packages» и указать, в каких папках и какие файлы нам необходимо рассматривать, чтобы искать тексты.

Так же нам необходимо указать, какие языки будут использоваться для перевода и какой язык будет нативным (основным). Очень рекомендую, если вы пишите и говорите на русском языке — указывать русский язык (или любой другой ваш основной язык). Это связано с тем, что если вы не знаете хорошо английский язык, то указав его основным, вы усложняете себе перевод на английский с «английского». Поэтому, лучше заранее указать ваш язык, как основной, и все тексты писать на вашем родном языке, чтобы потом облегчить себе и другим переводы.

Так же в UE4 есть шикарная возможность создавать переводы прямо в движке, не экспортируя тексты для сторонних программ. Для этого нужно собрать весь актуальный текст в игре, нажав на кнопку №1. И после этого запустить редактор (кнопка №2):

Читайте также:  Если на языке бороздки

Откроется окно редактирования перевода на нужный вам язык.

Источник

UEngine.Ru

Русскоязычное сообщество Unreal Engine 4

Поддержка Русского языка

Поддержка русского языка должна быть однозначно!

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

Вот к примеру, есть там такое слово в «Запуске Проекта» (Project Launcher) как «Build», дословный перевод как «Строить», на данном сайте есть «Глоссарий UE4», где указано, что «Build» это «Сборка». Описание в движке корявое и не понятно. И мы сейчас ломаем голову, что это в действительности. «Стройка», «Построение» или «Сборка», а к данным словам в Русском языке, закреплены свои действия и эти действия отличаются друг от друга.

Но то мы делаем для себя, для простоты изпользования, а хочется что бы была официальная поддержка Русского языка от Epic Games. По этому я собственно и создал тему задав вопрос, что с поддержкой Русского языка и что по этому поводу говорит Epic Games может кто в курсе?! А созданный опрос, это так. Повёлся на количество пользователей в сообществе, думал, может увижу общую картину. На данный момент кроме троллей и несколько заинтересованных людей, к сожалению ничего не увидел.

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

Поддержка русского языка должна быть однозначно!

Поддержка русского языка должна быть однозначно!

Так он берет строки из этого файла.

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

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

Понимаешь в чём тут дело 🙂 По мимо языка общения, существует ещё так называемый компьютерный язык со своими терминами и значениями, так вот слово «компиляция», которая используется в информатике и относится к компьютеру, является далеко не тем, чем ты это назвал 🙂 В компьютерном языке, «компиляция», не является «сборкой», это перевод языка программирования или того что на нём написано, в «машинный код», это нужно для того, что бы компьютер понимал, что ему делать.

Ты видел эти встроенные уроки? Ты их переводил? 🙂 Много что от туда понял? %) Они ничего толком не объясняют и если их переводить на Русский язык, то делать где полную, а где частичную переделку, для того что бы ими можно было полноценно пользоваться.

Читайте также:  Английский язык учить с переводом

Мы и так знаем что там всё очень весело %) Особенно Viewport, который разрабатывали Русскоязычные программисты на нашей системе измерения, учитывая, что у Американцев своя измерительная система. Хотел бы я увидеть лицо Главного Руководителя Epic Games, когда он это увидел )))

Жизнь так устроена, что всему нужно учиться. Но если у человека нет представления и знаний в компьютере, как он устроен и функционирует, если он не разбирается в Создании Анимации,Текстур, Звуков, Дизайна и т.е., ему ещё рановато лезть в такие программы как «Игровые Движки».

Я же печатал уже по этому поводу 🙂 Как только появится поддержка Русского языка, будут появляться понятные и полные уроки на полностью Русском языке, а не частично, как сейчас к сожалению. Мало того что они частично на Русском языке, так ещё авторы толком ничего и не объясняют.

В любом случаи, скоро в России не будет такого разврата, так как делают законодательство и принимают законы в этом направлении. По сути, даже уже можно запретить любую программу в сфере предоставления услуг, которая не поддерживает Русский язык, на территории РФ. По этому это в наших с вами интересах, что бы у Unreal Engine 4 была поддержка Русского языка.

Источник

Консольные Команды

В этой статье будут описаны консольные команды в UT2004. Некоторые из них работают в UT3

Команды администратора
Команда Описание

Advanced Administrator System
adminlogin Войти как администратор (пароль, имя пользователя).
adminlogout Отключить привилегии администратора.
adminmenu Вызов меню администратора.
admin playerlist Записывает имена игроков подключенных в настоящее время, наряду с их идентификаторами, в лог-файл сервера.
admin restartmap Перегружает текущую карту.
admin switch Перезапускает сервер, используя указанный URL.
admin kick list Показывает идентификаторы в настоящее время кикнутых игроков.
admin kick Кикнуть игрока по имени или идентификатору
admin kick ban Кикнуть и забанить игрока по имени или идентификатору
admin kick session Кикнуть и временно забанить игрока по имени или идентификатору
admin map Переключает сервер на указанную карту
admin map restart Перегружает текущую карту
admin map next Переключает сервер на следующую карту в маплисте
admin user list Выдает список имен администраторов
admin user del Не используется
admin user logged Показывает список, в настоящее время залогинившихся администраторов
admin bots add Добавляет указанное количество ботов или бота по имени
admin bots kill Удаляет указанное количество ботов или бота по имени
admin bots set Установить минимальное количество игроков в игре
admin mutators used Возвращает список мутаторов используемых в настоящее время.
admin mutators unused Возвращает список мутаторов не используемых в настоящее время.
admin mutators add Добавить мутатор к игре
admin mutators del Удалить мутатор из игры
admin maplist used Показывает список карт (из маплиста) используемые в настоящее время
admin maplist add Добавить карту к маплисту
admin maplist del Удалить карту из маплиста
admin maplist find Сообщает находится ли указанная карта в маплисте
admin game changeto Переключает сервер на указанный тип игры
admin game edit Начало редактирования конфигурации (имя класса опционально)
admin game endedit Закончить редактирование конфигурации, сохраняя изменения
admin game canceledit Закончить редактирование конфигурации, не сохраняя изменения
admin game get Сделать запрос текущего значения игровой установки
admin game set Установить значение установки игры (Напр.: xCTFGame MinPlayers 4)
Пример: admin game set xCTFGame MinPlayers 4

Анимированные таунты
для людей

Источник

Поделиться с друзьями
Расскажем обо всем понемногу