Как сделать перевод визуальной новеллы
Разбираемся, как перевести новеллу на английский (или другой) язык. Смотрим на нюансы переводи и производим .
В данном туторе мы рассмотрим, как генерируются скрипты для перевода наших проектов Ссылка для поддержки проекта .
Привет. В данном видео уроке мы рассмотрим: как переводить игры на движке Ren'Py. Также, я кратко объясню, как .
Ролик про немного специфичный жанр компьютерный игор, который отлично подойдет тем, кто любит читать длинные .
Как загрузить новеллу из РенПай в Google Play? Все шаги по загрузке игры в Гугл Плей. Поддержать проект .
Предметно рассказываю, куда ушли деньги и сколько, а также некоторые моменты, которые нужно продумать до того, как .
Принимай участие в джеме визуальных новелл от Индикатора! Он пройдёт 26-28 февраля в онлайн формате на нашем .
Как сделать визуальную новеллу? Я НАУЧУ, ХАХА. Я потратила очень много времени на эту, поэтому буду рада, если ты .
Вы начинающая студия, которая хочет переводить аниме-продукты? В этом ролике я кратко расскажу кто чем должен .
Взять, к примеру, визуальные новеллы. В них ведь практически нет геймплея, и они больше похожи на интерактивную .
Не очень знакомы с визуальными новеллами? Ищете новые жанры игр, с которыми можно будет ознакомиться на .
. новеллы, сделать фон для визуальной новеллы, как рисовать фон, как рисовать фоны, как сделать визуальную новеллу, .
Что такое визуальные новеллы и с чего начать? Спасибо за просмотр. Подпишись. Поставь лайк и будет тебе счастье.
Многие не знают английского языка, и у них возникают трудности при переводе иностранного текста на русский язык.
В этом видео я попробую привлечь чуть больше людей к такому явлению как "Визуальные новеллы". Приятного просмотра.
Это не видео урок, а просто ускоренная демонстрация того как я рисую персонаж для своей будущей визуальной новеллы.
Описание❤▱▱▱▱▱▱▱▱ Как сделать визуальную новеллу. Краткий курс. ▱▱▱▱▱▱▱▱ ❤Музыка в конце видео❤▱▱▱▱▱▱▱▱ .
Любительский перевод визуальных новелл, если сравнивать с переводами других игр, имеет ряд особенностей и подразумевает работу с большим количеством текста. Пожалуй, подавляющее большинство всех визуальных новелл было выпущено на японском языке, лишь немногие были переведены на английский(официально или любителями) и еще меньше было переведено на другие языки.
Поэтому, при работе с переводом приходится сталкиваться с японскими движками, многие из которых оказываются не слишком дружелюбными к локализаторам. Из-за этого, довольно быстро приходит осознание, что наличие переводческих навыков, знания языка, большого энтузиазма и свободного времени, вовсе не означает, что переведенная версия игры скоро увидит свет.
Очень приближенно, процесс перевода любой игры(не только визуальных новелл), подразумевает:
- Распаковку игровых ресурсов(если они не находятся в открытом доступе)
- Перевод необходимых частей
- Обратная запаковка перевода
- Распаковка игровых ресурсов
- Перевод текстовой части игры(игрового сценария)
- Перевод графической части игры
- Обратная запаковка перевода
- Переделка движка, чтобы заставить его работать с переведенным контентом
В далеком 2013 году(а возможно и раньше) я задумал перевести с японского визуальную новеллу Bishoujo Mangekyou -Norowareshi Densetsu no Shoujo- (美少女万華鏡 -呪われし伝説の少女-). Опыт перевода игр у меня уже был, но раньше приходилось переводить только новеллы на относительно простых и известных движках вроде Kirikiri.
Здесь же нашей команде переводчиков предстояло вскрыть движок этой новеллы, еще до того, как добраться до собственно самого текста.
Начнем с описания .exe файла, где упомянуты слова QLIE и IMOSURUME. В самом файле встречается строка FastMM Borland Edition 2004, 2005 Pierre le Riche, значит движок, скорее всего, написан на Delphi.
Но нигде в свободном доступе нет ни официальных инструментов для работы с движком, ни документации к нему, что ожидаемо.
Поэтому разбираться с игрой приходится самостоятельно, опираясь на неофициальные утилиты. Для начала стоит найти все части игры, которые нужно будет переводить.
Игровые архивы находятся в файлах data0.pack, data1.pack и data7.pack в подпапке \GameData. Заставки лежат в папке \GameData\Movie, но их пока можно не трогать.
В hex-редакторе видно, что никаких узнаваемых заголовков у игровых архивов .pack нет, зато в конце файла есть кусок, похожий на оглавление и метка FilePackVer3.0
К счастью, для данного формата уже есть распаковщик и даже не один. Мы использовали консольный exfp3_v3 от asmodean.
Распаковка не так проста, как может показаться. Поскольку движок поддерживает несколько архивных форматов(FilePackVer1.0, FilePackVer1.0, FilePackVer3.0), и в данном случае используется FilePackVer3.0, для правильной распаковки потребуется еще и специальный файл-ключ key.fkey, которым зашифрован архив. Он находится в подпапке \Dll
Кроме того, exfp3_v3 должен уточнить, архив из какой именно игры он распаковывает.
Поэтому требуется еще и указать номер игры из предложенного распаковщиком списка(игры серии Bishoujo Mangekyou там под номером 15), либо указать исполняемый файл игры в качестве третьего параметра для распаковщика.
Уже после распаковки игровых файлов, появилась логичная мысль: а как в будущем запаковать обратно игру с готовым переводом? Ведь распаковщик не поддерживает обратную операцию.
По нашей просьбе w8m (большое ему за это спасибо) добавил в свою программу arc_conv.exe возможность запаковывать игровые архивы. Достаточно запаковать все измененные файлы в новый архив(например, data8.pack), поместить в папку GameData, и они автоматически подтянуться в игру.
Вернемся к распакованным ресурсам. Файлы игрового сценария из архива data0.pack можно найти в подпапке \scenario\ks_01\
Все файлы сценария с расширением .s закодированы в далеко не самой удобной кодировке Shift Jis, и никакие юникодные кодировки движок не поддерживает. Cтроки для перевода выглядят приблизительно как эти:
Можно заметить, что каждая фраза на японском предваряется именем героя в японских скобках. (【】), который эту фразу произносит(в игре она выводится в верхней части окна с текстом). Или же, если это слова автора, то имя не добавляется.
Но остаются еще служебные команды.
Команды движка в сценарии чем-то напоминают язык разметки TeX, но намного более не интуитивны и неудобны, по сравнению с командами Kirikiri или RenPy.
Вот некоторые из них:
@@@ — тройная собака. Часто файлы скрипта начинаются именно с этой команды. По видимому, загрузка определений из сторонних файлов.
@@ — двойная собака. Метка в файле скрипта. На нее позже можно будет выполнить переход.
^savedate, ^saveroute, ^savescene, — три команды, которые скорее всего используются в системе сохранений игры и должны заносить в сэйв информацию о месте и времени сохранения игрока.
^facewindow, – состояние текстбокса с выводимым на экран текстом. (Показан — 1 или нет — 0)
^sload, — проигрывание внутриигровых звуков из папки \sound\ на соответствующем канале.
Проигрывание звука цикад на канале Env1
У команды есть два необязательных параметра, первый отвечает за закольцовывание звука, а второй пока остается загадкой, но он используется в игре редко.
Проигрывание закольцованного звука на канале SE1.
^eeffect – вывод на экран спецэффекта на определенное количество секунд. Судя по всему, поддерживает последовательный вывод нескольких эффектов.
Эффект белой вспышки.
^ffade – эффект перехода при смене экрана.
Имеет целую кучу дополнительных параметров, но реально полезны только несколько: название эффекта перехода, дополнительная картинка, если она требуется и время выполнения перехода.
Растворение одной картинки в другой, за 1 секунду.
^iload – загрузка фоновой картинки на экран. Изображению можно присвоить id для обращения к нему в будущем.
Вывод файла 0_black.jpg в качестве фона с id BG1
^we и ^wd — включение и выключение изображения в окне.
^facewindow,1 и ^facewindow,0 Включение и выключение изображения героя в окне диалога.
^mload — проигрывание музыки на определенном канале.
Проигрывание трека nbgm13 на канале BGM1
Одни из самых важных команд:
\jmp — переход к метке с указанным именем.
^select — вывод на экран окошка выбора, где игрок должен выбрать один из вариантов.
Здесь переход будет выполнен после ответа на вопрос, а номер ответа(0 или 1) возвращается из ResultBtnInt[0]. В итоге, \jmp переместит повествование на метку @@route01a + номер ответа. То есть, @@route01a0 или @@route01a1
Неприятная особенность в том, что обычная запятая в этих командах служит разделителем и не может быть использована в самих вариантах ответа. У японцев такой проблемы нет, они используют японскую запятую(、). Мы в данном случае можем заменить запятую на ‚ (U+201A SINGLE LOW-9 QUOTATION MARK).
Остальные команды не так важны в первом приближении.
Конечно, перед переводом сценарий стоит перекодировать во что-то более удобное, например в UTF-8, чтобы сочетать кириллические и японские символы.
После смены движка(об этом следующей части), игра воспринимает и русский текст, и японский. Но пока для совместимости требуется закодировать японские символы в Shift Jis, а кириллические – в кодировке cp1251.
Мы быстренько набросали программку на Питоне для перекодировки с учетом кириллицы:
Сначала я грешил на Питон, но в итоге выяснился довольно необычный нюанс. Существует неопределенность между методами соотношения юникодных и не юникодных японских кодировок в зависимости от конкретной реализации.
Для определения соответствий между символами Microsoft, видимо, решили использовать схемы из своей кодировки cp932, которая является расширенной версией Shift Jis.
Та же ситуация с символом с кодом 0x817C, который перекодируется в UTF8 как -(U+FF0D FULLWIDTH HYPHEN-MINUS) в Windows, или как − (U+2212 MINUS SIGN) в iconv.
Поскольку все файлы сценария были сначала переконвертированы из Shift Jis в UTF8 с помощью Notepad++(а он использует таблицу соответствия, принятую в Windows), то при обратной конвертации из UTF8 в Shift Jis через нашу питоновскую программу, появлялась пресловутая ошибка перекодировки.
Поэтому пришлось учитывать случаи появления ~ и -отдельными условиями.
Были и другие мелкие недочеты — например, многоточие … (U+2026 HORIZONTAL ELLIPSIS) заменялось кириллическим многоточием из cp1251, а не японским из Shift Jis.
После перевода текста можно переходить к работе с игровой графикой.
Графические файлы игры находятся в тех же pack архивах, но после распаковки над ними еще предстоит потрудиться. Например, почти все png картинки распаковываются в виде файлов типа sample+DPNG000+x32y0.jpg Иными словами, png изображения порезаны на горизонтальные полоски, толщиной 88 пикселей и каждая полоска записана в отдельный файл. В имени файла указан порядковый номер полоски(DPNG000. 009) и координаты x,y.
Я до сих пор теряюсь в догадках, зачем это было нужно. Если для затруднения рипанья ресурсов из игры, то это явно не самый лучший метод.
Чтобы склеить разрезанные png файлы, в свое время был создан маленький скрипт merge_dpng на Перле от asmodeus, который использует ImageMagick. К сожалению, и с ним возникли проблемы. Во-первых, нужен был Перл, которым я не пользовался и даже после его установки, выяснилось, что скрипт неправильно работает.
По этому поводу мы написали аналогичную программу на питоне:
Казалось бы, теперь мы получили весь набор картинок, который появляется в игре? Отнюдь — если просмотреть все соединенные картинки из всех архивов, то все равно окажется, что каких-то не хватает, хотя в игре они есть. Дело в том, что в движке имеется еще один тип файлов — с расширением .b. Это что-то вроде анимации с записанными внутри изображениями и звуками.
Хранящиеся внутри ресурсы достать довольно легко, но, увы, ни один из готовых распаковщиков .b файлов в нашем случае не отработал как надо. Либо некоторые файлы оставались нераспакованными, либо случались ошибки из-за японских имен, а загружаться с японской локалью не хотелось.
Тут пригодился еще один наш скрипт. Поскольку тогда мы не были знакомы с чем-то вроде Kaitai Struct, пришлось действовать почти с нуля.
Формат .b файлов оказался простым и, к тому же, от нашего распаковщика требовалась возможность распаковывать ресурсы только из этой игры. В других играх на движке Qlie появлялись дополнительные виды ресурсов внутри .b файлов, но мы на них подробно останавливаться не будем.
Итак, открываем любой .b файл в шестнадцатиричном редакторе и смотрим в начало. Перед оценкой следует учесть, что порядок байтов всех числовых значений будет Little-endian.
- Заголовок файла abmp12
- Десять байт 0x00
- Заголовок первой секции abdata12 со служебной информацией.
- Восемь байт 0x00
- Размер секции abdata12, четырехбайтовое целое. Можно смело ее пропустить.
- Заголовок секции abimage10
- Семь байт 0x00
- Количество файлов в секции, однобайтовое целое. В данном случае – в секции один файл.
- Заголовок секции abgimgdat13
- Шесть байт 0x00
- Длина имени файла внутри секции, двухбайтовое целое. В данном случае длина – 4 байта.
- Имя файла в кодировке Shift Jis
- Длина записи контрольной суммы файла, двухбайтовое целое.
- Сама контрольная сумма файла.
- Неизвестный байт, судя по всему, всегда равен 0x03 или 0x02
- Двенадцать неизвестных байтов, возможно, связаны с анимацией
- Размер png файла внутри секции, четырехбайтовое целое.
Секция absound аналогична по строению abimage.
Скрипт должен автоматически распаковывать найденные файлы png, jpg, bmp, ogg и wav. Но помимо этого, внутри попадаются еще и неизвестные файлы imoavi.
Суть в том, что в игре все анимации сделаны либо как полноценное видео в ogv формате, либо как анимированные движком изображения, которые записаны в .b файлы, либо как анимированные последовательности jpg файлов в формате imoavi.
В данном случае, нас интересовали и jpg изображения, поэтому пришлось разбираться с ними также.
В imoavi существуют две секции: SOUND и MOVIE. В секции MOVIE через 47 байтов после заголовка, находятся четыре байта размера jpg файла. Файлы записаны друг за другом в исходном виде, разделенные последовательностью в 19 байт, где записан размер следующего файла.
Озвученные imoavi в игре не попадались, поэтому секция SOUND всегда пустая.
Ну и раз уж мы начали заниматься вытаскиванием всех ресурсов игры, заодно был написан и маленький скрипт для вытаскивания jpg из imoavi.
После распаковки, можно убедиться, что анимация из заставки в меню хранится как раз в файле 1_タイトル画面ムービー.b в формате imoavi.
На этом с игровыми ресурсами все.
К сожалению, в процессе перевода выяснилось еще несколько неприятных нюансов, которые преодолеть так и не удалось. Игра, как я уже писал, не поддерживает юникодных кодировок. Поэтому, весь переведенный текст выводится с неправильным межбуквенным интервалом. Было еще несколько проблем с обратной запаковкой файлов и с запуском игры без смены системной кодировки на японскую.
В какой-то момент мы(вернее, тот, кто отвечал за техническую часть перевода в нашей команде) задумались: а может, не стоит таскаться со старым движком, а портировать новеллу на движок Renpy, заодно получив и кроссплатформерность?
Возможно, мы поторопились, но в какой-то момент, бросать начатое стало жалко и ничего не оставалось, кроме как закончить перевод.
С чем же нам пришлось столкнуться во время портирования?
Об этом во второй части.
Переведу тексты разной тематики с английского на русский. Также перевожу новеллы.
НЕ работаю со сложными, требующими соответствующей специализации техническими текстами, спецификациями, юридическими и финансовыми документами, медицинской тематикой.
Опыт работы переводчиком новелл с английского на русский около 1 года. Углубленное изучение английского с детства, репетиторы, курсы.
Оглашайте тематику и требования. Перевод с фотографий с плохим качеством нежелателен. Присылайте заказы.
Круто,конечно,как открыть новеллу для вшитого перевода?
Далее далее, start, далее, ошибка ( Does not find this game from the online database ) классный гайд, спасибо!
я все сделал по инструкции но когда я выделяю рамкой текст ничего не появляется ,что делать в таком случае? Я просто не понимаю вообще ничего нет
Работает в полноэкранном режиме?
Покажи лучше как сделать полную локализацию. Как блин эти байты в слова перевестииии?
у меня пишет "Does not find this game from the online database" после того как прога определила игру и нажал далее
А что делать если игра на телефоне?
А то есть это просто приложение за тебя переводит? Есть приложение с помощью, которого я сам бы мог переводить?
SUBARU SENPAI,а возможно перевести визуальную новеллу из псп .
Если ты используешь эмулятор то да
а и кстать давно я не писал и мне стало интересно он сможет danganronpa перевести а то сыграть хотеть но онли инглишь 1 част 70% перевода а 2 ещё и не начинали
можеш добавить ссылку с хрома, у меня не работают русские браузеры
Брат, братан, братишка, у тебя тоже Rewrite)))
при переходе на сайт открывает страницу с надписью похожие ссылки
как с этим бороться
что делать если пишет не удалось синхранизироваться с игрой
Как установить OCR?
Maverik OCR Helper попробуй. Он как раз под новеллы заточен.
У мня захватывает текст, но не переводит на русский. Как настроить русский перевод с английского?
И не все новые игры видит, даже 2015 вроде Gal Gun
MONOKUMA А как ускорить перевод текста ?
Да, только проверил, после выделения ocr он выводит тот же текст из игры на глийском в окно ocr. И только 1 фразу, как настроить ему перевод на русский?
А ты в настройках текста поставил английский и UTF 8
Да, он просто показывает тот же текст из игры, как его заставить переводить на русский? (с английского)
Херня. Пробовал с Just Desert. Вроде простенькая, но думал поможет. Ни стандартно, ни с OCR. Весь гайд прошерстил у них на странице, все перепробовал. Гавнище, а не прога.
И зачем я свой Maverik OCR Helper делал, ведь о нём никто не знает. А ведь он может многое) Ну попробуйте, авось что и получится. Программа специально для распознавания и перевода визуальных новелл и игр и большим количеством текста в разных местах экрана. А VNR хорош, сам пользуюсь, да только захватывает не все потоки, да иногда удобнее просто с экрана текст захватывать.
Сразу хочу сказать, какие цели преследует эта статья. Во-первых, она должна рассказать о том, как я делал свою игру (с целью какого-никакого пиара, разумеется)). А во-вторых, я хочу спросить совета у пользователей — как можно её попиарить? Сама игра скоро выходит в стиме, а у меня закончились идеи, как это делать(
Вот что получилось в итоге.
Но давайте по порядку. История создания визуальной новеллы в одно лицо.
Песнь первая: с какого фига я вообще за это взялся?
Откровенно говоря, я стал инди-разрабом очень неожиданно. Я всегда хотел быть сценаристом, но как-то не сложилось. Вернее, сложилось, но не очень.
Классная вещь, кстати. Рекомендую.
В общем, с этого и началась история моего падения)
Песнь вторая: сюжет и сценарий.
Сюжет в моей голове рождался медленно и размеренно. Как я уже сказал — я был очень вдохновлён другой визуалкой. Настолько там закрученный сюжет, персонажи. Прям ух! Соответственно, из щенячьего восторга и выросла идея сделать что-то похожее.
Песнь третья: ресурсы.
Какое-то время всё шло достаточно гладко. Потихоньку рисовалась графика, на форуме любителей визуалок один энтузиаст предложил написать музыку.
Так герои выглядели первоначально.
А потом в моём мире наступил экономический кризис и я ушёл с работы. И заказывать графику стало не на что. А раз так — прощай, детектив Виктор, увидимся в следующей жизни. Графики нет, да и у композитора начались какие-то свои проблемы, потому он отказался сотрудничать дальше. (Тем не менее, пару мелодий он написал и они мне понравились — эти треки вошли в финальную версию.)
Так герой стал выглядеть в итоге.
Песнь четвертая: код.
Тут надо оговориться. Я — человек не командный, стремлюсь держать всё под контролем, а потому мне гораздо легче сделать всё самому, чем поручить кому-то и в дальнейшем ходить проверять, сделал он или нет.Потому кодить я тоже стал сам.
Но, методом проб, ошибок и какой-то матери, за пару недель я всё это закодил. И, как ни странно, мне понравилось. Видимо, есть во мне какие-то мазохистские черты.Ты что-то делаешь и тут же видишь, как твоя работа воплощается в программе. Прикольно.Также в процессе кода рождалось много интересных идей. А что если персонаж в одном акте спросит имя человека, а в следующем назовёт его по этому имени? А если не спросит — то имени знать не будет? А таких персонажей 7. Здравствуйте, новые переменные.А что, если в ряде сцен экран будет с помехами? Это как раз логично выглядит с учётом сценария. Здравствуйте, эффекты глича и видеошума. А что, если в главное меню запилить ещё кнопку с выводом концовок и сделать одну из них скрытой, доступной только после первого прохождения? А что, если… И всё это реализовывается, и делает игру всё круче и круче.
Спецдеффекты со старой оригинальной графикой.
Песнь пятая: провал.
Анимированная сцена.
Во-вторых, он всё-таки выпустил игру на андроид, где она продавалась за 35 рублей.
Но потом этот разраб-издатель отвалился из-за ряда личных обстоятельств.
Отчаяние охватило меня. Денег у меня не было, всё шло наперекосяк, пошёл ты к чёрту, детективчик. Не судьба мне стать сценаристом. Тем более в геймдев студии меня тоже не брали. Проект был послан нахрен. Залита версия на рутрекер, андроид сделан бесплатным.
Песнь шестая: возрождение из пепла?
Но время шло, я случайно наткнулся на студента-переводчика (вернее, я думаю, что он студент, доказательств у меня нет) и тот согласился перевести проект. Качество, судя по всему, вышло более-менее читабельным. По крайней мере текст понятен. У меня появились некоторые сбережения и я смог оплатить взнос в стиме. Саму игру немного дополнил и подшлифовал, так что версия отличается от торрент-эдишна.
Но что делать ещё? Везде советуют разное. Отправлять кураторам или нет? Искать стримеров или надеяться на бусты стима? Я запутался.
Игроки, разработчики, помогите советом, пожалуйста.
Ну и, конечно же, прошу заценить страницу в стиме — и, если понравится, добавить игру в вишлист.
А вот тут, кстати, сделанный на коленке трейлер. Его я тоже делал сам и это отдельная головная боль.
В общем, моя игра получилась очень многострадальной. Но из-за этого ещё сильнее хочется, чтобы хоть где-то она поимела успех)
На этом пока всё. Надеюсь, вам было интересно читать. И надеюсь, что коллективный разум подкинет клёвых идей.
Читайте также: