Анализ текстовых скриптов LB/LBME/LBPE
Сюда я попытаюсь свести все отличия в текстах различных версий игры.
В списке отсутствуют файлы содержащие менее 10 строк.
Карта отличий сгенерирована полуавтоматически и может быть неточной.
Итого:
Обычное издание – 75777 (73382) строк с (без) учётом строковых переменных
Perfect Edition – 103325 строк без учёта строковых переменных
Вторичный XOR ключ для Perfect Edition:
game LBPE «Little Busters! Perfect Edition» by Key
using key from 256 for 257:
0xa8 0x28 0xfd 0x64 0xa9 0x23 0x77 0x06
0xfa 0x39 0x88 0x3f 0x6c 0x13 0xa2 0xf0
Собранный английский/японский текст для обычной версии можно скачать здесь.
Японский текст для LBPE можно скачать здесь.
Поле имени в LB! статическое, нужно подобрать значения NAME_MOJI_POS и NAME_MOJI_MIN, тогда влезет около 15 символов.
| Игра | Original | Memorial | Perfect | ||
| Файл | Строк | Строк | Отличия | Строк | Отличия |
| SEEN0513 | 239 | 239 | нет | 239 | правки |
| SEEN0514 | 907(909) | 907 | нет | 907 | правки |
| SEEN0515 | 1116 | 1208 | +92 строк и 6 правок | 1208 | |
| SEEN0516 | 1688 | 2877 | +1189 строк и 1 правка | 2877 | 2 правки |
| SEEN0517 | 1890 | 2119 | +229 строк и 5 правок | 2119 | |
| SEEN0518 | 2378 | 2933 | +555 строк и 8 правок | 2933 | |
| SEEN0519 | 2424 | 2709 | +285 строк и 4 правки | 2708 | -1 строк |
| SEEN0520 | 789 | 1070 | +281 строк и 2 правки | 1070 | |
| SEEN0521 | 2956 | 3954 | +998 строк и 10 правок | 3954 | |
| SEEN0522 | 2949 | 3215 | +266 строк и 2 правки | 3215 | |
| SEEN0523 | 2988 | 3390 | +402 строк и 5 правок | 3396 | +6 строк |
| SEEN0524 | 2539 | 2551 | +12 строк и 6 правок | 2555 | +4 строк |
| SEEN0525 | 800 | 800 | 800 | ||
| SEEN0526 | 464 | 464 | 464 | ||
| SEEN0527 | 1082 | 1082 | 2 правки | 1082 | |
| SEEN0528 | 277 | 322 | +45 строк | 322 | |
| SEEN1000 | 1574 | 1574 | 1 правка | 1574 | |
| SEEN1001 | 1225 | 1225 | нет | 1225 | |
| SEEN1002 | 529 | 529 | нет | 529 | |
| SEEN1003 | 1395 | 1403 | +8 строк и 5 правок | 1403 | |
| SEEN1004 | 440 | 440 | 1 правка | 440 | |
| SEEN1200 | нет | 1701 | 1701 | ||
| SEEN1201 | нет | 1773 | 1773 | ||
| SEEN1202 | нет | 1586 | 1586 | ||
| SEEN1203 | нет | 1403 | 1403 | ||
| SEEN2000 | 1766 | 1766 | 1766 | ||
| SEEN2001 | 2630 | 2630 | 1 правка | 2630 | |
| SEEN2004 | 488 | 488 | нет | 488 | |
| SEEN2005 | 810 | 810 | нет | 810 | |
| SEEN2100 | 51 | 51 | нет | 51 | |
| SEEN2500 | 133 | 133 | нет | 133 | |
| SEEN2513 | 138 | 138 | нет | 138 | |
| SEEN2514 | 567 | 567 | нет | 567 | |
| SEEN2515 | 408 | 408 | 2 правки | 408 | |
| SEEN2516 | 177 | 177 | нет | 177 | |
| SEEN2517 | 154 | 154 | нет | 154 | |
| SEEN2518 | 333 | 333 | нет | 333 | |
| SEEN2520 | 1404 | 1404 | нет | 1405 | +1 строк |
| SEEN2521 | 2376 | 2376 | 5 правок | 2376 | |
| SEEN2522 | 1294 | 1294 | нет | 1294 | |
| SEEN2523 | 642 | 642 | нет | 642 | |
| SEEN2600 | 556 | 556 | 1 правка | 556 | |
| SEEN2601 | 363 | 363 | нет | 363 | |
| SEEN2602 | 435 | 435 | нет | 435 | |
| SEEN2603 | 549 | 557 | +8 строк | 557 | |
| SEEN2800 | нет | 808 | 808 | ||
| SEEN2801 | нет | 437 | 437 | ||
| SEEN2802 | нет | 142 | 142 | ||
| SEEN2803 | нет | 194 | 194 | ||
| SEEN2804 | нет | 440 | 440 | ||
| SEEN2805 | нет | 625 | 625 | ||
| SEEN2806 | нет | 506 | 506 | ||
| SEEN2807 | нет | 514 | 514 | ||
| SEEN2808 | нет | 307 | 307 | ||
| SEEN2809 | нет | 58 | 58 | ||
| SEEN2810 | нет | 192 | 192 | ||
| SEEN2811 | нет | 153 | 153 | ||
| SEEN2812 | нет | 304 | 304 | ||
| SEEN2813 | нет | 238 | 238 | ||
| SEEN2814 | нет | 154 | 154 | ||
| SEEN2815 | нет | 269 | 269 | ||
| SEEN2816 | нет | 361 | 361 | ||
| SEEN2817 | нет | 256 | 256 | ||
| SEEN2818 | нет | 412 | 412 | ||
| SEEN2819 | нет | 149 | 149 | ||
| SEEN2830 | нет | 314 | 314 | ||
| SEEN2888 | нет | 47 | 47 | ||
| SEEN3000 | 6364 | 6878 | +514 строк | 6878 | |
| SEEN3524 | 181 | 181 | 181 | ||
| SEEN3600 | нет | 7618 | 7618 | ||
| SEEN3800 | нет | 161 | 161 | ||
| SEEN3900 | 404 | 763 | +359 строк | 763 | |
| SEEN4000 | 2678 | 3311 | +633 строк | 3311 | |
| SEEN4001 | 1431 | 1542 | +111 строк | 1542 | |
| SEEN4002 | 811 | 789 | -22 строк | 789 | |
| SEEN4003 | 711 | 1675 | +964 строк | 1674 | -1 строк |
| SEEN4102 | 323 | 323 | 323 | ||
| SEEN4103 | нет | 1700 | 1700 | ||
| SEEN4444 | 60 | 65 | +5 строк | 65 | |
| SEEN5000 | 1179 | 1179 | 1179 | ||
| SEEN5001 | 559 | 559 | 559 | ||
| SEEN5002 | 302 | 302 | 302 | ||
| SEEN5003 | 622 | 622 | 622 | ||
| SEEN5004 | 568 | 568 | 568 | ||
| SEEN5005 | 590 | 590 | 590 | ||
| SEEN5006 | 1475 | 1485 | +10 строк | 1485 | |
| SEEN5522 | 272 | 272 | 272 | ||
| SEEN6000 | 2560 | 2553 | -7 строк | 2553 | |
| SEEN6001 | 230 | 230 | 230 | ||
| SEEN6002 | 1295 | 1295 | 1295 | ||
| SEEN6003 | 1745 | 1745 | 1745 | ||
| SEEN6010 | 85 | 85 | 85 | ||
| SEEN6100 | 81 | 81 | 83 | +2 строк | |
| SEEN6101 | 257 | 257 | 257 | ||
| SEEN6102 | 74 | 74 | 74 | ||
| SEEN6518 | 58 | 58 | 58 | ||
| SEEN7921 | 502 | 626 | +124 строк | 626 | |
| SEEN7922 | 25 | 25 | 25 | ||
| SEEN8030 | 581 | 581 | 581 | ||
| SEEN8060 | 23 | 23 | 23 | ||
| SEEN8110 | 16 | 16 | 16 | ||
| SEEN8220 | 14 | 14 | 14 | ||
| SEEN8590 | 131 | 141 | +10 строк | 141 | |
| SEEN8610 | 151 | 151 | 151 | ||
| SEEN8731 | 23 | 23 | 23 | ||
| SEEN8733 | 621 | 621 | 621 | ||
| SEEN8734 | 55 | 55 | 55 | ||
| SEEN8735 | 216 | 216 | 216 | ||
| SEEN9071 | 119 | 119 | 119 | ||
| SEEN9102 | нет | 18 | 18 |
В списке отсутствуют файлы содержащие менее 10 строк.
Карта отличий сгенерирована полуавтоматически и может быть неточной.
Итого:
Обычное издание – 75777 (73382) строк с (без) учётом строковых переменных
Perfect Edition – 103325 строк без учёта строковых переменных
Вторичный XOR ключ для Perfect Edition:
game LBPE «Little Busters! Perfect Edition» by Key
using key from 256 for 257:
0xa8 0x28 0xfd 0x64 0xa9 0x23 0x77 0x06
0xfa 0x39 0x88 0x3f 0x6c 0x13 0xa2 0xf0
Собранный английский/японский текст для обычной версии можно скачать здесь.
Японский текст для LBPE можно скачать здесь.
Поле имени в LB! статическое, нужно подобрать значения NAME_MOJI_POS и NAME_MOJI_MIN, тогда влезет около 15 символов.
Комментарии
Блог перевода
Рубрики:Перевод
- Перевод:
- текст с английского на русский
- Создан:
- 6 января 2014, владелец: DENDentar
- Скачали:
- 520 чел.
- Права доступа:
-
войти все видеть чужие версии все скачивать результат группа оценивать перевод все комментировать перевод все переводить группа читать блог все комментировать блог все писать в блог все анонсировать модераторы редактировать оригинал модераторы редактировать описание модераторы управлять группой модераторы Участие в группе после подтверждения модераторами - Готово:
-
71.46% КП = 1.0

