Перевод и Kirikiri. Часть 2.

Ой, что это?

illust4 Еще бы. Ведь мы пытались запустить игру с русским языком для программ не поддерживающих юникод(Панель управления-Язык и региональные стандарты-Дополнительно).

Для запуска игры после перевода из под русской локали придется сделать несколько манипуляций.

Нажимаем ОК и обращаем внимание на окно ошибки:

illust5

При неудачном запуске нам показывают, на каком файле и в каком месте оборвалось выполнение. Красным выделено название файла 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

 

Бывает, что несмотря на ваши усилия, текст все равно выводится с большим межбуквенным интервалом:

font

В таком случае, игра явно рассчитывает, что выводимый текст будет в японской кодировке. Подробно эта проблема расписана на форуме Honyaku-subs(http://honyaku-subs.ru/forums/viewtopic.php?f=17&t=134).

Чтобы ее решить, от вас потребуются навыки владения HEX-редактором. Открываем исполнимый файл игры(в данном случае, tundere.exe) в редакторе и ищем шестнадцатеричную строку С64317 . Следующий за ней байт будет указывать на используемую игрой кодировку.

hex_word

Исправляем байт 80 на 01(соответствует DEFAULT_CHARSET) или на CC(RUSSIAN_CHARSET).

У вас есть в меню кракозябы?

Да, сам игровой текст выглядит великолепно, только что творится с главным меню окна? Сплошные кракозябы.

illust6Ищем файл 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='Сохранить';

hintsСамые хитрые всплывающие подсказки и описания притаились в HistoryLayer.tjs , потому что режим истории в этой игре тоже имеет элементы экрана с надписями.

Ну и напоследок остается перевести заголовок окна «О программе» в файле about.ks :

@title name "Tsundere na imouto"

Перекодируем все измененные файлы в юникод и добавим их в
patch.xp3 .

CG, виджи и сидоджи.

Долго нам еще терпеть японские символы в игровом меню? — спросите вы. Файлы .png и .bmp , которые содержат графику элементов интерфейса лежат в папках bgimage и gui. Для полного перевода придется изменить файлы, относящиеся к главному внутриигровому меню, панели загрузки, панели сохранения…

Поскольку это процесс не быстрый и требует многократных исправлений, я рекомендую после того, как вы воспользовались вашим любимым Photoshop’ом/Gimp’ом не сохранять работу в bmp или png, а оставить в psd.

Чтобы в дальнейшем быстрее конвертировать файлы из более удобного формата в тот, который требует игра, удобно использовать консольную утилитку nconvert.

Акумакко кроется в деталях.

Допустим, текст переведен и графика тоже. Остались только мелкие детали, которые постоянно попадаются на глаза в процессе тестирования.

Каждая часть сценария может иметь маленький «подзаголовок», видный только при сохранении игры.

illust7Вернемся в файл скрипта и проверим метки в начале файла:

*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/ Англоязычный форум для интересующихся визуальными новеллами. Много переводчиков и редакторов.

Удачи!

Перевод и Kirikiri. Часть 2.: 110 комментариев

  1. Добрый день. Можете обновить ссылку, или скинуть программу Embedded EXE Splitter & Merger для извлечения xp3 из exe файлов? У вас ссылка дана на AnimeEd. Который вроде не умеет это делать, ну или я не знаю как 😦 С уважением, Джеф.

    Нравится

      1. Большое спасибо. Скачал. К сожалению прога не смогла разделить exe’ник, так что скорее всего я был не прав 😦 Но в любом случае — спасибо.

        Нравится

  2. Я думал об этом. Но смысл, японского то я не знаю 🙂 А автопереводчиками переводить достаточно сложно, у меня одна такая игра в проекте уже есть. Брать на себя больше не хочу.Тем более, что у меня пока есть что переводить.

    Нравится

  3. Добрый день. Вопрос возник немного неожиданный по вопросу с тем же переводом, вдруг знаете ответ. Я понял как делать переносы, и с этим проблем нет. Проблема в том, чтобы ограничить любой текст от преодолении рамки. Непонятно объяснил наверное, но по скринам сейчас будет видно: http://i72.fastpic.ru/big/2015/0814/37/77044b9b2b2a250f4bd9364153471537.jpg

    И проблема не в шрифтах (я сейчас экспериментировал как раз таки с ними, поэтому они такие большие). Сейчас, я избавляюсь от текста за пределами рамки с помощью расставленных в ручную в файле перевода в нужных местах [r]. Но может есть в каком-нибудь файле что-то вроде указанного вами в примере «[locate x=120 y=191]»? То есть файл, где прописано, что любые буквы не могут выходить за определенные координаты. В любом случае, спасибо за внимание, с уважением, Джеф.
    P.S. Давно не было обновлений на сайте, вы планируете ещё что-нибудь переводить, или просто отдыхаете после завершения перевода игры?

    Нравится

    1. Мое почтение.))
      Да, действительно такая проблема есть. Я уже писал об этом в одном из предыдущих постов:

      Kiri Imouto


      Кардинально, насколько я помню, решить так и не получилось, тем более для разных игр бывает нужен разный размер шрифта.
      Но Chtobi все же написал утилитку, которая позволяет облегчить расстановку тегов [r]
      Правда, она была рассчитана на Tsundere na imouto, и в качестве максимального числа символов в строке там принято 50. Не уверен, что подойдет…
      Вроде как-то можно было это число менять, но надо будет уточнить.
      После авторасстановки кстати, все равно иногда нужно вручную строки подправлять, никуда не деться.

      Писали, что в некоторых версиях Kirikiri в одном из файлов вроде бы есть строка
      scDRAWMAX = 90;
      которая отвечает за максимальное количество символов в строке.
      Вот только у себя я такой строки не нашел.( Так что пришлось пользоваться методом выше.

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

      Нравится

      1. Доброе утро и спасибо за ответ.
        «Писали, что в некоторых версиях Kirikiri в одном из файлов вроде бы есть строка
        scDRAWMAX = 90;»
        Да, у меня тоже нет такой строчки.
        «Но Chtobi все же написал утилитку, которая позволяет облегчить расстановку тегов [r]»
        Я скачивал эту программку, но если честно, у меня даже не получилось её включить 😦 А FAQ к ней не было. В любом случае, спасибо за ответы. P.S. Смена размеров шрифта действительно сильно помогло, осталось в ручную не так много переносов сделать.

        Нравится

        1. >Я скачивал эту программку, но если честно, у меня даже не получилось её включить
          Она работает только через командную строку. Это сделано для удобства пакетной обработки.
          Запуcкается через cmd.exe
          FAQ как такового там нет, но в файле kiri_imo.txt расписаны основные ключи для работы и пример использования.

          Нравится

  4. Добрый вечер. Я всё еще насчёт проблем с переносом в движке кирикири. Мне подсказал Максим Щепалин, с сайта 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

    Нравится

    1. Очень ценно, большое спасибо. Это как раз тот способ «скрипт от nagato», про который я писал. Только так и не собрался его попробовать.
      Теперь появилась ясность.
      Надо будет дополнить статью…

      Нравится

      1. Могу прокомментировать, что мне кажется данный способ подходит к чисто японским версиям (имхо), во всяком случае в Bukkake Ranch! от Mangagamer на английском языке, данный скрипт вызывает зависание игры.

        Нравится

  5. Вопрос по поводу запаковки, в оригинале Mahoutsukai no yoru все файлы XXX.xp3 имеют еще один файл XXX.xp3.sig если изменить хоть немного файл xp3 то игра уже вылетает. Даже файл патча с такой же фишкой, как бороться?

    Нравится

    1. Присоединяюсь к вопросу Sergey, единственное, только, что мне кажется, что .sig всегда там — где архивы зашифрованы (запаролены).

      Нравится

    2. Делали Тайпмуновцы, от них всегда можно ожидать чего-нибудь заковыристое, как с Fate/Stay night. Не в курсе, к сожалению. Подозреваю, что зашифрованный .xp3 .
      Если учесть, что Mahoutsukai no yoru начали переводить на несколько языков, думаю какое-то решение уже найдено.

      Нравится

    3. Долго парил голову и пришел к решению не заниматься расшифровкой а использовать 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
      мне повезло патч к игре не требует его.

      Нравится

      1. Спасибо за дополнение. Я работал с arc_conv, но для распаковки других форматов. Значит, он может вскрывать еще и запакованные xp3.sig .
        Если я правильно понял, созданный к игре патч не обязательно как-то специально запаковывать, подойдет и обычный .xp3 ?

        Нравится

        1. Все проще судя по всему файл .sig идет отдельно от файла, шифрование же происходит на этапе запаковки (arc_conv с использованием синтаксиса запаковки/распаковки именно под нужную игру), у меня пропатченный екзешник(no-cd притом он почти в 2 раза легче оригинала), так что возможно поэтому отсутствует потребность в .sig файле(хотя его легко создать).

          Нравится

  6. Ломаю голову над проблемой, которая описана в гайде:

    «Бывает, что несмотря на ваши усилия, текст все равно выводится с большим межбуквенным интервалом:»

    Японская игра на движке КириКири. Русский текст сильно растягивается и никуда не влезает. Нашел в игре файл Config.tjs, а там строки:

    ;defaultFontSize = 24;
    ;defaultLineSpacing = 6;
    ;defaultPitch = 0;

    Изменение их значений не помогает.

    НЕХ редактор не находит строку С64317, по какой-то причине. Ссылка на подробное описание уже не работает, похоже. Можете посоветовать ещё что-нибудь? Эта проблема убивает смысл делать перевод игры.

    Нравится

    1. С почином, как говорится.)
      О какой игре идет речь?

      Можно exe файл игры куда-нибудь залить, чтобы поглядеть потом ?

      Кстати, у меня в статье ошибка в расширении файла, надо будет поправить.)

      Нравится

  7. Мне уже помогли решить проблему. Оказалось что при первом запуске игра сохраняет шрифты в папку save и после этого изменения шрифта не имеют эффекта.

    Нравится

    1. Просто открыть файл через Notepad++ , выбрать из меню Кодировки->Преобразовать в UCS2-Little Endian и сохранить.

      Нравится

  8. Dikoy писал,
    НЕХ редактор не находит строку С64317.

    У меня та же проблема.
    Подскажите как её найти.
    Я делаю так — Ctrl+F -> вставляю С64317 -> Enter.
    Пишет: «Последовательность не найдена».

    Нравится

  9. День добрый! Воспользовался одним из советов в ЕХЕ заменил байт, все отлично сработало. Но текст заменился только в основном диалоге, в «истории» отображение старое, как найти необходимый байт?

    Нравится

    1. Так сразу и не скажешь… Возможно дело в шрифте, которым выводиться текст в режиме истории. Можно для начала проверить, изменен ли userFace на кирилический шрифт в разделе function HistoryLayer_config()

      Нравится

      1. Заменен везде 😦 Символы выводимые в диалогах истории остались прежними 「」, в то время как в обычном диалоге при смене кодировки они «пропали».

        Нравится

            1. Хм… А игра большая? Мы бы могли попробовать ее поковырять, но для этого желательно иметь сам экзешник и игровые архивы. Есть возможность ее заархивировать и кинуть куда-нибудь на файлообменник? Кстати, мне можно писать в личку в контакт: https://vk.com/nazonov

              Нравится

  10. Господа.
    Так и не смог воспользоваться утилитой tlg2png (преобразованием tlg файлов в png).
    Можно как-то подробней.

    Нравится

      1. Игра у меня, достаточно, фривольного содержания — это Мэй и Рей (Mai & Rei).

        В принципе, для перевода картинки не нужны, но меня просят рип сделать.
        А делать его с экрана, получится качество не очень хорошее.
        А часть игры, в самом начале, использует картинки.

        А не получается у меня всё — перехожу по ссылке https://github.com/vn-tools/tlg2png на сайт.
        Если я правильно понял, щёлкаю зелёную кнопку «Clone or download».
        В всплывающем окне использую кнопку «Download ZIP».
        Скачиваю. Разархивирую.
        А вот что с этим делать, не пойму.

        P.S. У меня уже есть некоторый опыт перевода игр на движке Kirikiri.
        Это «Шалунья» (えっちな彼女(夏)) —
        и «Потайной домик 2» (えっちな秘密基地2) —
        Но они тоже фривольного содержания.

        Нравится

        1. Здесь https://github.com/vn-tools/tlg2png надпись в описании «To download precompiled Windows binaries, head over to releases.» как бы намекает нам, что нужно перейти по ссылке.)

          Запускать нужно в формате tlg2png имя_tlg_файла имя_png_файла
          По-моему, с tlg из этих игр программа должна работать.

          Извините, ссылки из вашего предыдущего сообщения убрал, а то у меня антиспам с ума сходит.)

          Нравится

          1. Запускаю tlg2png.exe. Появляется и тут же пропадает окно, вроде как эмулятор DOS — не успеваю заметить.
            Запускал и от имени администратора, и в режиме совместимости.
            У меня Windows 10 64 bit — может проблема в этом?

            Нравится

            1. Нет, Windows 10 не проблема. Вам нужно научиться работать с командной строкой cmd.exe , так как tlg2png работает только в таком режиме и запускается только из cmd.

              Нравится

                    1. Нашёл xp3viewer он типа конвертирует. Но у меня он не хочет принимать файлы

                      Нравится

                  1. Господа.
                    Прошу прощения, ссылка данная мной уже не работает.
                    Сбросил папку не Яндекс-диск, ссылка ниже.
                    https://yadi.sk/d/CQZwpQwr3W2YP6
                    В папку добавил текстовой документ с кратким описанием.

                    P.S.
                    Программой «tlg2png» я вытаскиваю картинки, правлю как мне надо,
                    а программой «krkrtpc» правленые картинки перевожу обратно в формат tlg.

                    Нравится

                1. Скажите, пожалуйста, как именно конвертировать tlg в png в командной строке. Нужно сперва через команду cd /d переходить в папку с tlg2png.exe или в папку с tlg изображениями, которые мне необходимо сконвертировать?

                  Нравится

                  1. Нужно научиться работать с командной строкой, для начала.
                    Обычно так:
                    Переходим в папку с tlg2png.exe (если Винда, то например cd /d C:\path )
                    Запускаем tlg2png.exe с указанным путем к tlg файлу и к полученному png файлу:
                    tlg2png C:\path\file.tlg C:\path\file.png

                    Нравится

  11. Нужна помощь. Пробовал на нескольких играх. Файлы все вытаскиваются, я их редактирую (какие надо) и создаю архив 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;
    }

    Что я делаю не так?? Что ему не нравится?? Подскажите пожалста.

    Нравится

      1. Игра называется «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

        Нравится

        1. Движок выдает ошибку, что не может прочитать файл patch.xp3 . Каким инструментом переупаковывали обратно в xp3 ? Или игра использует дополнительное шифрование или другой переупаковщик.

          Нравится

          1. Хм-хм-хм.
            Вот оно что. Тогда буду пробовать другие программки для упаковки переделанных файлов. Спасибо.
            А распаковывал и упаковывал обратно я программой «AE Tools»

            Нравится

  12. ОМГ… порылся на англ форуме и нашёл причину той ошибки. Сейчас всё работает.
    Надо было в программе выбрать в какой формат запаковывать архив (как я понял) (на скриншоте отметил красным)

    1) переведенное меню:

    2) выбрал выделенный формат:

    Нравится

    1. А, ну так есть. Я потому и советовал xp3-repack использовать для обратной запаковки, поскольку там все по-умолчанию идет.

      Нравится

  13. Доброго времени суток, прошу поддержки.
    Решил поиграться с Fate\stay night Realta nua, поставил кириллические шрифты, в итоге в окне истории всё отображается нормально, а вот в обычном окне с текстом символы широкие. HEX-редактором значение поменял, не помогло. В чем может быть дело, где копать? Скрипты могу приложить.

    Нравится

    1. Возможно, игра использует другой шрифт для окна с текстом. Скорее всего, шрифт для него прописан еще где-то в другом месте, не только в 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

      Нравится

  14. Чтобы сделать обратный перевод из png в tlg можно использовать набор «krkr» отсюда — http://vnru.wikidot.com/tlg
    Я опробовал — получилось.
    Может стоит ссылку дать в самой теме, а не только в комментариях?

    Нравится

  15. Возможна ли пакетная перекодировка файлов.
    Я пришёл к выводу, что будет лучше сразу все tjs- и ks-файлы перекодировать.
    Но их бывает много, вот и встаёт вопрос, как это сделать сразу во всей папке.

    Нравится

    1. Да, в теории это возможно. Например через iconv. В итоге должна получиться команда вроде: for %%i in (*.txt) do iconv -f Shift_JIS -t UTF-16LE «%%i» > UTF-16LE/%%i
      Хотя вроде пишут, что iconv не всегда адекватно текст обрабатывает.
      Другой вариант сделать то же самое, но через Network Kanji Filter. У него должна быть и Windows версия, но я ее не нашел

      Нравится

  16. При создании patch’а возникла вот такая проблема:
    Файл Config.tjs хранится в Data (не в system), но при закидывании этого файла в Patch2.xp3 он не воспринимает его, хотя файлы сценария он использует.
    Если перепаковать саму Data.xp3 то все настройки из него применяются. Но слишком запарно ради перевода перезаливать весь файл Data.
    Мб я не понимаю как правильно его запаковать, но я пробовал также создавать для него папки («system», «data»). Но как игнорировал, так и игнорирует.

    P.S. Для файлов сценария папки создавать было не нужно

    Нравится

  17. Игра 七人杀阵 — Seven Sacrifices
    В patch.xp3 хранятся dlc, я попытался запаковать к ним и файл конфигурации, но эффект тот же.

    Нравится

    1. Китайцы? А это точно движок Kirikiri2, а не KirikiriZ ? Не могу сказать точнее, т.к. не вижу, где скачать. Можно как-нибудь мне ее скинуть?
      Тут может быть несколько моментов.
      В чем выражается «не восприятие» файла игрой? Файл сейчас в UCS-2 LE перекодирован?
      Если не воспринимаются отдельные параметры файла, возможно, проблема в них.

      Нравится

  18. Ссылка на ЯД — https://yadi.sk/d/THEfnBbQUvkd3A (Как отвязать от стима я не знаю.)
    Кодировка файла UCS-2 LE.
    На счет отдельных параметров не уверен, так как пытался менять лишь шрифты (размер, отступ, шрифт и тп.) и имя окна (оно тоже не изменилось).

    Нравится

    1. Поковырялись с игрой. Хитрая печенька.)) Если вкратце: без изменения 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) , вместо родного, чтобы обойти ограничения. Если разработчики прочухают, они могут постараться прикрыть эту дыру.

      Нравится

      1. Спасибо огромное, сам бы не разобрался.
        Так же заметил что не обязательно создавать Config2.tjs, если переименовать Config.tjs в UpdateConfig.tjs без добавления каких либо скриптов, то игра нормально его воспринимает (меняется название, шрифт и т.п.)

        Нравится

        1. Да, так тоже можно. Просто тогда нужно не забыть, что ключевым будет являться именно UpdateConfig.tjs и все изменения вносить в него.

          Нравится

  19. Хочу вытащить игру из 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, после чего программа вылетает.

    Что я делаю неправильно?

    Нравится

  20. Запускаю kiri_sm.exe, в командной строке прописываю kiri_sm.exe -e sell_out_1st.exe, нажимаю Enter после чего программа вылетает.

    Нравится

  21. Попробовал, УМВР.
    Может что-то написали неправильно? Что значит «вылетает»? Программа консольная, она должна вывести какой-то ответ.

    Нравится

    1. А что такое УМВР?
      У меня 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.
      Спасибо большое и за эту тему, и за ваши быстрые ответы.
      Постоянно сюда заглядываю и постоянно нахожу что-то новенькое для себя.

      Нравится

  22. Замахнулся я тут на перевод — 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

    Нравится

    1. Похоже, что был изменен какой-то тег про который игра не знает. Тут нужно посмотреть, что именно было изменено. Хорошо бы глянуть сам скрипт.

      Нравится

  23. Самый первый текст в игре — 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.
    Правится он там без проблем.
    Но в каком формате его сохранять?

    Нравится

  24. Ребята, нужна помощь.
    Не могу открыть файлы tlg.
    раньше спокойно открывала и преобразовывала в Susie.
    Потом у меня нежданчиком все полетело.
    Соль вот в чем, Susie то я скачала по новой, а вот на плагин ссылка уже не рабочая.
    Потом решила попробовать tlg2png, но я чет вообще не поняла как это работает (((
    Объясните плиз, как и что * слезно умоляет *

    Нравится

          1. В том-то то вся и штука, что архивы все прекрасно распаковываются.
            Но английских субтитров в них нет.
            А в игре они есть.
            Субтитры ГГ вшиты в видео, а субтитры Рионы найти не могу.

            Нравится

  25. MainWindow.tjs в UTF-16LE перекодил. Байт 80 через Hex редактор в экзэшнике изменил. Шрифт пытался менять в Config.tjs, но толку практически никакого. Расстояние между буквами как было, так и осталось

    Нравится

      1. 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 раза написал)

        Нравится

  26. 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 тоже не привели текст читаемое состояние, так что я если честно в отчаянии

    Нравится

      1. Потому что он не закончен. Там пока что демо-версия, которая заканчивается на 9 дне (а их всего 30). Так бы я с радостью взялся за ремейк, чем за вот это вот.

        Нравится

        1. Может тогда имеет смысл помочь американской команде доделать ремейк?
          По шрифтам. Можно было бы заметить, что проблема не только в расстоянии между буквами. Там не грузится шрифт вообще.
          Не уверен, есть ли смысл экспериментировать с 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»] можно вообще убрать.

          Нравится

          1. Спасибо, мне уже помогли. Мне подсказали программу, которая может внедрить свой шрифт в движок Kirikiri. Если что, она называется krkrfont.exe. Я внедрил, и всё выглядит хорошо. Единственное что, несмотря на перекодировку всех скриптов, я так и не смог заставить эту новеллу нормально работать без эмулятора японской локали (она хоть и запускается, но при попытке загрузить сохранение или выбрать какой-то пункт в меню, вылетает), но это не страшно. Всё таки, эмулятор локали вполне себе удобный костыль, и запускать с помощью него — не напрягает.

            p.s.
            Помогать доделать ремейк смысла нет никакого, потому что это не просто графический ремейк. Это по сути полное переосмысление оригинальной новеллы, то есть там команда изменила структуру повествования, придумала новые эвенты, характеры персонажей тоже углубила и пишет по сути новый текст. Короче, разница как между оригинальном resident evil 2 и ремейком residet evil 2.

            Нравится

  27. Прошу ещё раз о помощи.
    Начал переводить Summer vacation soon! 2 от разработчика Complets. Они выпускают игры на движке кирикири, но он у них свой какой-то (шрифты не особо поддаются правке).
    Я уже переводил их игру Buragaku, и там боле-менее всё получилось.
    Но с Summer vacation soon! 2 оказалось сложнее.
    Все файлы с расширением tjs, ini и snr, я перекодировал в UTF-16LE.
    Теперь игра запускается нормально, и японская локализация не требуется, но буквы на панели управления всё равно отображаются знаками вопроса (в Buragaku всё было нормально).
    Вот ссылка на игру с тем, что у меня получилось и с начальным переводом — https://1drv.ms/u/s!AnI3HZpTH2TbioYbdzNib7FnIRXfJQ?e=lyoTJL

    Нравится

    1. Я вижу, что вы изменили в файле System.ini строку с названием 設定[«キャプション»]
      А почему не перевести строки с пунктами главного меню:
      設定[«ルートメニューリスト»] = [ // 省略時 = メニューバーを使用しない
      «ファイル(&F)»,
      «画面(&G)»,
      «文字表示(&C)»,
      «メッセージ(&M)»,
      «サウンド(&S)»,
      «その他(&O)»
      ];
      ?

      Возможно, правда, еще потребуется изменить строки типа
      if(fメニューサーチ(«その他(&O)», «カーソル・オリジナル») != -1)
      в файле cオプション.tjs

      Нравится 1 человек

  28. А не подскажешь, каким может быть символ начало новой строки в тексте?
    Традиционный — [r] , не работает.
    Приходится вытягивать строку, для автоматического переноса.
    Другие методы, описанные здесь, тоже не проходят.

    Нравится

    1. Подозреваю, что никак.(( Разрабы накрутили поверх Kirikiri свой движок, поэтому у них все по своему.
      Возможно, будет работать такой вариант:
      【】Длинный текст, где требуется перенос, вот
      【】здесь будет перенос
      Или
      【】Длинный текст, где требуется перенос, вот

      【】здесь будет перенос

      По идее, 【】всегда начинает новую строку, но я не уверен.

      Нравится

  29. Спасибо, опробовал, но не получилось.
    Использовать двойные японские ковычки, это моя придумка.
    Я придумал её методом тыка, это знак подобный [p2] — переход к новому тексту.
    Сами разработчики используют для этого знак японского пробела, но он очень не удобен при правке текста — его же не видно.
    А в игре он виден и для русского глаза непривычен, так как каждый раз создаётся впечатление красной строки (у кавычек этого нет).

    В любом слкчае, спасибо.

    Нравится

Оставьте комментарий