[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 379: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 4505: Cannot modify header information - headers already sent by (output started at /includes/functions.php:3706)
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 4507: Cannot modify header information - headers already sent by (output started at /includes/functions.php:3706)
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 4508: Cannot modify header information - headers already sent by (output started at /includes/functions.php:3706)
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 4509: Cannot modify header information - headers already sent by (output started at /includes/functions.php:3706)
GreenCubes • Просмотр темы - Записки разработчика: Строки и переводы
Страница 1 из 5

Записки разработчика: Строки и переводы

СообщениеДобавлено: 22 июл 2014, 05:35
Feyola
В этот раз я решила поделиться именно тем, что подразумевает название раздела "блог разработки". Это не анонс или новость, а просто рассказ о том, чем я сейчас занимаюсь, какие у меня проблемы и как я их решаю. Это будет совсем не так интересно как анонсы, новости и планы, это довольно скучный пост. Но я надеюсь найдутся те, кому будет интересно почитать.

В клиенте можно увидеть названия предметов в инвентаре. Эти названия нужно придумать, записать, структурировать, проверить на ошибки, и так далее. Но это только вершина айсберга. Существует множество технических строк, названия которых игроки не видят, но порядок и отсутствие ошибок в них так же важны. Кроме того, я сразу делаю перевод на английский язык и задаю объем предметов (для нового инвентаря). Об этом я и расскажу.

Русские названия предметов. (Для простоты я буду называть предметами и блоки и предметы.) За основу своего списка я взяла наш серверный . В нем около 1000 записей. Я начала с исправления множества ошибок и казусов. Многие предметы изначально (в minecraft) существовали в единственном варианте (бревно, доски, листва), позже были добавлены другие вариации. Эти предметы так и оставались просто, например, бревном или листвой, без уточнения, из какого дерева они сделаны. Предметы добавлялись порциями, и в разное время я избирала разные способы образования названий, в результате получалось так:
ИзображениеЛистья
ИзображениеБерезовая листва
ИзображениеЕловая листва
ИзображениеЛиства яблони
ИзображениеЛиства баобаба
Правильной формулировкой является «Листва чего-либо», потому что образовать прилагательное из некоторых слов может быть сложно или неприятно, например «баобабовая листва». И такие проблемы со всем подряд, от полублоков до заборов.
Еще удивительные примеры под спойлером.


Декоративные модификации блоков. Кроме исправлений и других менее массовых изменений, я решила внести серьёзное изменение стиля именования списка предметов (42 наименования), и об этом я хочу отдельно рассказать, как о изменении в новом клиенте по сравнению со старым. У нас есть различные модификации некоторых блоков, которые фактически представляют собой декоративные модификации. Это, например, мшистый, треснувший, заснеженный каменный кирпич. Пока у нас не появилось три варианта декоративных песчаников, эта проблема не стояла так остро. Само перечисление названий вызывает улыбку:
ИзображениеДекоративный песчаник
ИзображениеДекоративный гладкий песчаник
ИзображениеГладкий песчаник
А когда нашим художникам придет вдохновение на какую-нибудь декоративную модификацию, придется придумывать еще и еще странные названия с прилагательными, условно изображающими свойства блока. Чтобы решить и нынешнюю и будущие проблемы с именованием, я решила называть такие блоки "Декоративный блок (модификация)". Например "Декоративный песчаник (крипер)". Это сильно упрощает именование декоративных модификаций блоков, позволяя просто придумать существительное. Кроме того, это название не склоняется в названиях производных из материала, чтобы не усложнять именование. Наличие верхних и боковых полублоков, а так же двойных модификаций (заснеженный треснувший каменный кирпич) заставили меня сомневаться в адекватности такого принципа именования. Однако я решила это перечислением модификаций в одних скобках, например:
ИзображениеДекоративный каменный кирпич (треснувший, заснеженный)
ИзображениеПолублок декоративного песчаного камня (верхний, гладкий)
Кроме того, именование различных производных из материалов (колонны, октаблоки и т.д.) усложняет именование. Да, в случае с простыми вариантами вроде "Ступени из мшистого булыжника" старый вариант и правда лучше. Но в сложных вариантах такой принцип не подходит. Я считаю что лучше везде по одному принципу, стандартизировано, чем подходяще для каждого случая, но как попало.

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

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

Английский язык.
С английским языком все очевидно, нужно перевести. При этом у нас нет ошибок, оставшихся с майнкрафта, и даже оригинальными названиями майнкрафтовской части предметов я не обязана руководствоваться. Тут конечно же есть проблемы свойственные любому переводу, но они не очень сложные. Я узнала много нового о различиях между британским и американским английским, определилась что перевожу на американский. Позже было решено не тратить сейчас время на доведение перевода до готовности, и он был оставлен в недоделанном виде. Около 30% переведено качественно, еще около 55% переведены автоматически, и остальные строки просто пусты. Переключиться на английский язык пока нельзя.

Моя палочка в английском переводе:
Изображение

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

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

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

Re: Записки разработчика: Строки и переводы

СообщениеДобавлено: 22 июл 2014, 11:16
MacMax
Здорво!
А как будет побеждено то, что большие строки наименования не влезают на таблички и укорачиваются до двух-полтора слов?
Может отличительное прилагательное все же первым делать?
Например "Заснеженный треснувший декоративный каменный кирпич"

Правда иногда надо будет думать долго над понятными названиями. Может что-то типа "Крипер-декорированный песчаник"...

Соответственно образование имени будет по такой схеме:
Камень -> Каменный кирпич -> Заснеженный каменный кирпич
Камень -> Каменный кирпич -> Треснувший декоративный каменный кирпич -> Заснеженный треснувший декоративный каменный кирпич
во всех случаях обрезка имени до двух слов все же позволяет их отличить.

В общем, есть проблема использования наименований в малом пространстве, как правило имя там обрезано.

Re: Записки разработчика: Строки и переводы

СообщениеДобавлено: 22 июл 2014, 11:23
Nickolay_V
Честшопов же не будет в новой игре. Будут торговые хабы.

Re: Записки разработчика: Строки и переводы

СообщениеДобавлено: 22 июл 2014, 11:29
MacMax
Как я понял чест-шопы все равно оставят для малых продаж, да и в хабах такая же проблема со списком товара будет, там же надо будет в небольшом окне интерфейса уместить несколько колонок. Имя, цена за штуку, доступное количество, время действия предложения. Возможно еще и иконка товара, минимальная партия, какое-то дополнительное поле для иконок или действий.

Так, что проблема будет,

Re: Записки разработчика: Строки и переводы

СообщениеДобавлено: 22 июл 2014, 11:33
Feyola
2MacMax, да, это проблема которая требует решения. И да, Николай сказал в целом правильно. Кроме торговых хабов так же будут и торговые автоматы, которые являются прямым аналогом честшопов, их заменой. И на них конечно же эта проблема будет решена. Но для начала их надо сделать, а до этого перейти на новый клиент. Так что нужно будет сделать промежуточное решение в новом клиенте. Ну, например, при наведении на табличку показывать полный текст названия предмета, как бы плавающим в небольшом окошке. В списках в интерфейсе можно сделать примерно так же, так часто делают в интерфейсах, плюс в списках в интерфейсе можно добавлять небольшую иконку перед названием.

Re: Записки разработчика: Строки и переводы

СообщениеДобавлено: 22 июл 2014, 11:53
Rena4ka
Можно сделать уменьшение размера текста на табличке в честшопах.

Re: Записки разработчика: Строки и переводы

СообщениеДобавлено: 22 июл 2014, 11:56
OnlyAW
Переводы будут храниться отдельными файлами?

Re: Записки разработчика: Строки и переводы

СообщениеДобавлено: 22 июл 2014, 12:01
Rena4ka
Да.

Re: Записки разработчика: Строки и переводы

СообщениеДобавлено: 23 июл 2014, 07:46
Rena4ka
Кстати, вы можете «потестировать» английский добавив в config.yml строку «lang: enUS».

Re: Записки разработчика: Строки и переводы

СообщениеДобавлено: 23 июл 2014, 15:12
MaRk0FFka
Какие языки будут ещё?

Re: Записки разработчика: Строки и переводы

СообщениеДобавлено: 23 июл 2014, 16:33
Rena4ka
Какие понадобятся в будущем :)

