144 поста

Заметки о Kirikiri в разрезе Лебединой песни

SWAN SONG

В этом посте я помещу ту информацию, которую мне удалось изучить в рамках работы над этим проектом и которая, быть может, пригодится кому-то ещё.
Маны не читал. Всё написанное ниже – результат многочисленной граблетерапии и велосипедостроения. Если вы знакомы с возможностями движка и можете предложить более простое решение или просто имеете аналогичный опыт, пишите в комменты, я буду весьма признателен.
И не забываем про ебанутейшую тягу Нотабеноида заменять компьютерные кавычки на ёлочки, т.е. в скриптах нужно использовать двойные кавычки, а не ёлочки :)

Точка останова скрипта

Если в процессе работы вы столкнулись с ничего не говорящим сообщением об ошибке и не можете точно лоцировать источник возникновения ИС в коде скрипта, то можете вставить в скрипт системную команду, вызывающую системное диалоговое окно.
[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»]
Это уже исправленная версия строки

Тут же, как несложно догадаться, указываются и прочие параметры шрифта. Но такой подход порочен, потому что область действия шрифта будет ограничена.
Далее, как в том анекдоте, у нас есть два выхода:
  1. Вносим правки в файл «Config.tjs», после чего идём в «mode_scenario.ks» и комментируем упомянутую выше строку, используя точку с запятой. Лично я считаю этот путь более правильным

  2. Вносим правки в ту строчку в файле «mode_scenario.ks», но для того, чтобы корректно отображался шрифт в остальных местах, придётся эти самые места искать и вносить там соответствующие корректировки.


В любом случае, чтобы всё корректно работало, нужно после этих операций удалить или переименовать (если он дорог вам как память) файл «datasc.ksd» в папке «savedata».

ЗЫ Этот метод может не оказывать влияния на вывод имён персонажей в других ВН на этом движке, но для Лебединой песни эта проблема неактуальна. Если вы столкнулись с ней в рамках работы над переводом, пишите – поизучаю проблему.

Смена шрифта в окне истории (на Tahoma)

Шрифт, отвечающий за вывод текста на экране истории, настраивается в уже знакомом нам файле «Config.tjs» в функции «HistoryLayer_config()»
Просто найдите код функции, там всё понятно. Там не только шрифт, но и ещё кое-что можно поднастроить при желании.


Этот пост будет ещё пополняться. Так, после релиза Песни, я выложу сюда исходник инсталлятора, который подойдёт для любой ВНки на этом движке, и ссылки на инструменты, которыми я пользовался для компиляции/декомпиляции.
Написал DOOMer 13 мая 2014, 12:20 Общение 2 комментария

Две приятные новости

SWAN SONG

Новость раз: у нас теперь есть своя группа в Вконтакте: http://vk.com/swan_song_novell

Так как я в этих ваших Вконтактах совсем не силён, то попросил дорого Шамана сделать это для всех нас, за что ему огромное спасибо! :)

Новость два: с этого момента доступна для скачивания демо-версия с нашим переводом, которую я пока положил к себе на хостинг: http://vayurik.ru/swan_song/demo/SWANSONG_russian_patch_demo_0.1a.exe

SS_ss_demo.png

В последний момент я передумал растягивать демку до первой плохой концовки (скрипты 021-022) в пользу её завершения сразу после окончания «Пролога» – там весьма уместно прерваться, тем более разработчики тоже так подумали и вставили туда ролик (его можно было оттуда убрать, но зачем? :))

На что я хотел бы обратить внимание: в этой игре нужно следить, чтобы русский текст влезал в отведённое поле, иначе могут быть неуместные переносы. О всех подобных корявостях сообщайте мне – буду править. В принципе, в демке таких фрагментов быть не должно, но... никогда не говори «никогда» :)

Я на некоторое время выпаду из процесса кодинга (думаю, дня 3-4) – надо кое-что доделать из ранних проектов, но вычиткой заниматься продолжу в том же темпе.



Вдогонку: если вы не знаете, где взять саму игру, то я вам ничего не скажу :)
Написал DOOMer 22 февраля 2014, 16:44 Перевод комментировать

Скрипт генерации текстовых файлов из глав проекта

SWAN SONG

http://vayurik.ru/tools/notabenoid/create_text_file.php

На входе: ссылка на главу, например 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

Справа – автор перевода и оценка перевода.
Написал DOOMer 14 февраля 2014, 20:41 Общение комментировать

Текущая ситуация

SWAN SONG

Все работы завершены!

Решил сюда заносить, чтобы не вспоминать каждый раз, какой из процессов на каком этапе.

Скрипты:
Первичная вычитка: готово
Комментарии к переводам: готово
Редактирование скриптов: готово
Техническая обработка: готово
Вторичная вычитка: готово
Подгон диалогов под строки: готово
Приведение к конечному варианту имён: готово
Сборка дистрибутива патча: готово

