Пятничные факты #244 – Локализованные множественные числа и прогресс в модернизации

Поделиться

Новый разработчик Python (Klonan)

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

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

Локализация множественных форм (kovarex)

Множественные локализации нужны здесь и там в Factorio. Например, когда указано время, это может быть 1 минута 5 секунд или 5 минут и 1 секунда, поэтому для выбора правильного слова должна быть какая-то система в зависимости от количества.

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

Английский:

minute1=minute
minute2-4=minutes
minute5+=minutes

Английские переводчики могут быть очень удивлены, почему нам нужны 2 разных перевода на несколько минут? Чешские люди поймут, так как чешский файл локализации выглядит так:

minute1=minuta
minute2-4=minuty
minute5+=minut

Да, у нас (чехов) есть различное количество множественных чисел для счета 2,3,4, чем другие множественные числа.

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

Это дало понять, что наличие другого ключа перевода для каждой возможной формы для каждого языка будет слишком сумасшедшим, поэтому мы изобрели нечто более общее. В 0.17, перевод X минут (число теперь включено в перевод, чтобы можно было поместить его в другую позицию или добавить какое-то другое слово где-нибудь) будет выглядеть так:

Английский:

minutes=__1__ __plural_for_parameter_1__[1]__minute__[rest]__minutes__

Чешский:

minutes=__1__ __plural_for_parameter_1__[1]__minuta__[2-4]__minuty__[rest]__minut__

Румынский:

minutes=__1__ __plural_for_parameter_1__[1]__minut__[ends in 01-19]__minute__[rest]__de minute__

и т д

Прогресс в модернизации движка игры (Posila)

Переработка структуры рендеринга идет хорошо. Мы находимся в точке, где игра выглядит точно так же (с незначительными исправлениями для рендеринга строк) в качестве нашей основной ветви 0.17, и единственной важной задачей, которая отсутствует, является правильная обработка ошибок – например, мы не хотим, чтобы игра крашилась, если по какой-либо причине команда скриншота завершилась с ошибкой. Я был удивлен, сколько вещей нам пришлось переписать, но мы не торопились, и я думаю, что это уже стоит того. Реализация игры выполняется значительно лучше (ну, по крайней мере, на стороне процессора на данный момент – больше об этом в некоторых будущих пятничных фактах) как в OpenGL, так и в DirectX.

Говоря об этом, некоторые люди задавались вопросом, почему мы даже работаем с DirectX, а не просто использовать OpenGL повсюду. Причина в том, что Windows по-прежнему остается основной ОС для игр на ПК, и по какой-то причине мы не можем выжать столько же производительности из OpenGL, сколько можем из DirectX (мы наблюдаем на 30% больше времени, затраченного на вызовы OGL, а не D3D ). Также кажется, что качество драйвера OpenGL получше. Мы уже столкнулись с проблемой, когда наша первая реализация атласов зданий спрайтов отлично работала на Windows и macOS, но была настолько неэффективной в Linux, что потребовалось более получаса для загрузки игры.

Мы на самом деле пытаемся создать новый рендеринг по архитектуре современных API-интерфейсов – Vulkan / Metal / DirectX 12 – и в будущем мы хотели бы создать серверы Vulkan и Metal, но сначала мы фокусируемся на более старых API-интерфейсах, так как большая часть у нашей нынешней базы игроков нет аппаратного обеспечения Vulkan. Используя OpenGL 3.3 Core и DirectX 11, уровень 10.0, мы должны покрыть 99% наших текущих игроков (согласно нашей статистической статистике Steam). Эти API-интерфейсы должны поддерживаться любым специализированным графическим процессором, производимым за последние 10 лет, и интегрированной графикой Intel HD со времени Sandy Bridge. Мы по-прежнему оставим 1% игроков позади, поэтому они застрянут с 0,16, подобно тому, как мы отказались от 32-битной поддержки, но все остальные должны извлечь выгоду из более высокой производительности и, надеюсь, лучшей игры.

Как всегда, дайте нам знать, что вы думаете на нашем форуме


Поделиться

Комментарии: