Ой, что это?
Еще бы. Ведь мы пытались запустить игру с русским языком для программ не поддерживающих юникод(Панель управления-Язык и региональные стандарты-Дополнительно).
Для запуска игры после перевода из под русской локали придется сделать несколько манипуляций.
Нажимаем ОК и обращаем внимание на окно ошибки:
При неудачном запуске нам показывают, на каком файле и в каком месте оборвалось выполнение. Красным выделено название файла mainwindow.tjs, в нижней части окна написан номер строки, где произошла ошибка – 4086.
В данном файле в строке с ошибкой использованы иероглифы, но движок не может их правильно обработать.
Что делать? Можно заменить все иероглифы, стоящие в кавычках в этой строке на латиницу, но это тогда возможно придется менять эти значения и в других файлах, если они повторяются.
Более универсальный способ – перекодировать весь файл MainWindow.tjs в UTF-16LE и сохранить вместе с переведенными скриптами в patch.xp3 .
Естественно, движок просто так не сдастся. Хотя может повезти, и игра запустится со второго раза.
Во избежание проблем, не устанавливайте игру в папку с именем на японском, наберите его латиницей при установке. Еще желательно, чтобы в пути к игре не было пробелов и кириллицы. На всякий случай.
Перевод, перенос, перекрас…
При первом запуске скорее всего окажется, что буквы разъехались, заняли место на экране, которое не должны были занимать и прочее.
Для начала попробуем изменить шрифт, которым написан текст.
Открываем Config.tjs из папки data/system, ищем после заголовка function MessageLayer_config() :
defaultFontSize = 24;
Это размер нашего шрифта.
defaultChColor = 0xFFFFFF;
Цвет шрифта по-умолчанию. Код цвета в шестнадцатеричном виде.
defaultLineSpacing = 4;
Не совсем понятный мне параметр. Видимо, междустрочный интервал.
defaultPitch = 2;
Расстояние между буквами. Если кажется, что буквы слишком слиплись, его можно увеличить.
userFace = "Arial";
Имя используемого шрифта. Если нет уверенности как точно называется желаемый шрифт, уточните в Панели инструментов. Шрифт, естественно, должен быть установлен в системе и быть кириллическим. Если вы изменили имя, но шрифт в игре не поменялся, вы где-то ошиблись.
defaultBold = false;
Полужирный шрифт или обычный.
defaultShadowColor = 0x000000;
Цвет тени шрифта(если она есть).
defaultEdgeColor = 0x000000;
Цвет обводки шрифта(если она есть).
defaultShadow = true;
Включение тени для шрифта по-умолчанию.
defaultEdge = false;
Включение обводки для шрифта по-умолчанию. Отображаться может только что-то одно. Либо тень, либо обводка, но не вместе.
Точно такие же параметры находятся в том же файле в секции function HistoryLayer_config()
, но они отвечают за шрифт в окне истории, что не очень важно.
Теперь о переносах. Поскольку в японском отношение к переносам слов несколько иное, то и в движке возможность переноса сделана специфично.
Вот способы устранения проблем с переносами:
Первый, был найден еще insani во время перевода Fate/Stay night.
Подробно описан здесь: http://vnru.wikidot.com/ks
Предлагается задавать такую разметку для слов:
[wrap text="Выпад,"]Выпад, [wrap text="словно"]словно [wrap text="молния."]молния. [wrap text="Остриё"]Остриё [wrap text="копья"]копья [wrap text="разящее"]разящее [wrap text="в"]в [wrap text="сердце."]сердце. [wrap text="Увернуться"]Увернуться
По ряду причин многим не подходит.
Второй способ.
Наиболее простой.
Описан здесь: http://honyaku-subs.ru/forums/viewtopic.php?f=17&t=134
Суть в замене строки в файле messagelayer.tjs на:
var wwLeading="\\$([{「‘“(〔[{〈《「『【¥$£АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщэюяъыь.,";
Иногда рекомендуется добавлять в строку после всех букв алфавита точку и запятую.
Способ третий.
Скрипт от nagato.
Можно скачать здесь: http://wks.arai-kibou.ru/blog/files/nagato_kirikiri_wordwrap_r7.7z
UPD:
Спасибо Джефу и Максиму Щепалину, они разобрались со скриптом nagato.
Нужно добавить дополнительные строчки в файл MainWindow.tjs .
На случай, если ссылка на скрипт не будет работать, распишу все здесь.
В MainWindow.tjs ищем строчку
class KAGWindow extends Window
и после неё вставляем:
var wrapNum = 0; // wordwrapping word counter var wrapPos = 0; // wordwrapping length var oldLine = void; // wordwrapping comparison line var splitLine = void; // wordwrapping split text variable var breakWrap = 0; // wrapping flag during check var newPage = 0; // wrapping flag for new page
Затем после строчек
origch : function(elm) { var acs = actualChSpeed; if(updateBeforeCh) { if(acs) { updateBeforeCh--; return -5; } else { updateBeforeCh--; } } var text = elm.text;
вставляем
/* Wordwrapping code Nagato (nagato@readyoursicp.com) Last update: 2009/10/07 Limitations: - Any special commands that pass text and display from that function (for example, Sharin no Kuni's double/triple/fourfold commands do not have wrapping since what goes through here is an expression and not text) Basically, anything that uses [emb] to display text. Revision log: r7 - Fixed a problem which caused the r6 fix to create an infinite amount of blank pages r6 - Fixed a problem which could cause the wrapping to fail r5 - Fixed problem when starting new line r4 - Vertical wordwrapping r3 - Fixed problems that occured when the word trying to be wrapped is wider than the frame r2 - Rewrote parser, Bug fixes, tested on Sharin no Kuni and G-Senjou no Maou r1 - Initial release */ if(conductor.curLineStr.indexOf(" ")!=-1) // does the line have a ' '? if not, it's probably a japanese line and can't be split so just ignore the code here { if(oldLine!=conductor.curLineStr) // check if it's a new line, set/reset variables required for wrapping and parse string if it is { var tempStr = void; oldLine = conductor.curLineStr; wrapNum = 0; breakWrap = 0; for(var i=0,x=0,depth=0; i<oldLine.length; i++) // clean up string before splitting { if(oldLine[i]!='[') { if(oldLine[i]!='\\') // as silly as this line might appear at first, it's really not silly at all. { // the engine does not handle a '\' in the dialog the same way it does '\' outside of the dialog. tempStr = "%s%c".sprintf(tempStr,oldLine[i]); // the trailing '\' is ignored to increase the accuracy of wrapping } } else { for(var depth=0; i<oldLine.length; i++) // this particular piece of code is removing all [] commands from the input line { // previously it would fail to parse something like [if exp="kag.fore.messages[0].frameGraphic=='game_frame_avg2'"] if(oldLine[i]=='[') // because of the [] inside of the command { depth++; } else if(oldLine[i]==']') { depth--; if(depth<=0) // found what appears to be the end of the command, end search break; } } } } if(tempStr===void || tempStr.indexOf(" ")==-1) // another check is required in case the initial check missed something, also checks if tempStr is still empty breakWrap = 1; // this should only happen if for some reason conductor.curLineStr has a space in it (commands to go with the text for example) else splitLine = tempStr.split(" "); if(!current.vertical) // set the initial value for the position wrapPos = current.x; // for horizontal text else wrapPos = current.y+current.lineLayer.font.getTextWidth(" "); // for vertical text } if(!breakWrap) { if(text==" ") // since the start of a line won't start with a " ", we need to check what word we're on too { wrapNum++; // new word detected splitLine[wrapNum] += " "; // append a space to the word for space checking issues if(!current.vertical) wrapPos = current.x; else wrapPos = current.y+current.lineLayer.font.getTextWidth(" "); } if(wrapPos+current.lineLayer.font.getTextWidth(splitLine[wrapNum])>current.relinexpos) { if(current.lineLayer.font.getTextWidth(splitLine[wrapNum])<=current.relinexpos) // if the current line is wider than the frame, don't try wrapping it { text = ""; historyLayer.reline(); // break in the history if(current.processReturn()) // if there is no more room to add lines, go to a new page { newPage = 1; return showPageBreakAndClear(); } } if(!current.vertical) wrapPos = current.x; else wrapPos = current.y+current.lineLayer.font.getTextWidth(" "); } } } if(newPage==1) // if you go on to a new page it will start from the space, which needs to be dropped { text = ""; newPage = 0; } // end Wordwrapping code
Бывает, что несмотря на ваши усилия, текст все равно выводится с большим межбуквенным интервалом:
В таком случае, игра явно рассчитывает, что выводимый текст будет в японской кодировке. Подробно эта проблема расписана на форуме Honyaku-subs(http://honyaku-subs.ru/forums/viewtopic.php?f=17&t=134).
Чтобы ее решить, от вас потребуются навыки владения HEX-редактором. Открываем исполнимый файл игры(в данном случае, tundere.exe) в редакторе и ищем шестнадцатеричную строку С64317
. Следующий за ней байт будет указывать на используемую игрой кодировку.
Исправляем байт 80
на 01
(соответствует DEFAULT_CHARSET) или на CC
(RUSSIAN_CHARSET).
У вас есть в меню кракозябы?
Да, сам игровой текст выглядит великолепно, только что творится с главным меню окна? Сплошные кракозябы.
Ищем файл menus.tjs в папке /data/system и перекодируем его в UTF-16LE. Смотрим:
menu.add(this.systemMenu = new KAGMenuItem(this, "システム(&S)", 0, "", false));
Ага, что-то похожее на содержимое нашего меню, не так ли?
Буквы с амперсандом в круглых скобках (&S)
обозначают горячие клавиши, их желательно оставить на месте.
А как же заголовок окна и внутриигровые сообщения?
Заголовок окна меняется в файле Config.tjs в строке System.title = ""
. Если игра использует текстовые сообщения в дилоговых окнах типа «Вы точно хотите выйти?» или «Вы точно хотите загрузить игру?», надписи находятся в файле YesNoDialog.tjs ( yesButton.caption = "はい";
)
Текст для такого незаметного элемента интерфейса как всплывающие подсказки(hints), лежит в файле systembutton.ks :
obj.hint='Сохранить';
Самые хитрые всплывающие подсказки и описания притаились в HistoryLayer.tjs , потому что режим истории в этой игре тоже имеет элементы экрана с надписями.
Ну и напоследок остается перевести заголовок окна «О программе» в файле about.ks :
@title name "Tsundere na imouto"
Перекодируем все измененные файлы в юникод и добавим их в
patch.xp3 .
CG, виджи и сидоджи.
Долго нам еще терпеть японские символы в игровом меню? — спросите вы. Файлы .png и .bmp , которые содержат графику элементов интерфейса лежат в папках bgimage и gui. Для полного перевода придется изменить файлы, относящиеся к главному внутриигровому меню, панели загрузки, панели сохранения…
Поскольку это процесс не быстрый и требует многократных исправлений, я рекомендую после того, как вы воспользовались вашим любимым Photoshop’ом/Gimp’ом не сохранять работу в bmp или png, а оставить в psd.
Чтобы в дальнейшем быстрее конвертировать файлы из более удобного формата в тот, который требует игра, удобно использовать консольную утилитку nconvert.
Акумакко кроется в деталях.
Допустим, текст переведен и графика тоже. Остались только мелкие детали, которые постоянно попадаются на глаза в процессе тестирования.
Каждая часть сценария может иметь маленький «подзаголовок», видный только при сохранении игры.
Вернемся в файл скрипта и проверим метки в начале файла:
*030|Наблюдение
Да, именно это. Вот только после перевода текст занимает гораздо больше места, чем мы рассчитывали и вылезает за пределы слота сохранения.(На картинке этого не видно, там я уже поправил :))
Более тонкую настройку можно провести в файлах savemode.ks (экран сохранения) и loadmode.ks (экран загрузки).
Ищем:
[current layer=message11 page=back][er] [font face="Arial" size=18 color=0xffffff bold=false shadow=false] [locate x=120 y=160]N.[emb exp="'%2d'.sprintf(((10*f.page)+ 1))"]:
Похоже на то, что нам нужно. Тут и размер шрифта и цвет и стиль. А нижняя строчка непосредственно выводимый текст (В даном случае, «N.
» и порядковый номер сэйва). « locate x=120 y=160
» – это положение текста на странице, отступы от края экрана в пикселях.
Почему аналогичных строчек десять? Потому что на экране загрузки/сохранения на страницу приходится десять слотов. Если вносить какие-то изменения в координаты x, y одного из них, то нужно править и другие. То же самое относится к тексту.
Ищем дальше:
[font face="Arial" size=18 color=0xffffff bold=false shadow=false] [locate x=182 y=160][emb exp="kag.getBookMarkDate(((10*f.page)+ 1))"]
Следующая часть надписи в слоте. BookMarkDate подсказывает нам, что это текущие дата и время в формате Год/Месяц/День Часы:Минуты
Принцип тот же самый.
И наконец то, что мы искали:
[font face="Arial" size=18 color=0xffffff bold=false shadow=false] [locate x=120 y=191][emb exp="kag.getBookMarkPageName(((10*f.page)+ 1))" cond="kag.getBookMarkPageName(((10*f.page)+ 1)) != 'Non Data...'"]
Непосредственно подзаголовок из сценария.
Изменяем размер шрифта(size=18) если нужно и положение заголовка сейва, подправляя значения x
и y
.
Учтите, что в отведенную строчку потенциально должен умещаться любой «подзаголовок» скрипта (в данном случае, *030|Наблюдение
).
Все изменения повторяем для всех слотов
После всех изменений не забудьте перекодировать файл в UTF-16LE и сделать аналогичные изменения в файле loadmode.ks уже для экрана загрузки.
Последние штрихи
Порой визуалки становятся слишком самостоятельными и стремятся записать сохранения в свою подпапку в /My Documents/ . Если это не так, то сохранения скорее всего хранятся в папке savedata рядом с установленной игрой.
Чтобы развеять сомнения, найдите строчку
saveDataLocation = System.personalPath + "BABEL/Tsundere_na_imouto_rus";
в файле Config.tjs . Название папки после «=» можно менять, но желательно, чтобы путь не содержал японских символов.
Вот и все.
Конечно, с переводом новеллы может возникнуть еще тысяча проблем, которые я здесь описать просто не смогу. Поэтому, ищите решение, спрашивайте, пробуйте и у вас все получится! 😉
Несколько советов напоследок:
- Повторюсь, не путайте синтаксис файлов. В одних знак комментария точка с запятой (
;
), в других – двойной слэш (//
). - Сделайте копию всех файлов новеллы после распаковки архивов. На всякий случай.
- Чаще пользуйтесь консольными утилитами упаковки/распаковки и конвертации. Очень экономит время и силы. Цепочки команд записывайте в .bat или .sh файлы. Запустив .bat файл двумя кликами можно скопировать исправленные вами куски сценария и запаковать их в patch.xp3 .
- Для работы с графикой рекомендуется использовать nconvert, как я упоминал выше.
Для написания этой инструкции, я использовал данные из трех новелл:
Tsundere na imouto
Akumakko wa ijippari
Neko hime
Утилиты, полезные ссылки:
http://tlwiki.org Для написания статьи использовалась информация оттуда.
http://wks.arai-kibou.ru/ae.php AnimeEd, наглядный, многофункциональный паковщик/распаковщик ресурсов.
http://wks.arai-kibou.ru/ae.php?p=dl KiriKiri2/KAG3 Embedded EXE Splitter & Merger для извлечения xp3 из exe файлов.
http://tlwiki.org/images/a/af/Xp3tools-20060708.zip Консольные утилиты распаковки/запаковки от insani.
http://tlwiki.org/index.php?title=File:Kikiriki.rar Консольные утилиты для Kirikiri от автора движка.
http://www.xnview.com/en/nconvert/ Консольная утилита nconvert для работы с графикой
https://github.com/vn-tools/tlg2png Преобразование tlg файлов в png.
http://vnru.wikidot.com/tlg Набор утилит krkr, позволяющий преобразовывать tlg в png и обратно.
http://honyaku-subs.ru/forums/ В прошлом достаточно оживленный форум переводчиков новелл на русский. Сейчас хранилище полезной информации.
http://forums.fuwanovel.net/ Англоязычный форум для интересующихся визуальными новеллами. Много переводчиков и редакторов.
Удачи!
Добрый день. Можете обновить ссылку, или скинуть программу Embedded EXE Splitter & Merger для извлечения xp3 из exe файлов? У вас ссылка дана на AnimeEd. Который вроде не умеет это делать, ну или я не знаю как 😦 С уважением, Джеф.
НравитсяНравится
В статье я давал ссылку на страницу, где доступна скачка и Embedded EXE Splitter & Merger. Вот прямая ссылка: http://wks.arai-kibou.ru/download/ae/tools/kirikiri_sm_20101004.7z
НравитсяНравится
Большое спасибо. Скачал. К сожалению прога не смогла разделить exe’ник, так что скорее всего я был не прав 😦 Но в любом случае — спасибо.
НравитсяНравится
А что за игра, если не секрет? Может там как-то запаковано хитро.
НравитсяНравится
Не секрет Secret Sorrow of the Siblings. https://vndb.org/v9709
Там вроде как файлы xp3 даны (в английской версии), но текстовых (эвенты) там нет.
Я вообще только недавно начал переводами интересоваться : http://perevodijeff.blogspot.ru/
НравитсяНравится
Возможно стоит поискать версию на японском. Видимо мангагеймеры перепаковали исходные .xp3 по своему.
НравитсяНравится
Я думал об этом. Но смысл, японского то я не знаю 🙂 А автопереводчиками переводить достаточно сложно, у меня одна такая игра в проекте уже есть. Брать на себя больше не хочу.Тем более, что у меня пока есть что переводить.
НравитсяНравится
Добрый день. Вопрос возник немного неожиданный по вопросу с тем же переводом, вдруг знаете ответ. Я понял как делать переносы, и с этим проблем нет. Проблема в том, чтобы ограничить любой текст от преодолении рамки. Непонятно объяснил наверное, но по скринам сейчас будет видно: http://i72.fastpic.ru/big/2015/0814/37/77044b9b2b2a250f4bd9364153471537.jpg
И проблема не в шрифтах (я сейчас экспериментировал как раз таки с ними, поэтому они такие большие). Сейчас, я избавляюсь от текста за пределами рамки с помощью расставленных в ручную в файле перевода в нужных местах [r]. Но может есть в каком-нибудь файле что-то вроде указанного вами в примере «[locate x=120 y=191]»? То есть файл, где прописано, что любые буквы не могут выходить за определенные координаты. В любом случае, спасибо за внимание, с уважением, Джеф.
P.S. Давно не было обновлений на сайте, вы планируете ещё что-нибудь переводить, или просто отдыхаете после завершения перевода игры?
НравитсяНравится
Мое почтение.))
Да, действительно такая проблема есть. Я уже писал об этом в одном из предыдущих постов:
Кардинально, насколько я помню, решить так и не получилось, тем более для разных игр бывает нужен разный размер шрифта.
Но Chtobi все же написал утилитку, которая позволяет облегчить расстановку тегов [r]
Правда, она была рассчитана на Tsundere na imouto, и в качестве максимального числа символов в строке там принято 50. Не уверен, что подойдет…
Вроде как-то можно было это число менять, но надо будет уточнить.
После авторасстановки кстати, все равно иногда нужно вручную строки подправлять, никуда не деться.
Писали, что в некоторых версиях Kirikiri в одном из файлов вроде бы есть строка
scDRAWMAX = 90;
которая отвечает за максимальное количество символов в строке.
Вот только у себя я такой строки не нашел.( Так что пришлось пользоваться методом выше.
Обновлений не было, потому что все отдыхают.) Новый проект готовится, но увы, есть кое-какие технические проблемы.
Переводить уже можно, только будет ли игра работать — неизвестно. Так что до осени постараемся определиться, что делать дальше.))
НравитсяНравится
Доброе утро и спасибо за ответ.
«Писали, что в некоторых версиях Kirikiri в одном из файлов вроде бы есть строка
scDRAWMAX = 90;»
Да, у меня тоже нет такой строчки.
«Но Chtobi все же написал утилитку, которая позволяет облегчить расстановку тегов [r]»
Я скачивал эту программку, но если честно, у меня даже не получилось её включить 😦 А FAQ к ней не было. В любом случае, спасибо за ответы. P.S. Смена размеров шрифта действительно сильно помогло, осталось в ручную не так много переносов сделать.
НравитсяНравится
>Я скачивал эту программку, но если честно, у меня даже не получилось её включить
Она работает только через командную строку. Это сделано для удобства пакетной обработки.
Запуcкается через cmd.exe
FAQ как такового там нет, но в файле kiri_imo.txt расписаны основные ключи для работы и пример использования.
НравитсяНравится
Добрый вечер. Я всё еще насчёт проблем с переносом в движке кирикири. Мне подсказал Максим Щепалин, с сайта https://vk.com/visualnovel_ru решение данной проблемы.
Для этого открываем файл MainWindow.tjs и ищем строку:
class KAGWindow extends Window
и после неё вставляем:
var wrapNum = 0; // wordwrapping word counter
var wrapPos = 0; // wordwrapping length
var oldLine = void; // wordwrapping comparison line
var splitLine = void; // wordwrapping split text variable
var breakWrap = 0; // wrapping flag during check
var newPage = 0; // wrapping flag for new page
Далее ищем строки:
ch : function(elm)
{
var acs = actualChSpeed;
if(updateBeforeCh)
{
if(acs) { updateBeforeCh—; return -5; } else { updateBeforeCh—; }
}
var text = elm.text;
И после них вставляем:
if(conductor.curLineStr.indexOf(» «)!=-1) // does the line have a ‘ ‘? if not, it’s probably a japanese line and can’t be split so just ignore the code here
{
if(oldLine!=conductor.curLineStr) // check if it’s a new line, set/reset variables required for wrapping and parse string if it is
{
var tempStr = void;
oldLine = conductor.curLineStr;
wrapNum = 0;
breakWrap = 0;
for(var i=0,x=0,depth=0; i<oldLine.length; i++) // clean up string before splitting
{
if(oldLine[i]!='[')
{
if(oldLine[i]!='\\') // as silly as this line might appear at first, it's really not silly at all.
{ // the engine does not handle a '\' in the dialog the same way it does '\' outside of the dialog.
tempStr = "%s%c".sprintf(tempStr,oldLine[i]); // the trailing '\' is ignored to increase the accuracy of wrapping
}
}
else
{
for(var depth=0; i<oldLine.length; i++) // this particular piece of code is removing all [] commands from the input line
{ // previously it would fail to parse something like [if exp="kag.fore.messages[0].frameGraphic=='game_frame_avg2'"]
if(oldLine[i]=='[') // because of the [] inside of the command
{
depth++;
}
else if(oldLine[i]==']')
{
depth—;
if(depthcurrent.relinexpos)
{
if(current.lineLayer.font.getTextWidth(splitLine[wrapNum])<=current.relinexpos) // if the current line is wider than the frame, don't try wrapping it
{
text = "";
historyLayer.reline(); // break in the history
if(current.processReturn()) // if there is no more room to add lines, go to a new page
{
newPage = 1;
return showPageBreakAndClear();
}
}
if(!current.vertical)
wrapPos = current.x;
else
wrapPos = current.y+current.lineLayer.font.getTextWidth(" ");
}
}
}
if(newPage==1) // if you go on to a new page it will start from the space, which needs to be dropped
{
text = "";
newPage = 0;
}
// end Wordwrapping code
На всякий случай, если в комментарии разбились строчки (у меня такая проблема была, когда мне написали эти строчки в вконтакте), вот пример этого файла, уже исправленного. Там легко найти строчки по поиску. Я уже проверил этот способ, и в моем случае (Kioku Soushitsu no Okaa-san) он полностью работает. Но требует полного удаления [r]. С уважением, Джеф.
https://yadi.sk/d/MxAL63hwiahjd
НравитсяНравится
Очень ценно, большое спасибо. Это как раз тот способ «скрипт от nagato», про который я писал. Только так и не собрался его попробовать.
Теперь появилась ясность.
Надо будет дополнить статью…
НравитсяНравится
Могу прокомментировать, что мне кажется данный способ подходит к чисто японским версиям (имхо), во всяком случае в Bukkake Ranch! от Mangagamer на английском языке, данный скрипт вызывает зависание игры.
НравитсяНравится
Вопрос по поводу запаковки, в оригинале Mahoutsukai no yoru все файлы XXX.xp3 имеют еще один файл XXX.xp3.sig если изменить хоть немного файл xp3 то игра уже вылетает. Даже файл патча с такой же фишкой, как бороться?
НравитсяНравится
Присоединяюсь к вопросу Sergey, единственное, только, что мне кажется, что .sig всегда там — где архивы зашифрованы (запаролены).
НравитсяНравится
Делали Тайпмуновцы, от них всегда можно ожидать чего-нибудь заковыристое, как с Fate/Stay night. Не в курсе, к сожалению. Подозреваю, что зашифрованный .xp3 .
Если учесть, что Mahoutsukai no yoru начали переводить на несколько языков, думаю какое-то решение уже найдено.
НравитсяНравится
Долго парил голову и пришел к решению не заниматься расшифровкой а использовать arc_conv.exe 54 версии, там есть множество форматов которые прекрасно распаковываются в общем создаем батники ( в архиве к 54 версии есть синтаксис и настройки под другие игры и форматы formats.txt)
Примеры(для игры Mahoutsukai no yoru) (как именно писать команды см. formats.txt):
Распаковка без конвертации(изображения .tlg) :
mahoyo_extract.bat
@echo off
arc_conv.exe —xp3 mahoyo —conv 0
Распаковка с конвертацией(изображения .tga) :
conv_mahoyo_extract.bat
@echo off
arc_conv.exe —xp3 mahoyo —conv 1
Запаковка(при запаковке изображения сохранить в формате .tlg, возможно есть способ затолкать .tga напрямую в xp3, но мне пока это не удалось)
mahoyo_pack.bat
@echo off
arc_conv.exe —pack xp3 название.xp3~ название.xp3 mahoyo
Насчет сигнатуры, проблема решилась частично, после сохранения обработанного файла xp3 в утилитах движка kirikiri 2 есть krkrsign.exe решающий проблему создания файла .xp3.sig
мне повезло патч к игре не требует его.
НравитсяНравится
Спасибо за дополнение. Я работал с arc_conv, но для распаковки других форматов. Значит, он может вскрывать еще и запакованные xp3.sig .
Если я правильно понял, созданный к игре патч не обязательно как-то специально запаковывать, подойдет и обычный .xp3 ?
НравитсяНравится
Все проще судя по всему файл .sig идет отдельно от файла, шифрование же происходит на этапе запаковки (arc_conv с использованием синтаксиса запаковки/распаковки именно под нужную игру), у меня пропатченный екзешник(no-cd притом он почти в 2 раза легче оригинала), так что возможно поэтому отсутствует потребность в .sig файле(хотя его легко создать).
НравитсяНравится
Ломаю голову над проблемой, которая описана в гайде:
«Бывает, что несмотря на ваши усилия, текст все равно выводится с большим межбуквенным интервалом:»
Японская игра на движке КириКири. Русский текст сильно растягивается и никуда не влезает. Нашел в игре файл Config.tjs, а там строки:
;defaultFontSize = 24;
;defaultLineSpacing = 6;
;defaultPitch = 0;
Изменение их значений не помогает.
НЕХ редактор не находит строку С64317, по какой-то причине. Ссылка на подробное описание уже не работает, похоже. Можете посоветовать ещё что-нибудь? Эта проблема убивает смысл делать перевод игры.
НравитсяНравится
С почином, как говорится.)
О какой игре идет речь?
Можно exe файл игры куда-нибудь залить, чтобы поглядеть потом ?
Кстати, у меня в статье ошибка в расширении файла, надо будет поправить.)
НравитсяНравится
Мне уже помогли решить проблему. Оказалось что при первом запуске игра сохраняет шрифты в папку save и после этого изменения шрифта не имеют эффекта.
НравитсяНравится
Гспода.
Прошу меня простить, но как «перекодировать в UTF-16LE».
НравитсяНравится
Просто открыть файл через Notepad++ , выбрать из меню Кодировки->Преобразовать в UCS2-Little Endian и сохранить.
НравитсяНравится
Dikoy писал,
НЕХ редактор не находит строку С64317.
У меня та же проблема.
Подскажите как её найти.
Я делаю так — Ctrl+F -> вставляю С64317 -> Enter.
Пишет: «Последовательность не найдена».
НравитсяНравится
День добрый! Воспользовался одним из советов в ЕХЕ заменил байт, все отлично сработало. Но текст заменился только в основном диалоге, в «истории» отображение старое, как найти необходимый байт?
НравитсяНравится
Так сразу и не скажешь… Возможно дело в шрифте, которым выводиться текст в режиме истории. Можно для начала проверить, изменен ли userFace на кирилический шрифт в разделе function HistoryLayer_config()
НравитсяНравится
Заменен везде 😦 Символы выводимые в диалогах истории остались прежними 「」, в то время как в обычном диалоге при смене кодировки они «пропали».
НравитсяНравится
Занятно. А можно скрины посмотреть? Как выглядит текст в режиме истории и в окошке.
НравитсяНравится
Да, конечно! http://itmages.ru/image/view/4952157/d32b67b8 шрифт используется Times New Roman
НравитсяНравится
Хм… А игра большая? Мы бы могли попробовать ее поковырять, но для этого желательно иметь сам экзешник и игровые архивы. Есть возможность ее заархивировать и кинуть куда-нибудь на файлообменник? Кстати, мне можно писать в личку в контакт: https://vk.com/nazonov
НравитсяНравится
Господа.
Так и не смог воспользоваться утилитой tlg2png (преобразованием tlg файлов в png).
Можно как-то подробней.
НравитсяНравится
Что конкретно не получилось?
Файл не извлекся или что? Кстати, из какой игры tlg?
НравитсяНравится
Игра у меня, достаточно, фривольного содержания — это Мэй и Рей (Mai & Rei).
В принципе, для перевода картинки не нужны, но меня просят рип сделать.
А делать его с экрана, получится качество не очень хорошее.
А часть игры, в самом начале, использует картинки.
А не получается у меня всё — перехожу по ссылке https://github.com/vn-tools/tlg2png на сайт.
Если я правильно понял, щёлкаю зелёную кнопку «Clone or download».
В всплывающем окне использую кнопку «Download ZIP».
Скачиваю. Разархивирую.
А вот что с этим делать, не пойму.
P.S. У меня уже есть некоторый опыт перевода игр на движке Kirikiri.
Это «Шалунья» (えっちな彼女(夏)) —
и «Потайной домик 2» (えっちな秘密基地2) —
Но они тоже фривольного содержания.
НравитсяНравится
Здесь https://github.com/vn-tools/tlg2png надпись в описании «To download precompiled Windows binaries, head over to releases.» как бы намекает нам, что нужно перейти по ссылке.)
Запускать нужно в формате tlg2png имя_tlg_файла имя_png_файла
По-моему, с tlg из этих игр программа должна работать.
Извините, ссылки из вашего предыдущего сообщения убрал, а то у меня антиспам с ума сходит.)
НравитсяНравится
Запускаю tlg2png.exe. Появляется и тут же пропадает окно, вроде как эмулятор DOS — не успеваю заметить.
Запускал и от имени администратора, и в режиме совместимости.
У меня Windows 10 64 bit — может проблема в этом?
НравитсяНравится
Нет, Windows 10 не проблема. Вам нужно научиться работать с командной строкой cmd.exe , так как tlg2png работает только в таком режиме и запускается только из cmd.
НравитсяНравится
Спасибо, получилось.
А как обратно перевести в формат tlg правленую картинку?
НравитсяНравится
Не думаю, что это возможно данной программой. Тут что-то другое нужно искать.
НравитсяНравится
Спасибо, буду искать.
Если найду отпишусь.
НравитсяНравится
Чтобы сделать обратный перевод из png в tlg можно использовать набор «krkr» отсюда — http://vnru.wikidot.com/tlg
Я опробовал — получилось.
НравитсяНравится
Как, расскажи, чего писать надо?
НравитсяНравится
Честно говоря, не знаю. В итоге, я так этой программой и не пользовался.
НравитсяНравится
Нашёл xp3viewer он типа конвертирует. Но у меня он не хочет принимать файлы
НравитсяНравится
Чего за игра? Какие файлы? Что значит «не хочет принимать»? Телепаты в отпуске, мне ничего не понятно.
НравитсяНравится
Господа.
Прошу прощения, ссылка данная мной уже не работает.
Сбросил папку не Яндекс-диск, ссылка ниже.
https://yadi.sk/d/CQZwpQwr3W2YP6
В папку добавил текстовой документ с кратким описанием.
P.S.
Программой «tlg2png» я вытаскиваю картинки, правлю как мне надо,
а программой «krkrtpc» правленые картинки перевожу обратно в формат tlg.
НравитсяНравится
Скажите, пожалуйста, как именно конвертировать tlg в png в командной строке. Нужно сперва через команду cd /d переходить в папку с tlg2png.exe или в папку с tlg изображениями, которые мне необходимо сконвертировать?
НравитсяНравится
Нужно научиться работать с командной строкой, для начала.
Обычно так:
Переходим в папку с tlg2png.exe (если Винда, то например cd /d C:\path )
Запускаем tlg2png.exe с указанным путем к tlg файлу и к полученному png файлу:
tlg2png C:\path\file.tlg C:\path\file.png
НравитсяНравится
Нужна помощь. Пробовал на нескольких играх. Файлы все вытаскиваются, я их редактирую (какие надо) и создаю архив patch.xp3, запускаю игру и выдаёт ошибку на файл Initialize.tjs.
Если быть точнее то на вот эту часть в файле Initialize.tjs
// 追加のパッチ用アーカイブの検索
for(var i = 2; ; i++)
{
// パッチ用アーカイブ patch2.xp3, patch3.xp3 … がある場合はそちらを
// 優先して読み込むように
if{Storages.isExistentStorage{System.exePath + «patch» + i + «.xp3»}}
Storages.addAutoPath{System.exePath + «patch» + i + «.xp3>»};
else
break;
}
Что я делаю не так?? Что ему не нравится?? Подскажите пожалста.
НравитсяНравится
Что за игра? Что за ошибка?
Скриншот ошибки в студию!
НравитсяНравится
Игра называется «Prison Battleship English».
Эта ошибка на один и тот же файл выходит на разных играх, неважно английский перевод или японский. Вытаскиваю файлы, нахожу нужные, перевожу текст/картинки/и т.д., перекодирую файл с переведенным текстом, собираю архив обратно, перетаскиваю обратно в папку с игрой, запускаю и ошибка:
1) http://i12.pixs.ru/storage/4/6/3/perviyjpg_9406860_26726463.jpg
2) http://i12.pixs.ru/storage/4/4/5/vtoroyjpg_1641629_26726445.jpg
НравитсяНравится
Движок выдает ошибку, что не может прочитать файл patch.xp3 . Каким инструментом переупаковывали обратно в xp3 ? Или игра использует дополнительное шифрование или другой переупаковщик.
НравитсяНравится
Хм-хм-хм.
Вот оно что. Тогда буду пробовать другие программки для упаковки переделанных файлов. Спасибо.
А распаковывал и упаковывал обратно я программой «AE Tools»
НравитсяНравится
ОМГ… порылся на англ форуме и нашёл причину той ошибки. Сейчас всё работает.
Надо было в программе выбрать в какой формат запаковывать архив (как я понял) (на скриншоте отметил красным)
1) переведенное меню:
2) выбрал выделенный формат:
НравитсяНравится
А, ну так есть. Я потому и советовал xp3-repack использовать для обратной запаковки, поскольку там все по-умолчанию идет.
НравитсяНравится
Доброго времени суток, прошу поддержки.
Решил поиграться с Fate\stay night Realta nua, поставил кириллические шрифты, в итоге в окне истории всё отображается нормально, а вот в обычном окне с текстом символы широкие. HEX-редактором значение поменял, не помогло. В чем может быть дело, где копать? Скрипты могу приложить.
НравитсяНравится
Возможно, игра использует другой шрифт для окна с текстом. Скорее всего, шрифт для него прописан еще где-то в другом месте, не только в userface.
Вот тут на форуме, где обсуждают английский патч есть что-то про шрифты, я не вникал, но вдруг поможет.
http://forums.nrvnqsr.com/showthread.php/4745-Fate-Stay-Night-Realta-Nua-PC-version-Mirror-Moon-TL-insertion-project/page533
http://forums.nrvnqsr.com/showthread.php/4745-Fate-Stay-Night-Realta-Nua-PC-version-Mirror-Moon-TL-insertion-project/page534
НравитсяНравится
Чтобы сделать обратный перевод из png в tlg можно использовать набор «krkr» отсюда — http://vnru.wikidot.com/tlg
Я опробовал — получилось.
Может стоит ссылку дать в самой теме, а не только в комментариях?
НравитсяНравится
Спасибо. Обновил пост.
НравитсяНравится
Насчет плагина для Susie: на сайте не открывается ссылка, т.к. её не существует даже через VPN. Но я нашел альтернативную ссылку, которая работает: http://elksimple.web.fc2.com/other/spi_tlg003.zip
НравитсяНравится
Возможна ли пакетная перекодировка файлов.
Я пришёл к выводу, что будет лучше сразу все tjs- и ks-файлы перекодировать.
Но их бывает много, вот и встаёт вопрос, как это сделать сразу во всей папке.
НравитсяНравится
Да, в теории это возможно. Например через iconv. В итоге должна получиться команда вроде: for %%i in (*.txt) do iconv -f Shift_JIS -t UTF-16LE «%%i» > UTF-16LE/%%i
Хотя вроде пишут, что iconv не всегда адекватно текст обрабатывает.
Другой вариант сделать то же самое, но через Network Kanji Filter. У него должна быть и Windows версия, но я ее не нашел
НравитсяНравится
При создании patch’а возникла вот такая проблема:
Файл Config.tjs хранится в Data (не в system), но при закидывании этого файла в Patch2.xp3 он не воспринимает его, хотя файлы сценария он использует.
Если перепаковать саму Data.xp3 то все настройки из него применяются. Но слишком запарно ради перевода перезаливать весь файл Data.
Мб я не понимаю как правильно его запаковать, но я пробовал также создавать для него папки («system», «data»). Но как игнорировал, так и игнорирует.
P.S. Для файлов сценария папки создавать было не нужно
НравитсяНравится
Для начала, что за игра?
Может попробовать перепаковать в patch.xp3 , а не в patch2.xp3 ?
НравитсяНравится
Игра 七人杀阵 — Seven Sacrifices
В patch.xp3 хранятся dlc, я попытался запаковать к ним и файл конфигурации, но эффект тот же.
НравитсяНравится
Китайцы? А это точно движок Kirikiri2, а не KirikiriZ ? Не могу сказать точнее, т.к. не вижу, где скачать. Можно как-нибудь мне ее скинуть?
Тут может быть несколько моментов.
В чем выражается «не восприятие» файла игрой? Файл сейчас в UCS-2 LE перекодирован?
Если не воспринимаются отдельные параметры файла, возможно, проблема в них.
НравитсяНравится
Ссылка на ЯД — https://yadi.sk/d/THEfnBbQUvkd3A (Как отвязать от стима я не знаю.)
Кодировка файла UCS-2 LE.
На счет отдельных параметров не уверен, так как пытался менять лишь шрифты (размер, отступ, шрифт и тп.) и имя окна (оно тоже не изменилось).
НравитсяНравится
Поковырялись с игрой. Хитрая печенька.)) Если вкратце: без изменения Config.tjs в data.xp3 изменения не применятся, но если очень хочется, то можно.)
Я с такой особенностью движка не сталкивался, поэтому не написал об этом.
Обычно загрузка файлов в архивах идет так:
Открывается data.xp3
Грузится startup.tjs
Грузится Initialize.tjs
Из него командами грузятся дополнительные архивы, если они есть (типа video.xp3, plugin.xp3, patch.xp3 …)
Так вот Config.tjs по умолчанию грузится из data.xp3 в первую очередь(это видно в логах), поскольку он лежит не в папке, а в корне архива:
22:55:32 KAG : EX 3.27-dev.20070519
22:55:32 Kirikiri : 2.30.2.420
22:55:32 Config.tjs を読み込みました(0ms)
Поэтому ни startup.tjs, ни Initialize.tjs, ни Config.tjs переопределить в patch.xp3 мы не сможем, потому что движок их ищет в первую очередь в корне data.xp3
Отсюда два варианта:
1)Обычный. Плюнуть и перепаковать свой Config.tjs в оригинальный data.xp3
2)Более хакерский.
Создать patch2.xp3 , где в корне архива(это важно!) лежат файлы:
UpdateConfig.tjs , в котором написано:
if(Storages.isExistentStorage(«Config2.tjs»))
{
KAGLoadScript(«Config2.tjs»);
}
И файл Config2.tjs , в котором собственно измененный Config.tjs c добавленным названием окна или измененными шрифтами.
Далее кладем patch2.xp3 в папку с игрой и запускаем как обычно.
По крайней мере, название игры в заголовке у меня таким образом изменить получилось, насчет смены шрифта и остального не уверен.
Сразу предупреждаю, что способ «грязный», т.к. мы подсовываем низкопробную шарманку(свой UpdateConfig.tjs) , вместо родного, чтобы обойти ограничения. Если разработчики прочухают, они могут постараться прикрыть эту дыру.
НравитсяНравится
Спасибо огромное, сам бы не разобрался.
Так же заметил что не обязательно создавать Config2.tjs, если переименовать Config.tjs в UpdateConfig.tjs без добавления каких либо скриптов, то игра нормально его воспринимает (меняется название, шрифт и т.п.)
НравитсяНравится
Да, так тоже можно. Просто тогда нужно не забыть, что ключевым будет являться именно UpdateConfig.tjs и все изменения вносить в него.
НравитсяНравится
Хочу вытащить игру из exe-шника через консоль, но не получается.
Игра здесь — https://yadi.sk/d/n6802qbH_IscxQ
Я создал отдельную папку, в неё бросил папку kirikiri_sm_20101004.
В папку kirikiri_sm_20101004 бросил exe-шник.
Запускаю kiri_sm.exe, в командной строке прописываю kiri_sm.exe -e sell_out_1st.exe, после чего программа вылетает.
Что я делаю неправильно?
НравитсяНравится
Запускаю kiri_sm.exe, в командной строке прописываю kiri_sm.exe -e sell_out_1st.exe, нажимаю Enter после чего программа вылетает.
НравитсяНравится
Попробовал, УМВР.
Может что-то написали неправильно? Что значит «вылетает»? Программа консольная, она должна вывести какой-то ответ.
НравитсяНравится
А что такое УМВР?
У меня Windows 10 64-bit.
Когда я в командной строке ввожу kiri_sm.exe -e sell_out_1st.exe и нажимаю «ентер», командная строка просто закрывается.
Сейчас попробовал запускать kiri_sm.exe от имени администратора — всё тоже самое, командная строка просто закрывается без каких-либо сообщений.
Я сейчас сделал это на другом компьютере, с такими же характеристиками.
Хотел попробовать на виртуальной машине с Windows 7 32-bit.
Но думаю, дай-ка я попробую ещё через PowerShell.
Запускаю PowerShell из папки с программой kiri_sm.exe и от имени администратора, прописываю —
PS C:\kirikiri_sm_20101004> .\kiri_sm.exe -e sell_out_1st.exe (здесь важно добавить .\) -> Еnter/
И, о чудо, получилось.
Я так понял, что это из-за Windows 10 64-bit, поэтому стоит прописать это в самой теме.
P.S.
Спасибо большое и за эту тему, и за ваши быстрые ответы.
Постоянно сюда заглядываю и постоянно нахожу что-то новенькое для себя.
НравитсяНравится
У Меня Все Работает.)
Попробовал на десятке и на семерке x64. Работает везде через cmd. Сложно сказать в чем дело.
НравитсяНравится
Замахнулся я тут на перевод — Onii♥Kiss: Onii-chan, Where’s My Kiss?
Я так понял, что игра на движке TVP(KIRIKIRI) Z core.
Программа AE tools её не может распаковать.
Но программа GARbro легко открывает эти архивы и может их разархивировать в нужную папку.
Я этой программой распаковываю архив data.xp3 и создаю одноимённую папку.
Если сразу после этого, используя программу AE tools и создать новый архив data.xp3, он становится больше на 30 МБ, но игра нормально запускается.
Всё бы хорошо.
Но тексты лежат в папке scn в файлах с расширением .scn
Это тоже не страшно.
Программа Notepad++ их легко открывает и текст в них легко находится и правится.
Но вот после этого начинаются проблемы.
После правки и сохранения игра запускается, но доходя до изменённого текста в игра зависает с появлением сообщения –
致命的なエラー力発しました。
ファイル:start.ks 行:19
タグ:不明(ーエラーの発生した前後のタグを示している場合も あります)
Member «t» does not exist
При этом если делать патч без изменения текста то игра нормально идёт.
Перекодировка на UCS-2LE тоже не помогает.
Есть ли возможность править файлы с расширением .scn
НравитсяНравится
Похоже, что был изменен какой-то тег про который игра не знает. Тут нужно посмотреть, что именно было изменено. Хорошо бы глянуть сам скрипт.
НравитсяНравится
Onii♥Kiss: Onii-chan, Where’s My Kiss?
НравитсяНравится
Ссылки я удалил, что за игра понятно. Спасибо.
НравитсяНравится
Самый первый текст в игре — Nothing puts my mind at ease like cooking in the morning.
Это файл — kis_k01_1.txt.scn — https://1drv.ms/u/s!AnI3HZpTH2TbiPxO6TH5zy4np77shg?e=fsXqZG
Я его открываю программой Notepad++
Нахожу там текст — Nothing puts my mind at ease like cooking in the morning.
Правится он там без проблем.
Но в каком формате его сохранять?
НравитсяНравится
Я не работал с Kirikiri Z, но похоже, что эти scn файлы нельзя править прямо так. Для Nekopara(там тот же движок) вроде гуглится специальная программка. Нужно ее попробовать: https://github.com/marcussacana/KrKrZSceneManager
НравитсяНравится 2 людей
Спасибо.
Посмотрю.
НравитсяНравится
Получается.
Спасибо большое.
Работать с тобой одно удовольствие.
НравитсяНравится
Ребята, нужна помощь.
Не могу открыть файлы tlg.
раньше спокойно открывала и преобразовывала в Susie.
Потом у меня нежданчиком все полетело.
Соль вот в чем, Susie то я скачала по новой, а вот на плагин ссылка уже не рабочая.
Потом решила попробовать tlg2png, но я чет вообще не поняла как это работает (((
Объясните плиз, как и что * слезно умоляет *
НравитсяНравится
Работу с tlg2png обсуждали выше в комментах, тот же принцип в arc_unpacker. Учитесь работать с командной строкой или попробуйте GARbro(https://github.com/morkt/GARbro/releases)
НравитсяНравится
Есть оригинальная английская версия игры Super Naughty Maid!2 [ENG] [Uncen] — https://pornolab.net/forum/viewtopic.php?t=2545779
Но я не смог найти, где там английские субтитры зашиты.
Прошу помочь найти их.
НравитсяНравится 1 человек
Понятия не имею. Телепаты в отпуске. Что за движок, для начала?
Версия стимовская?
НравитсяНравится
Прости, выше я дал ссылку на PL — https://pornolab.net/forum/viewtopic.php?t=2545779
Раньше ты даже за это ругал, писал что и так всё понятно.
Движок игры TVP(KIRIKIRI) 2 core / Scripting Platform for Win32
Игра действительно стимовская.
НравитсяНравится
Раньше было сразу написано, на каком движке игра.
А в чем конкретно проблема? Какие файлы есть?
Что в архивах? Архивы успешно распаковываются?
НравитсяНравится 1 человек
В том-то то вся и штука, что архивы все прекрасно распаковываются.
Но английских субтитров в них нет.
А в игре они есть.
Субтитры ГГ вшиты в видео, а субтитры Рионы найти не могу.
НравитсяНравится
Слова Рионы(или Леоны?) в архиве data.xp3 в папке image_subtitles в картинках, не?
НравитсяНравится 1 человек
Во я идиот!
Казалось всё перерыл!
Извини, что так глупо потревожил.
НравитсяНравится
У многих движков есть свой фирменный знак (эмблема).
Есть ли фирменный знак у движка кирикири?
НравитсяНравится
Философские вопросы нежданно под вечер…
Предполагаю, что две рыбки, которые стоят на иконке krkr :
НравитсяНравится 1 человек
Вполне может быть.
Перекликается с этим — https://i114.fastpic.ru/big/2020/1023/e1/47b44b89e9cba6b444baa7110604d8e1.jpeg
НравитсяНравится
MainWindow.tjs в UTF-16LE перекодил. Байт 80 через Hex редактор в экзэшнике изменил. Шрифт пытался менять в Config.tjs, но толку практически никакого. Расстояние между буквами как было, так и осталось
НравитсяНравится
Может, шрифт не подтянулся, бывает такое. Может, шрифт не в том месте изменен. Что за игра?
НравитсяНравится
Morenatsu Revisited.
я вроде бы нашёл, где хранятся шрифты.
Они были в файлах umefont.tft и umefont17.tft. В них было следующее:
TVP pre-rendered font ”$
TVP pre-rendered font <
Но при попытке сменить шрифт игра пишет Signature is not found or invalid pre-rendered font file.
Попытки поиграться с defaultPitch в config тоже не привели текст читаемое состояние, так что я если честно в отчаянии.
(простите, нечаянно 2 раза написал)
НравитсяНравится
Morenatsu Revisited.
я вроде бы нашёл, где хранятся шрифты.
Они были в файлах umefont.tft и umefont17.tft. В них было следующее:
TVP pre-rendered font ”$
TVP pre-rendered font <
Но при попытке сменить шрифт игра пишет Signature is not found or invalid pre-rendered font file.
Попытки поиграться с defaultPitch в config тоже не привели текст читаемое состояние, так что я если честно в отчаянии
НравитсяНравится
У игры есть законченный порт на Ренпай. Зачем ковыряться с Кирикири?
НравитсяНравится
Потому что он не закончен. Там пока что демо-версия, которая заканчивается на 9 дне (а их всего 30). Так бы я с радостью взялся за ремейк, чем за вот это вот.
НравитсяНравится
Может тогда имеет смысл помочь американской команде доделать ремейк?
По шрифтам. Можно было бы заметить, что проблема не только в расстоянии между буквами. Там не грузится шрифт вообще.
Не уверен, есть ли смысл экспериментировать с umefont, судя по всему там нет кириллицы.
Нужно заменить шрифт не только в Config.tjs, но и в macro.ks
В файле есть строчка: [macro name=initscene] после нее через некоторое время: [deffont face=»umefont» size=26 bold=»false» color=»0xFFFFFF» edge=»true» edgecolor=»0x000000″ shadow=»false»]
Надо заменить ее на например: [deffont face=»Times New Roman» size=26 bold=»false» color=»0xFFFFFF» edge=»true» edgecolor=»0x000000″ shadow=»false»]
Далее следующую [font face=umefont][mappfont storage=»umefont.tft»] можно вообще убрать.
НравитсяНравится
Спасибо, мне уже помогли. Мне подсказали программу, которая может внедрить свой шрифт в движок Kirikiri. Если что, она называется krkrfont.exe. Я внедрил, и всё выглядит хорошо. Единственное что, несмотря на перекодировку всех скриптов, я так и не смог заставить эту новеллу нормально работать без эмулятора японской локали (она хоть и запускается, но при попытке загрузить сохранение или выбрать какой-то пункт в меню, вылетает), но это не страшно. Всё таки, эмулятор локали вполне себе удобный костыль, и запускать с помощью него — не напрягает.
p.s.
Помогать доделать ремейк смысла нет никакого, потому что это не просто графический ремейк. Это по сути полное переосмысление оригинальной новеллы, то есть там команда изменила структуру повествования, придумала новые эвенты, характеры персонажей тоже углубила и пишет по сути новый текст. Короче, разница как между оригинальном resident evil 2 и ремейком residet evil 2.
НравитсяНравится
Прошу ещё раз о помощи.
Начал переводить Summer vacation soon! 2 от разработчика Complets. Они выпускают игры на движке кирикири, но он у них свой какой-то (шрифты не особо поддаются правке).
Я уже переводил их игру Buragaku, и там боле-менее всё получилось.
Но с Summer vacation soon! 2 оказалось сложнее.
Все файлы с расширением tjs, ini и snr, я перекодировал в UTF-16LE.
Теперь игра запускается нормально, и японская локализация не требуется, но буквы на панели управления всё равно отображаются знаками вопроса (в Buragaku всё было нормально).
Вот ссылка на игру с тем, что у меня получилось и с начальным переводом — https://1drv.ms/u/s!AnI3HZpTH2TbioYbdzNib7FnIRXfJQ?e=lyoTJL
НравитсяНравится
Я вижу, что вы изменили в файле System.ini строку с названием 設定[«キャプション»]
А почему не перевести строки с пунктами главного меню:
設定[«ルートメニューリスト»] = [ // 省略時 = メニューバーを使用しない
«ファイル(&F)»,
«画面(&G)»,
«文字表示(&C)»,
«メッセージ(&M)»,
«サウンド(&S)»,
«その他(&O)»
];
?
Возможно, правда, еще потребуется изменить строки типа
if(fメニューサーチ(«その他(&O)», «カーソル・オリジナル») != -1)
в файле cオプション.tjs
НравитсяНравится 1 человек
Спасибо, большое, всё получилось.
А я менял их только в файле MenuBar.ini
НравитсяНравится
А не подскажешь, каким может быть символ начало новой строки в тексте?
Традиционный — [r] , не работает.
Приходится вытягивать строку, для автоматического переноса.
Другие методы, описанные здесь, тоже не проходят.
НравитсяНравится
Подозреваю, что никак.(( Разрабы накрутили поверх Kirikiri свой движок, поэтому у них все по своему.
Возможно, будет работать такой вариант:
【】Длинный текст, где требуется перенос, вот
【】здесь будет перенос
Или
【】Длинный текст, где требуется перенос, вот
【】здесь будет перенос
По идее, 【】всегда начинает новую строку, но я не уверен.
НравитсяНравится
Спасибо, опробовал, но не получилось.
Использовать двойные японские ковычки, это моя придумка.
Я придумал её методом тыка, это знак подобный [p2] — переход к новому тексту.
Сами разработчики используют для этого знак японского пробела, но он очень не удобен при правке текста — его же не видно.
А в игре он виден и для русского глаза непривычен, так как каждый раз создаётся впечатление красной строки (у кавычек этого нет).
В любом слкчае, спасибо.
НравитсяНравится