Графика: сделано
Инсталлятор: сделано
Инсталлятор написан и протестирован. Умеет следующее:
1. Искать установленную версию игры по пути %Program Files%\SWANSONG или в соответствии с указанной в реестре информацией, если не найдёт, то указать путь можно руками.
2. Проверяет установленные патчи (до 10) и создаёт патч с индексом на один большим, чем максимальный из найденных.
3. После установки позволяет запустить игру.
4. Создаёт деинсталлятор в поддиректории «Russian», а также прописывает всю необходимую информацию в реестре и в меню, если там есть ярлык игры, для возможности последующего удаления.

Прочее
  • Переведены некоторые сообщения об ошибках, которые при нормальных условиях ни у кого не должны возникнуть. Например, в случае установки атрибута «Read only» для файла сохранения и последующей попытке в него же и сохраниться.



Что хочется, но пока не ясно, как делать:
  • Руссификация всех сообщений об ошибках, в частности ошибки при попытке повторного запуска приложения. Отвечает за это код в файле data.xp3/system/Initialize.tjs, который выполняется до загрузки всех патчей, как я понимаю, и, следовательно, он болт клал на всевозможные изменения, вносимые посредством патчей.
  • Расцензуривание

Не забыть удалить из патча исправленный для отладки графики скрипт mode_title.ks!
Написал DOOMer 9 февраля 2014, 07:42 Общение 24 комментария

Графика

SWAN SONG

Главное меню:
SS_ss01.png

Меню настроек:
SS_ss03.png

Меню игры:
SS_ss02.png

Таким образом, что-то у нас куда-то таки движется. Что радует :)))
Написал DOOMer 6 февраля 2014, 21:27 Общение комментировать

Техническая обработка текстов

SWAN SONG

В этот пост буду складывать все возможные системные ошибки, которые нужно будет поискать на финальном этапе подготовки скриптов.

Формат данных:
Слева – неверное написание, справа – верное.
«Кугавата» -> «Кувагата»
«Сассаки» -> «Сасаки»
«Кувазе», «Кавасе» -> «Кавазе»
«Юкко», «Юко» -> «Юка»
Суффикс «тян» -> «чан»
«часовн*» -> или «церковь» или «капелла», по контексту
«piano» -> или «пианино» или «фортепиано», по контексту
«кендо» -> «кэндо»
«Хосино» -> «Хошино»
«Бодхисатва» -> «Бодхисаттва»
«Ая» -> «Айя»

готово

Поискать соответствие всех склоняемых имён склонениям по суффиксам, например:
«Цукаса-куна», «Цукаса-куне», «Кувагата-сану», «Кувагата-сана»
готово

Мелочи:
+ Убрать концевые пробелы.
+ Отбить все точки между предложениями пробелами справа.
+ Привести все кавычки к единому написанию.
– Поубирать все суффиксы везде, кроме обращений и, возможно, прямой речи.
+ «всё как есть» – без запятой
+ «к тому же» – без запятой в конце
+ «несмотря ни на что» – не обособляется, «несмотря» слитно
+ «тем не менее» – не обособляется
+ «(всё) что угодно» – не обособляется
+ «вроде (меня)» – обычно не обособляется (смотреть по контексту)
+ «в любом случае» – не обособляется

готово
Написал DOOMer 30 января 2014, 15:36 Перевод 2 комментария

Словарь

SWAN SONG

В этот пост предлагаю вносить свойственные этому проекту термины и устойчивые словосочетания.
В комментах можно обсуждать адекватность того или иного термина :)

Список персонажей:

Amako Tsukasa (尼子 司) – Амако Цукаса (Tsuka-chan – Цука-чан)
Sasaki Yuka (佐々木 柚香) – Сасаки Юка (Yukacchi – Юкаччи; Yuka-san – Юка-сан)
Kuwagata Takuma (鍬形 拓馬) – Кувагата Такума (Taku-chan – Таку-чан)
Yasaka Aroe (八坂 あろえ) – Ясака Ароэ
Kawase Hibari (川瀬 雲雀) – Кавазе Хибари
Tanomura Shin (田能村 慎) – Таномура Шин (Tano-san – Тано-сан)
Nogi Taeko (乃木 妙子) – Ноги Таэко
Nogi Akane (茜) – Ноги Аканэ
Ryugeju-sama (竜華樹) – Рюдзю-сама
Koike Nozomi (小池 希美) – Койке Нозоми
Hidari Ryutaro (飛騨 隆太郎) – Хидари Рютаро
Kakizaki Toshihiko (柿崎 俊彦) – Какизаки Тошихико
Suzuki-san – Сузуки-сан (ssa032)
Yamaoka-san – Ямаока-сан (ssa032)
Kaneko – Канеко (ssa032)
Saitou-san – Сайто-сан (ssa036)
Saitou-kun – Сайто-кун (ssa068)
Hoshino Aya (星野綾) – Хошино Айя (ssa053)
Katou-kun (加藤) – Като-кун (ssa053)
Satou-san (佐藤) – Сато-сан (ssa043)
Nishino-san – Нишино-сан (ssa056)
Tajima-kun – Таджима-кун (ssa068)
Tomita-kun – Томита-кун (ssa070)
Kanou-chan – Кано-чан (ssa070)
Takahashi-kun – Такахаши-куна (ssa070)
Nomura-kun – Номура-кун (ssa081a)
Yasuda-kun – Ясуда-кун (ssa081a)
Honda (本田) – Хонда (ssa94a)
Toudou (藤堂) – Тодо (ssa095b)
Kouda (国府田) – Коуда (ssa095b)
Kaneko – Канэко (ssa103a)
Fukasawa – Фукасава (ssa024)

