Заметки о Kirikiri в разрезе Лебединой песни
В этом посте я помещу ту информацию, которую мне удалось изучить в рамках работы над этим проектом и которая, быть может, пригодится кому-то ещё.
Маны не читал. Всё написанное ниже – результат многочисленной граблетерапии и велосипедостроения. Если вы знакомы с возможностями движка и можете предложить более простое решение или просто имеете аналогичный опыт, пишите в комменты, я буду весьма признателен.
И не забываем про ебанутейшую тягу Нотабеноида заменять компьютерные кавычки на ёлочки, т.е. в скриптах нужно использовать двойные кавычки, а не ёлочки :)
Точка останова скрипта
Если в процессе работы вы столкнулись с ничего не говорящим сообщением об ошибке и не можете точно лоцировать источник возникновения ИС в коде скрипта, то можете вставить в скрипт системную команду, вызывающую системное диалоговое окно.
Соответственно, если окно с вашим текстом выводится раньше того сообщения об ошибке, значит ошибка возникает где-то дальше в скрипте, можно сдвинуть этот код ещё ниже и повторить.
Сохранения кешируются!
Так, если вы правите скрипт (например, подгоняете количество строк под размеры блоков) и не хотите скипать до текущего момента длиннющий скрипт, то, казалось бы, логично выполнить быстрое сохранение, выйти, внести правки в скрипт, скомпилить скрипты и загрузить то быстрое сохранение... Это логично, но, к сожалению, далеко не всегда работает.
Я встречал такие косяки:
Порой очень хочется перевести строку без реакции со стороны пользователя (т.е. просто перенос текста на новую строку, без необходимости клика). Всё просто – за это отвечает следующая команда:
Переход по клику на новый блок текста или новую строку
Команды движка, отвечающие за...
...переход к следующему блоку по клику:
...переход к следующей строке по клику:
Если точнее, обе команды просто ждут реакции со стороны пользователя, т.е. не обязательно, что за ними должен быть следующий блок текста, а не служебные команды, допустим.
Команды создания блоков для вывода текста
Начну с того, что блоки бывают двух типов – прозрачные/невидимые и непрозрачные/с фоном.
Прозрачный блок создаётся командой типа:
Непрозрачный блок создаётся командой типа:
Выравнивание по вертикали текста внутри блока
Тут всё просто: текст можно выравнивать, а можно и не выравнивать. В первом случае происходит центрирование текста по вертикали, во втором – текст пишется сверху вниз, т.е. происходит выравнивание по верхней границе блока.
Первый вариант в некоторых (да что уж – в большинстве :)) случаев смотрится симпатичнее, но требует скрупулёзной работы по указанию для каждого фрагмента текста количества занимаемых им строк, второй вариант проще – достаточно вычислить максимальное количество строк в самом большом фрагменте, указать это значение и не париться.
Как бы то ни было, команда одна:
Разница в её применении... Или неприменении :D
Пример 1:
Нужно разместить видимый блок, рассчитанный на вывод фрагмента из 5 строк, в который по центру нужно разместить фрагмент, занимающий две строки.
Делаем это так:
Пример 2:
А теперь мы этот же текст разместим в том же видимом 5-строчном блоке, только не будем центрировать его по вертикали:
Т.е. при таком раскладе можно вообще не указывать высоту фрагмента. А можно и указать, но тогда вместо [blnc gyo=«2»] нужно указать [blnc gyo=«5»].
Отладка отдельно взятого скрипта
Чтобы запустить произвольный скрипт вовсе не обязательно уныло проходить всю игру до него, достаточно внести правки в файл «scr.ks». Например, для вызова скрипта ssa067.ks достаточно оставить в нём только такой вот код:
Смена шрифта текста фрагментов (на Tahoma)
Если шрифт не поменять, то будут ужасные огромные пробелы между буквами.
В принципе, шрифт должен бы указываться в файле «Config.tjs» в строках:
Пусть вас не смущает точка с запятой в начале строк, для этого конкретного файла это нормально
Но даже если вы и внесёте эти правки, то никаких изменений в Лебединой песне не последует. Всё потому, что тут для указания шрифта разработчики использовали вот такой грязный хак: в файле «mode_scenario.ks» шрифт указан вот так:
Тут же, как несложно догадаться, указываются и прочие параметры шрифта. Но такой подход порочен, потому что область действия шрифта будет ограничена.
Далее, как в том анекдоте, у нас есть два выхода:
В любом случае, чтобы всё корректно работало, нужно после этих операций удалить или переименовать (если он дорог вам как память) файл «datasc.ksd» в папке «savedata».
ЗЫ Этот метод может не оказывать влияния на вывод имён персонажей в других ВН на этом движке, но для Лебединой песни эта проблема неактуальна. Если вы столкнулись с ней в рамках работы над переводом, пишите – поизучаю проблему.
Смена шрифта в окне истории (на Tahoma)
Шрифт, отвечающий за вывод текста на экране истории, настраивается в уже знакомом нам файле «Config.tjs» в функции «HistoryLayer_config()»
Просто найдите код функции, там всё понятно. Там не только шрифт, но и ещё кое-что можно поднастроить при желании.
Этот пост будет ещё пополняться. Так, после релиза Песни, я выложу сюда исходник инсталлятора, который подойдёт для любой ВНки на этом движке, и ссылки на инструменты, которыми я пользовался для компиляции/декомпиляции.
Маны не читал. Всё написанное ниже – результат многочисленной граблетерапии и велосипедостроения. Если вы знакомы с возможностями движка и можете предложить более простое решение или просто имеете аналогичный опыт, пишите в комменты, я буду весьма признателен.
И не забываем про ебанутейшую тягу Нотабеноида заменять компьютерные кавычки на ёлочки, т.е. в скриптах нужно использовать двойные кавычки, а не ёлочки :)
Точка останова скрипта
Если в процессе работы вы столкнулись с ничего не говорящим сообщением об ошибке и не можете точно лоцировать источник возникновения ИС в коде скрипта, то можете вставить в скрипт системную команду, вызывающую системное диалоговое окно.
[iscript]
System.inform('Какой-то текст!');
[endscript]
Соответственно, если окно с вашим текстом выводится раньше того сообщения об ошибке, значит ошибка возникает где-то дальше в скрипте, можно сдвинуть этот код ещё ниже и повторить.
Сохранения кешируются!
Так, если вы правите скрипт (например, подгоняете количество строк под размеры блоков) и не хотите скипать до текущего момента длиннющий скрипт, то, казалось бы, логично выполнить быстрое сохранение, выйти, внести правки в скрипт, скомпилить скрипты и загрузить то быстрое сохранение... Это логично, но, к сожалению, далеко не всегда работает.
Я встречал такие косяки:
- если правился тот блок, на котором я сохранился, то после быстрой загрузки изменения не применяются, при этом если начать скипать с начала текущего скрипта, то всё нормально.
- после некоторых правок попытка выполнить потом быструю загрузку вызывает сообщение об ошибке, но если начать скрипт сначала, то всё нормально.
- после некоторых правок и последующей казалось бы успешной быстрой загрузки при начале нового скрипта может выдаваться сообщение об ошибке. При этом если начать скипать скрипт сначала до конца ошибок не возникает.
Порой очень хочется перевести строку без реакции со стороны пользователя (т.е. просто перенос текста на новую строку, без необходимости клика). Всё просто – за это отвечает следующая команда:
[r]
Переход по клику на новый блок текста или новую строку
Команды движка, отвечающие за...
...переход к следующему блоку по клику:
[tp]
...переход к следующей строке по клику:
[tl]
Если точнее, обе команды просто ждут реакции со стороны пользователя, т.е. не обязательно, что за ними должен быть следующий блок текста, а не служебные команды, допустим.
Команды создания блоков для вывода текста
Начну с того, что блоки бывают двух типов – прозрачные/невидимые и непрозрачные/с фоном.
Прозрачный блок создаётся командой типа:
[bln rgn=«(x1,y1,dx,dy)»]где x1 и y1 – смещение верхнего левого угла блока от верхнего левого угла экрана, а dx и dy – размеры по x и y, соответственно (возможно, что dy не размер по высоте, а центр блока, как cy в команде ниже – не знаю, повода углубляться в изучение этого вопроса не было).
Непрозрачный блок создаётся командой типа:
[m_load_move gyo=«n» center_m_y=«cy»]где n – максимальное количество строк, которое уместится внутри этого блока без вылезания за его границу; cy – вертикальное позиционирование середины блока относительно верхней границы экрана.
Выравнивание по вертикали текста внутри блока
Тут всё просто: текст можно выравнивать, а можно и не выравнивать. В первом случае происходит центрирование текста по вертикали, во втором – текст пишется сверху вниз, т.е. происходит выравнивание по верхней границе блока.
Первый вариант в некоторых (да что уж – в большинстве :)) случаев смотрится симпатичнее, но требует скрупулёзной работы по указанию для каждого фрагмента текста количества занимаемых им строк, второй вариант проще – достаточно вычислить максимальное количество строк в самом большом фрагменте, указать это значение и не париться.
Как бы то ни было, команда одна:
[blnc gyo=«n»]где n – количество строк текста в фрагменте
Разница в её применении... Или неприменении :D
Пример 1:
Нужно разместить видимый блок, рассчитанный на вывод фрагмента из 5 строк, в который по центру нужно разместить фрагмент, занимающий две строки.
Делаем это так:
[m_load_move gyo=«5» center_m_y=«400»]
[blnc gyo=«2»]
Однажды в студёную зимнюю пору[r]
лошадка прилипла пиписькой к забору
[tp]
Пример 2:
А теперь мы этот же текст разместим в том же видимом 5-строчном блоке, только не будем центрировать его по вертикали:
[m_load_move gyo=«5» center_m_y=«400»]
Однажды в студёную зимнюю пору[r]
лошадка прилипла пиписькой к забору
[tp]
Т.е. при таком раскладе можно вообще не указывать высоту фрагмента. А можно и указать, но тогда вместо [blnc gyo=«2»] нужно указать [blnc gyo=«5»].
Отладка отдельно взятого скрипта
Чтобы запустить произвольный скрипт вовсе не обязательно уныло проходить всю игру до него, достаточно внести правки в файл «scr.ks». Например, для вызова скрипта ssa067.ks достаточно оставить в нём только такой вот код:
[call storage=«ssa067.ks»]
Смена шрифта текста фрагментов (на Tahoma)
Если шрифт не поменять, то будут ужасные огромные пробелы между буквами.
В принципе, шрифт должен бы указываться в файле «Config.tjs» в строках:
;defaultFontSize = 20;
;defaultBold = false;
;defaultRubySize = 7;
;defaultRubyOffset = 0;
;userFace = «Tahoma»;
;defaultEdge = true;
Пусть вас не смущает точка с запятой в начале строк, для этого конкретного файла это нормально
Но даже если вы и внесёте эти правки, то никаких изменений в Лебединой песне не последует. Всё потому, что тут для указания шрифта разработчики использовали вот такой грязный хак: в файле «mode_scenario.ks» шрифт указан вот так:
[deffont size=«20» face=«Tahoma» bold=«false» edge=«true» edgecolor=«0x000000» rubysize=«7» rubyoffset=«0»]Это уже исправленная версия строки
Тут же, как несложно догадаться, указываются и прочие параметры шрифта. Но такой подход порочен, потому что область действия шрифта будет ограничена.
Далее, как в том анекдоте, у нас есть два выхода:
- Вносим правки в файл «Config.tjs», после чего идём в «mode_scenario.ks» и комментируем упомянутую выше строку, используя точку с запятой. Лично я считаю этот путь более правильным
- Вносим правки в ту строчку в файле «mode_scenario.ks», но для того, чтобы корректно отображался шрифт в остальных местах, придётся эти самые места искать и вносить там соответствующие корректировки.
В любом случае, чтобы всё корректно работало, нужно после этих операций удалить или переименовать (если он дорог вам как память) файл «datasc.ksd» в папке «savedata».
ЗЫ Этот метод может не оказывать влияния на вывод имён персонажей в других ВН на этом движке, но для Лебединой песни эта проблема неактуальна. Если вы столкнулись с ней в рамках работы над переводом, пишите – поизучаю проблему.
Смена шрифта в окне истории (на Tahoma)
Шрифт, отвечающий за вывод текста на экране истории, настраивается в уже знакомом нам файле «Config.tjs» в функции «HistoryLayer_config()»
Просто найдите код функции, там всё понятно. Там не только шрифт, но и ещё кое-что можно поднастроить при желании.
Этот пост будет ещё пополняться. Так, после релиза Песни, я выложу сюда исходник инсталлятора, который подойдёт для любой ВНки на этом движке, и ссылки на инструменты, которыми я пользовался для компиляции/декомпиляции.
Комментарии
Блог перевода
Рубрики:Перевод
- Перевод:
- текст с английского на русский
- Создан:
- 13 апреля 2013, владелец: mamavl
- Скачали:
- 1933 чел. (сегодня – 126)
- Права доступа:
-
войти все видеть чужие версии все скачивать результат все оценивать перевод все комментировать перевод все переводить все читать блог все комментировать блог все писать в блог все анонсировать модераторы редактировать оригинал модераторы редактировать описание модераторы управлять группой модераторы Участие в группе нет группы - Готово:
-
91.47% КП = 1.0

А вот если файл .tjs вдруг открывается в непонятной хрени и с началом TJS2100... Это значит, что Вы попали... :(
Чтобы не потерять, сюда кладу ссылку на пост про картинки:
http://vayurik.ru/archives/941