Re: Записки разработчика: Строки и переводы

СообщениеДобавлено: 24 июл 2014, 06:59
Feyola
Очень многие игры и программы (в том числе Minecraft) имеют переводы, сделанные сообществом игроков из разных стран. Разработчики делают перевод на языки которые знают сами (обычно англ. и их родной), после чего предлагают игрокам сделать переводы на свои языки и добавляют готовые переводы. А потом обновляют. Я даже знаю несколько сайтов-платформ для таких переводов.

Re: Записки разработчика: Строки и переводы

СообщениеДобавлено: 24 июл 2014, 09:20
BloodyAvenger
Недавно заметил в TMI все виды дерева которые назывались Бревно яблони :?

Re: Записки разработчика: Строки и переводы

СообщениеДобавлено: 24 июл 2014, 09:24
Aceko
Кстати языки вы добавили а вот набирать текст можно только русский и английский.

Re: Записки разработчика: Строки и переводы

СообщениеДобавлено: 24 июл 2014, 09:31
Rena4ka
Потому что у нас на сервере запрещены символы из других языков, клиент тоже не даёт набирать.

Re: Записки разработчика: Строки и переводы

СообщениеДобавлено: 24 июл 2014, 09:41
Aceko

Re: Записки разработчика: Строки и переводы