Taisho – Тайсё (ssa074) – это не совсем имя...
Houtakuji – Хотакуджи (ssa074) – это тоже :D


Сюда же добавлю, пусть тут пока полежит.
Как склонять имена и суффиксы:

В случаях, если имя не склоняемое (обычно склоняются японские имена и фамилии, оканчивающиеся на «а/я»):
1) женские имена/фамилии не склоняются, суффикс также не склоняется. Например: имя Ивао Джунко. «Песня Джунко-чан», «голос Ивао-сэнсей».
2) мужские имена/фамилии не склоняются, суффикс склоняется. Например: имя Коясу Такехито. «Диск Такехито-сана», «стихи Коясу-сэнсея».

В случаях, если имя склоняется:
1) женские имена/фамилии склоняются, суффикс не склоняется. Например: имя Хисакава Айя . «Песня Айи-чан», «голос Хисакавы-кун».
2) мужские имена/фамилии склоняется, суффикс также склоняется. Например: имя Ишида Акира. «Диск Акиры-сана», «стихи Ишиды-куна».

Суффиксы «-сама» и «-доно» не склоняются.


Предметы, места:
notebook – блокнот (та фигня, что таскает с собой Ароэ)
church – церковь (место, где они собираются вместе)
chapel – капелла (помещение в церкви, где они живут)
piano – пианино (стояло у ГГ дома) или фортепияно (концерты)
grand piano – рояль (стоит в музыкальном классе в школе)
Daichi Society – Общество Даичи
Shinsengumi – Синсэнгуми
Написал DOOMer 26 января 2014, 12:21 Перевод 12 комментариев

Подсветка синтаксиса для скриптов в Notepad++

SWAN SONG

SS_npp_ss.png

Ссылка на файл:
http://vayurik.ru/swan_song/utils/swan_song_npp_hl.xml

Что с этим делать описано тут:
http://notabenoid.com/book/40660/blog/24300

Что подсвечивается и как (поправьте меня, если я что-то недопонял):
1. Строки, начинающиеся с «;» – комментарии, подсвечены синим.
2. Подстроки, заключённые в квадратные скобочки (включая сами скобочки) – логика скрипта, чтобы не мешалась подсвечивается ненавязчивосерым :)
3. Собственно текст подсвечивается тёмно-зелёным и жирным.
4. Подстроки в кавычках – цитаты, подсвечены тем же зелёным, но ещё и курсивом.

5. При открытие файла с расширением «ks» автоматически будет применяться этот файл посдветки.
Написал DOOMer 26 января 2014, 11:40 Перевод 2 комментария

Помогите с синонимами

1. Выражения ''взвинчивать/накручивать [себя]''. По ряду причин не хочется употреблять ни первое (''взвинчивать'') ни второе (''накручивать''). А ничего в достаточной степени адекватного на замену в голову не приходит :(


2. Есть такой термин в английском – ''convenience store'', обозначающий что-то типа «универсальный магазин самообслуживания с более высокими ценами, ограниченным ассортиментом и длительным (порой круглосуточным) графиком работы». Какой по-вашему термин может коротко и ясно заменить эту формулировку при переводе?

ЗЫ Ох эти местные кривые ''ёлочки'' :)))
Написал DOOMer 24 декабря 2013, 15:43 Как это перевести? 20 комментариев

Ямаку и кавычки

Katawa Shoujo Full

В общем, предлагаю всем принять участие в обсуждении целесообразности заключения названия «Ямаку» в кавычки, а также методики проставления этих самых кавычек.

Но прежде хотелось бы обратить внимание, что т.к. в ВН явным образом не фигурирует название местности, то вполне можно предположить, что всё это место называется Ямаку, а уже на этой территории и располагается одноимённый интернат. В таком случае нужно лишний раз подумать, прежде чем проставлять кавычки в фразах типа «Пора возвращаться в Ямаку».
Написал DOOMer 22 декабря 2013, 08:15 Перевод 13 комментариев
Резюме
Пол:
мужчина
Родной язык:
русский
С нами:
с 2 сентября 2012 г. (5157 дней) по приглашению maximnot
Деятельность:
154883 версии перевода с общим рейтингом 18026
104397 комментариев
Карма: 35 (оценок: 35)
Написать DOOMer личное сообщение