Вход на сайт

Просмотр новости

Найдите то, что Вас интересует

Локализация .NET-игры на коленке (devlog игровой разработки)

Дата публикации: 15-06-2026 07:45:51

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

Основное содержимое страницы с новостью.

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

c6a6ed88f9cddbd6c41cc20cee6902c4.jpg

Diclaimer: в эту задачку я погрузился с места в карьер, вообще не изучая готовые решения и инструменты, со словами «я программист или как?» Итак...

Перевод интерфейса

Шаг 1. Заводим CSV-файлик для хранения айдишников и строк для каждого языка.

cdb2448070afed1b819b4c3e9e1ab479.png

Шаг 2. Генерируем CS-файл из него с enum-ом и собственно строками текста.

772963876cf2dac5962eb613c9421218.png05a250796524fb1963f8b604d5cc680d.png

Шаг 3. Используем в коде как-то так с помощью класса-менеджера, который подставит нужную строку в зависимости от языка.

67a87f9d0a2b71f86c3f8d7033df660b.png

Да-да, я буквально одной консолькой, написанной на C#, генерирую второй файлик, написанный на C# и включённый в другой проект. При этом я генерирую его тупо как текст, без каких-то хитрых библиотек и валидаций. И работает же! Ну а чего бы ему не работать то?)

Не перевод озвучки

Да, в случае с озвучкой я сразу решил, что не буду делать озвучку на других языках, но сделаю субтитры в роликах…

1a9bd28d310f5fc9e7c63581130fa736.jpg

...и расшифровку голосовых сообщений.

9d58ce5010cfa88d828d688f90edfa87.png

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

Перевод картинок

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

79dfec996187eb63596b5cab8160c153.jpg

Перевод историй

Самая болезненная часть, для понимания которой вам просто необходимо изучить мой пост про скрипты, хранящиеся в Obsidian. Прочитали? Вернулись? Отлично, тогда продолжаем: после обработка obsidian-файла у меня получаются файлики с такой структурой.

ff85683088d331e809455e95d045eb2a.png

Т.е., в них хранится прямо текст вопросов и ответов, а не ID-строчек. Поэтому мой пайплайн из нескольких маленьких консолек выглядит так:

  • загрузить json-файл, распарсить его и работать уже с понятной структурой

  • вытащить все строчки в пары «ID – текст», где ID является хэшем от содержимого строки

  • сохранить эти пары в CSV-файл, одноимённый файлу с диалогом

  • перевести содержимое файла

  • другой консолькой сделать копию квеста с суффиксом, соответствующим имени квеста, например для английского будет очевидное «_en»

  • игра знает, какой язык выбран и в зависимости от этого загружает файл с нужным суффиксом

Причём консольки получились достаточно умные: например, если файл уже существует, он не перетирается с нуля, а дополняется и обновляется. Если я отредактировал строку в русском файле — у неё сменится хэш, и нужно будет заново перевести только такие строки. Удобно? Вполне)

Что дальше

Игра релизнится 14 июля, и через месяц-два я вернусь с рассказом о том, насколько (без)успешно она продалась, как я выводил деньги из Steam, платил за всё это дело налоги и т.п. Если интересно — подписывайтесь, чтоб не пропустить ;-)

Схожие новости

#Наименование новостиТональностьИнформативностьДата публикации
1LLM для игры в ДнД: эволюция подхода0723-06-2026
2Когда контекстное окно кончается, а проект — нет5723-06-2026
3Забытый мультиколор (часть 4)0715-06-2026
4Адаптация в команде есть? А если найду?0517-06-2026
5От мешевых аватаров к искусственному интеллекту в Second Life: как я построил ИИ‑агентов для виртуального мира0719-06-2026
6Как мы разрабатывали TTS для Ил-2 Штурмовик5724-06-2026
7Как желание быстрее читать чужой код превратилось в войну с недетерминизмом LLM0528-06-2026
8Материалы по хакингу на русском5707-07-2026
9Мне надоело писать один и тот же код. Поэтому я сделал Featuregen3609-07-2026
10Основы вёрстки для дизайнера. Часть 1. Введение: как дизайн превращается в живой сайт5707-07-2026

Классификация: Мнения. Схожих патентов: 0. Схожих новостей: 10. Тональность: 0. Информативность: 5. Источник: habr.com.