Судя по такому количеству отличий, сейчас, наверное, стоит заняться обычной версией, благо она переведена полностью. Когда эту сделаем, может появится больше желающих перевести ME, PE и EX. Сейчас мне это вообще не кажется возможным.
Кстати, как у вас с ME Канона и Кланнада?
скрытые комментарии (2 шт.)
Согласен. Но анализ я всё равно доделаю.
В Кланнаде ME нет текстовых отличий, но он сменён на HD версию на базе его скриптов и графики из PS3. Канон ME как и Кланнад ME требуют некоторой доработки хаков для движка. Пока с этим особых подвижек нет(
И кстати, про Ecstasy речь вообще не шла, она мне неинтересна. Кому надо хентай от Key пусть на инглише читают, когда он будет. Memorial и Perfect интересны новыми роутами + Perfect добавлена полная озвучка второстепенных персонажей (кроме ГГ) и новый спрайт.
98% новых строк что вы тут видите – это рут Токидо Сая, начинается с конца 15 дня. После прохождения Refrain в конце 05/15 выскакивает окошко спрашивая хотите или нет активировать ее рут.
Руты Харуки и Куд сами по себе расширены (у Куд значительно) и в руте Куругаи (только в Converted/PE) должна быть новая сцена ~300 линий.
Перевод на английский заброшен около года назад, обновлений с тех пор небыло. Много кто пытался с переводчиками связаться чтобы перенять эстафету – безрезультатно.
Вообщем мой совет: вставляйте текст в Perfect Edition и будут хотя бы полноценные руты Сасами и Канаты, все остальное скипается.
Думаю тексты для Memorial/Perfect Edition отдельным переводом сделать. Чтобы здесь не было каши.
Так там куски вырванные из разных частей. Редактировать и к единому виду приводить все тоже лучше одним и тем же людям. Дело ваше, конечно, но я лично не вижу смысла. Чем оно тут может мешать в самом низу после основного скрипта – тоже не понимаю.
скрытые комментарии (9 шт.)
Особо ничем, только портит цифру в графе готово)
Да циферка процента это ерунда.) Человек заходит если и видит что тут работа идет, там работа идет, и аж ~5000 строк готово (огромный прогресс, кстати, я считаю. Отличная работа!)... оно согласитесь намного лучше, чем если там будут валяться эти куски выдранные и перекати-поле будет стоять, и каждый кто зайдет (не важно с нужными навыками или без) будет 'wtf это такое вообще?'
Кстати, может собрать демо-версию перевода с первыми 4 днями? Раскидать по трекерам, форумам соответствующим.. группа там у нас по LB! вконтакте вроде была.. есс-но с ссылками сюда, чтобы привлечь внимание к проекту (с текущим прогрессом уже не стыдно должно быть).. Переводчиков надо пытаться привлечь... да и просто редакторов/спеллчекеров. Тут у нас слишком большая ноша для 1-2 человек.
Демо-версия – это хорошо, но есть пару загвоздок:
За графики ещё никто не брался.
С мини-играми, пока, ахтунг.
http://free-pic.org/big/2014/c11c9dbc6a40ca66a35e68c626b11133.png
Нужно кардинально менять подход к выводу пропорционального текста или переделывать мини-игры под текущий вариант.
Текст и выборы работают нормально.
http://free-pic.org/big/2014/0bda12330b18351c5b169ea0341698be.jpg
p.s. это вся готовая на данный момент графика(
Демо я предполагал сделать после покрытия всего общего роута.
А какие файлы отвечают за графику в мини-играх? И кто вообще 'ответственный за графику'?
Графика там в G00, конвертируется в PNG картинки и обратно. Для демки первых четырёх дней много не надо: несколько картинок со статусами и характеристиками в мини-играх. В любом случае, DENDentar не это имел в виду.. судя по всему, речь о интервалах между буквами в тексте.
Именно!
Текст для мини-игр нужно ещё надергать из файлов с кодом. Но храниться в переменных а не строках и не вынимается инструментарием в отдельный файл. Я начал искать и добавлять текст из кодов в перевод (вчера добавил несколько строк в уже переведённые файлы). Скоро всё будет.
'Ответственный за графику'? Там где не надо серьёзно переводить (меню, настройки – дёрну из кланнада) или и так всё понятно, сделаю я. Остальное... а там ~1к картинок по 2-3 слова из бейсбола и драк... я хз. Мне б только перевод, а править такие картинки – плёвое дело.
DENDentar, вы русские буковки в ShiftJIS что ли вбиваете и из под японского окружения игру запускаете? Откуда вообще игра шрифты берет? Если правильно помню, шрифт в разных версиях windows в этой игре выглядит по-разному.
скрытые комментарии (8 шт.)
RlDev выдаёт текст/код в utf-8, а при компиляции конвертит его назад в Shift-JIS.
Товарищ Hæleth (разработчик rlDev) оставил нам хорошие наследство – «rlBabel.dll: the All-Purpose Unicode hack for RealLive». Он организует псевдо поддержку Юникода. Весь выводимый текст конвертируется в юникод, так что текст нормально отображается (без закорючек) независимо от системной локали. + там сделана костыльная поддержка пропорциональных шрифтов которую удалось приспособить и для кириллицы.
p.s. Там организован перехват ряда вызовов системных функций, так что список шрифтов можно хоть руками составлять)
В battle ranking мини-игре на скрине выше наверное другой отдельный шрифт в этих местах используется.
Эти интервалы между буквами скорее всего в самом TTF-шрифте, то есть пустое место частью буквы считается. Как крайний вариант, возможно редактированием самого шрифта можно исправить.
Не, там просто другие функции используются, которые были неактуальны/небыло в Каноне (для которого всё это писалось), вот он их и не жрёт(
Нет шрифт нормальный (Meiryo UI), так движок работает. У него все символы одной ширины. Точнее две: одинарная – ASCII диаппазон и двойная – всё остальное.
Да, посмотрел только что, в Meiryo UI русские буковки идеально подрезаны, интервалов нет. Всё так и есть значит, очень плохо.
Колхозным методом можно перерисовать латиницу в нём, которая в ASCII и нормально отображается.))
Перерисовка (создание своего) шрифта будет последним методом, если взлом exe провалиться. Так как это очень неудобный для конечных пользователей метод.
Для демки то, в принципе, можно и так оставить. Не сказать что уж совсем ужасно смотрится. Перед нужными словами таг переноса на другую строку только расставить вручную, раз word wrapping не работает.
Так... Текст в мини-играх побеждён без модификации шрифта,но нужен моноширинный шрифт. Метод универсальный, и может исправить весь текст в игре, но так как все моноширинные шрифты убоги, я применю его только там где не работает основной метод.
http://free-pic.org/big/2014/bf90908ee2b274616a91e396feef4f3e.png
Выглядит отлично.
http://s019.radikal.ru/i633/1405/5e/467d3d4f7a73.png
↑↑↑ из под win8.1 оригинальный оригинальный текст так отображается
Фичу полезную сделали: http://vk.com/wall-54523753_2991
скрытые комментарии (15 шт.)
Видел, знаю, использую) Только скрипт для скачивания текста у нас глючит из-за слешей (\{Рин} -> {Рин}) и одинарных кавычек(
Пиплхай :)
Можно поподробнее, что именно не работает? Надеюсь, смогу оперативно исправить.
При скачивании, на самой странице скрипта всё ок, исчезают обратные слеши ( \{Имя} выходит так {Имя}, что рушит тэги), а фрагменты содержащие перевод строки отсутствуют и там и там.
Ясно.
Сегодня гляну.
По результатам отпишусь тут.
Ах да, изначально поддержка перевода строки внутри фрагментов не была реализована.
Ну, будет повод реализовать :)
Проблема со слешами устранена.
Кстати, принимаются пожелания по формату получаемых в итоге данных. Меня устраивает текущий, всю последующую обработку я делаю в NP++ или UltraEdit'е (в части многострочного поиска и поиска по регуляркам он таки лучше), но реализовать настройку этого дела совсем несложно.
Спасибо.
Хмм... мне пока хватает и текущего функционала. Главное чтобы нормально обрабатывались все спецсимволы, ну и поддержка переводов строк не помешает. Для всего остального есть NP++. Ну если только сделать отключение добавления ссылки на фрагмент и д.р. чтобы был только чистый текст. Мне, например, она не особо и нужна, правда и удалить её дело пары кликов)
Да, кстати, ссылками я никогда не пользовался. Сделаю чекбокс.
Переводы строк буду бороть обязательно. Давно собирался, да нужды не было: ни в одном проекте, где я поучаствовал, таких фрагментов не было, хотя я и допускал, что такие могут быть. Просто пока не готов сказать, смогу я это сделать быстро или нет – не помню, что я там набыдлокодил :)
Я вспомнил, почему я не реализовал переводы строк: у меня там сейчас обработка построчно идёт, а для того, чтобы обрабатывать переносы строк внутри фрагмента, нужно менять весь алгоритм. Но это всё мелочи. Только что я закончил в общих чертах работу над новым алгоритмом (и, как следствие, регулярками)... Но возник другой вопрос: а насколько правильны такие ситуации, когда фрагмент в себе несёт переносы? Просто как только я получил какие-то «живые» результаты, я понял, что с появлением переноса строк внутри фрагментов к чертям летит форматирование получаемого файла, где одна строка – оригинал, другая – перевод, и начинается разброд и шатание. А ведь у такого фрагмента может ещё быть более одного варианта перевода...
Решил ещё немного подумать, нужно ли потворствовать некорректному заведению проектов на Ноту. С другой стороны: а какая мне разница? Мне нужно средство людям удобное дать, даже если они микроскопом гвозди забивать будут :)
Галочку «без ссылки», как и говорил, прикручу в любом случае.
Я с вами в принципе согласен, но здесь такая специфика, а не моя прихоть. Я привёл немного не тот фрагмент, он возник как следствие добавления текста из строковых переменных уже после заливки основной части. Верным примером будет файл SEEN2005. Дело в том, что RealLive нескриптовый движок, это виртуальная машина использующая байт-код. И декомпилятор выдаёт текст именно в таком виде, дополняя теги перевода строк переводами строк для лучшего восприятия. А с учётом огромного объема текста мне гораздо удобнее работать по меткам компилятора <цифры в скобках>, а не по строкам, которые могут оказаться и пустыми (содержать только тег перевода строки), но иметь значение для оформления текста.
У каждого проекта своя специфика и каждому удобнее работать по своему. Да и гвозди микроскопом тоже иногда забивать приходиться)
Ага, да, вижу те фрагменты.
Чуть позже продолжу изыскания. Вопрос пока остаётся открытым: как один вариант перевода отбивать от другого, если вариантов больше одного?
И как выводить переводчика и оценку?
О! Я их тоже сделаю отключаемыми!
Но, блин, как один вариант перевода отбить от другого?
Готово
http://vayurik.ru/tools/notabenoid/create_text_file.php
Убедительная просьба сообщать об обнаруженных ошибках и высказывать пожелания :)
Дальше, вероятно, перепишу скрипт импорта, чтобы он мог импортить не только целиком файлы, но и файлы с отдельными фрагментами формата:
«
http://ссылка_на_фрагмент
Тут_текст_перевода_который_нужно_добавить_к_этому_фрагменту
»
Хмм... по моему не работает отключение имён переводчиков и оценок. Чтобы я не ставил, результат один – в файле присутствуют имена и оценки разделённые табуляцией.
Да, что-то поломалось, может... Я, кажись, уже сохранял без этого... Гляну, ок.
Починил :)
Добавил ссылки на архивы с английскими/японскими текстами к игре.
Посчитал тут на днях количество строк текста в игре, раньше не особо интересно было, а тут дернуло глянуть)
Статистика на ноте отображает бред т.к. здесь намешаны файлы из обоих версий игры.
В итоге получил довольно интересные цифры:
Оригинальное издание: 73382 строки без учёта строковых переменных и 75777 строк с учётом переменных используемых в мини-играх и т.д. Из них переведено ~37000 строк или ~48%.
Но дальше – больше.
Memorial/Perfect издание: 103325 строк без учёта строковых переменных.
Ecstasy (18+) версия: 108944 строк без учёта строковых переменных.
Таким образом, Little Busters! подтверждает звание самой длинной визуальной новеллы от Key обходя таких гигантов как Clannad и Rewrite с 102789 и ~101372 (информация взята с сайта Квентина, подтвердить или опровергнуть я её не могу так как сходу не нашёл рабочий инструментарий для разбора скриптов) строками соответственно.