СообщениеДобавлено: 24 июл 2014, 11:53
Lenald
А вообще я думал, что это будет вроде блога без возможности комментировать. Так было бы лучше, имхо.

Re: Записки разработчика: Строки и переводы

СообщениеДобавлено: 24 июл 2014, 13:02
Aceko
Обсуждения иногда помогает исправить недочеты

Re: Записки разработчика: Строки и переводы

СообщениеДобавлено: 24 июл 2014, 13:18
benseeley

Вопрос - клиент же нормально будет отображать кастомные французские символы, такие как "é", "è", "ï", "œ", прочие? я не о написании в чат, а в названиях предметов/блоков в инвентаре.

Re: Записки разработчика: Строки и переводы

СообщениеДобавлено: 24 июл 2014, 13:46
Rena4ka

Re: Записки разработчика: Строки и переводы

СообщениеДобавлено: 24 июл 2014, 13:52
benseeley

Re: Записки разработчика: Строки и переводы

СообщениеДобавлено: 24 июл 2014, 13:57
Feyola

Re: Записки разработчика: Строки и переводы

СообщениеДобавлено: 24 июл 2014, 14:24
Ostap_Bender
Считаю обязательным ввести такую букву испанского языка как ñ. А так же все буквы, требующие ударения в написании á, é, ó, í...

Re: Записки разработчика: Строки и переводы

СообщениеДобавлено: 24 июл 2014, 19:40
delfigamer

Re: Записки разработчика: Строки и переводы

СообщениеДобавлено: 24 июл 2014, 19:42
benseeley

Re: Записки разработчика: Строки и переводы

СообщениеДобавлено: 24 июл 2014, 19:46
delfigamer
Она нужна только на этапе разработки. Как только выйдет 1.0.0, старый клиент отправится на помойку.
К тому же, ничто не мешает научить новый клиент отображать Юникод и сейчас. Кроме, возможно, разве что формата строк, но и эта проблема вполне решаема.

Re: Записки разработчика: Строки и переводы

СообщениеДобавлено: 24 июл 2014, 19:48
benseeley

Re: Записки разработчика: Строки и переводы

СообщениеДобавлено: 24 июл 2014, 19:54
delfigamer
Не вижу, процитируй.

Re: Записки разработчика: Строки и переводы

СообщениеДобавлено: 24 июл 2014, 20:24
benseeley

Re: Записки разработчика: Строки и переводы

СообщениеДобавлено: 25 июл 2014, 05:53
delfigamer
This starts getting interesting...

Ваш ход, господин Бенсили! Изображение
_

Не, серьёзно, так сложно показать, в каком именно предложении ты вычитал «поддержку Юникода»?
Я вот, например, не уверен на 100%, что клиент справится с китайскими иероглифами - их может просто не быть в используемых шрифтах. Есть сомнения на счёт Zalgo-символов - они требуют особого обращения при отображении.
С другой стороны, есть вероятность, что новый клиент отобразит даже древнеегипетские письмена - они тоже где-то в Юникоде висят.