Playto PLAYTO / Почему перевод игр — трудная задача

О качестве

Почему перевести игру во время игры — по-настоящему трудная задача

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

1 · Перевод

Прежде чем переводить экран, его нужно прочитать

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

Текст в играх — это едва ли не самый трудный случай для такого распознавания:

  • Декоративные и рукописные шрифты, выбранные ради настроения, а не читаемости.
  • Низкий контраст на движущемся анимированном фоне.
  • Мелкие подписи интерфейса и текст, впечённый прямо в арт.

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

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

2 · Оверлей

Рисовать поверх игры, которая не стоит на месте

Поместить текст на экран — просто. Поместить его поверх живой игры, не мешая, — нет.

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

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

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

3 · Журнал

Понять, что вы на самом деле прочитали

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

  • Одно и то же предложение появляется на множестве кадров, пока печатается посимвольно.
  • Экран, на котором вы просто стоите, снова и снова попадает в каждый новый захват.
  • Один и тот же неизменившийся текст от кадра к кадру распознаётся чуть по-разному.

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

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

Почему нет одной настройки, которая побеждает везде

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

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

Частые вопросы

Почему перевод в играх иногда неточен?

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

Улучшается ли качество перевода со временем?

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

Почему бы просто не использовать самую большую и точную модель ИИ?

Облачный сервис может поставить за каждым предложением огромную модель. Живой оверлей работает на вашем ПК, пока запущена игра, и делит с ней память и видеокарту — поэтому мастерство здесь не в том, чтобы выбрать самую большую модель, а в том, чтобы получить хороший результат от моделей, достаточно небольших, чтобы сосуществовать с игрой. При желании можно подключить собственный облачный API-ключ, но основная часть работы вложена именно в локальный путь.

Может ли Playto читать стилизованные или рукописные шрифты в играх?

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

Попробуйте на своих играх

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