SWAN SONG / Лебединая песнь – блог
Заметки о 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()»
Просто найдите код функции, там всё понятно. Там не только шрифт, но и ещё кое-что можно поднастроить при желании.
Этот пост будет ещё пополняться. Так, после релиза Песни, я выложу сюда исходник инсталлятора, который подойдёт для любой ВНки на этом движке, и ссылки на инструменты, которыми я пользовался для компиляции/декомпиляции.
Релиз!!!
http://enthusiasts-ts.ucoz.ru/news/swan_song_reliz/2014-05-20-69
Лично я качал дистрибутив отсюда: http://fuwanovel.org/novels/swan-song
Эта версия встаёт куда как приятнее, нежели представленная на РуТрекере, – никаких танцев с бубнами.
Лично я качал дистрибутив отсюда: http://fuwanovel.org/novels/swan-song
Эта версия встаёт куда как приятнее, нежели представленная на РуТрекере, – никаких танцев с бубнами.
Текущая ситуация
Все работы завершены!
Решил сюда заносить, чтобы не вспоминать каждый раз, какой из процессов на каком этапе.
Скрипты:
Графика: сделано
Инсталлятор написан и протестирован. Умеет следующее:
1. Искать установленную версию игры по пути %Program Files%\SWANSONG или в соответствии с указанной в реестре информацией, если не найдёт, то указать путь можно руками.
2. Проверяет установленные патчи (до 10) и создаёт патч с индексом на один большим, чем максимальный из найденных.
3. После установки позволяет запустить игру.
4. Создаёт деинсталлятор в поддиректории «Russian», а также прописывает всю необходимую информацию в реестре и в меню, если там есть ярлык игры, для возможности последующего удаления.
Прочее
Что хочется, но пока не ясно, как делать:
Решил сюда заносить, чтобы не вспоминать каждый раз, какой из процессов на каком этапе.
Скрипты:
Первичная вычитка: готово
Комментарии к переводам: готово
Редактирование скриптов: готово
Техническая обработка: готово
Вторичная вычитка: готово
Подгон диалогов под строки: готово
Приведение к конечному варианту имён: готово
Сборка дистрибутива патча: готово
Графика: сделано
- Главное меню
- Экраны загрузки, сохранения, бонусов, настройки
- Диалоги подтверждения действий, типа «Начать новую игру? Да / Нет»
- Название игры: подпись «русская версия»
- Меню приложения (игровое меню? в общем, которое сверху появляется)
- Меню дополнительных материалов («Экстра») и всё в нём
- Названия музыкальных композиций (точнее – изменён шрифт)
- Названия сохранений
Инсталлятор написан и протестирован. Умеет следующее:
1. Искать установленную версию игры по пути %Program Files%\SWANSONG или в соответствии с указанной в реестре информацией, если не найдёт, то указать путь можно руками.
2. Проверяет установленные патчи (до 10) и создаёт патч с индексом на один большим, чем максимальный из найденных.
3. После установки позволяет запустить игру.
4. Создаёт деинсталлятор в поддиректории «Russian», а также прописывает всю необходимую информацию в реестре и в меню, если там есть ярлык игры, для возможности последующего удаления.
Прочее
- Переведены некоторые сообщения об ошибках, которые при нормальных условиях ни у кого не должны возникнуть. Например, в случае установки атрибута «Read only» для файла сохранения и последующей попытке в него же и сохраниться.
Что хочется, но пока не ясно, как делать:
- Руссификация всех сообщений об ошибках, в частности ошибки при попытке повторного запуска приложения. Отвечает за это код в файле data.xp3/system/Initialize.tjs, который выполняется до загрузки всех патчей, как я понимаю, и, следовательно, он болт клал на всевозможные изменения, вносимые посредством патчей.
- Расцензуривание
Скрипт генерации текстовых файлов из глав проекта
http://vayurik.ru/tools/notabenoid/create_text_file.php
На входе: ссылка на главу, например http://notabenoid.com/book/39521/146622
Логин и пароль для получения оригинальных строк в текстовом файле (если оригинал не нужен, то можно не указывать, просто без авторизации не даёт скачать увидеть).
На выходе получаем что-то типа:
Справа – автор перевода и оценка перевода.
На входе: ссылка на главу, например http://notabenoid.com/book/39521/146622
Логин и пароль для получения оригинальных строк в текстовом файле (если оригинал не нужен, то можно не указывать, просто без авторизации не даёт скачать увидеть).
На выходе получаем что-то типа:
http://notabenoid.com/book/39521/146622/39564017
We head to the hospital again to work.
Мы направляемся в больницу поработать еще. Asinit529 0
Мы снова направляемся на работу в больницу. burt_cocaine 0
http://notabenoid.com/book/39521/146622/39564018
There are many things to do. We have to leave the technical treatment to nurses and doctors, but the environment has to be prepared and there are many miscellaneous jobs to do.
Нужно ещё многое сделать. Мы должны оставить техническое оснащение врачам и медсёстрам, но нужно подготовить обстановку, и сделать много различных дел. jan_lete 0
Справа – автор перевода и оценка перевода.
Графика
Главное меню:

Меню настроек:

Меню игры:

Таким образом, что-то у нас куда-то таки движется. Что радует :)))

Меню настроек:

Меню игры:

Таким образом, что-то у нас куда-то таки движется. Что радует :)))
Блог перевода
Рубрики:Перевод
- Перевод:
- текст с английского на русский
- Создан:
- 13 апреля 2013, владелец: mamavl
- Скачали:
- 1933 чел. (сегодня – 126)
- Права доступа:
-
войти все видеть чужие версии все скачивать результат все оценивать перевод все комментировать перевод все переводить все читать блог все комментировать блог все писать в блог все анонсировать модераторы редактировать оригинал модераторы редактировать описание модераторы управлять группой модераторы Участие в группе нет группы - Готово:
-
91.47% КП = 1.0
