Swordsman: посты
8 постов
Работа со скриптами Renpy
Любой скрипт в формате Renpy представляет собой простой текстовый файл в кодировке UTF-8. В начале работы со скриптом проверьте, что в вашем редакторе выбрана именно эта кодировка!
Текст скрипта включает в себя служебные команды языка Renpy, определяющие то, что происходит на экране и то, что в каждый момент времени слышит игрок, дополнительную информацию в виде комментариев, и собственно фразы персонажей. Как и в большинстве языков программирования, для облегчения чтения и работы над скриптом, каждый отдельный блок команд, каждый комментарий и каждая отдельная фраза персонажа занимают одну строку. Структура скрипта последовательная, линейная. Поддерживаются переходы. Это значит, что команды исполняются одна за другой по порядку строк, но с помощью специальных служебных команд можно исключить какой-либо участок последовательных строк из обработки. Или обрабатывать этот участок как-то иначе.
Комментарии обозначаются знаком «решётка» — #, который идёт в начале строки. Такая строка игрой не учитывается вовсе, она как бы не видна для неё. Все команды Renpy пишутся на английском языке. Некоторые из команд могут предваряться особыми служебными символами, например «символом доллара» — $. Они обрабатываются игрой наравне с другими. Любой текст фраз персонажей, будь то повествование рассказчика, мысли главного героя или прямая речь персонажа, заключается в обычные кавычки ("). Не забывайте комментировать строки оригинальных английских фраз, когда добавляете для них свой перевод, просто добавляя в начале английской строки символ #. Внизу этого поста я приложил картинку с примером того, как в результате должен выглядеть скрипт.
При работе над скриптом следует обращать внимание на команды языка Renpy и служебную разметку скриптов. Во-первых, чтение команд поможет понять, что в данный момент должно происходить в игре, ведь любые игровые действия (вход/выход персонажей, смена их изображений и фона, звуки и спецэффекты) как раз и программируются в скрипте. Это поможет более цельно понять картину происходящего и соотнести с ней переводимый текст и его смысл. Во-вторых, команды и разметка обозначают границы таких областей скрипта, как фрагменты полноэкранного текста или независимые сцены/сюжетные развилки, что в той же степени немаловажно.
Команды, которые обозначают работу с персонажами и сценами:
scene — смена сцены (фона)
with locationchange — эффект смены сцены
with locationskip — эффект смены сцены
with dissolve — стирает отображение сцены
show — отображает указанного персонажа на экране
hide — скрывает указанного персонажа
with charaenter — обозначает появление нового персонажа (его изображение вдвигается из-за границ экрана)
with charachange — изменение картинки персонажа
with charamove — перемещение персонажа по экрану
with charaexit — выдвигает изображение персонажа за границы экрана
play sound — проигрывает определённый звук. Обычно по названию звука понятно, что именно это за звук.
Есть ещё некоторые другие, но они либо реже встречаются, либо не так важны. В принципе, названия команд достаточно выразительны для того, чтобы понять их действие без дополнительных подсказок.
Также иногда встречаются сложные команды, содержащие в своих строках фразы персонажей. Пример такой команды — команда doublespeak, которая отображает специальный эффект, когда два персонажа говорят что-нибудь одновременно. Разумеется, такие фразы тоже надо переводить, поэтому это ещё одна причина внимательно относится не только к тексту фраз, но и к командам Renpy. Ниже приведу пример применения такой команды из скрипта:
$ doublespeak (li, hh, «I don't see why it matters.», «I don't think it matters.»)
Команды, обозначающие фрагменты участков скрипта:
nvl — обозначает действия с полноэкранным оформлением текста. В начале такого сегмента всегда идёт команда nvl show. Когда сегмент полноэкранного текста заканчивается, идёт команда nvl hide. Если полноэкранный текст занимает несколько страниц, для очищения экрана при переходе на следующую страницу используется команда nvl clear.
label — начало определённого фрагмента текста. Это может быть как отдельная сцена, одна из составляющих всю главу, так и сюжетное ветвление, и даже просто отдельный выбор из набора каких-либо действий или фраз.
menu — соответственно, показывает меню. Ниже этой команды идёт перечисление пунктов, из которых формируется меню.
Некоторые рекомендации при работе над скриптом:
Лично я предпочитаю работать со скриптами Renpy в бесплатном текстовом редакторе Notepad++. Он обладает достаточно богатым функционалом и гораздо более быстрый и менее громоздкий, нежели чем, к примеру, MS Word. Среди удобств — поддержка цветового выделения текста и отображение в статусной строке внизу окна редактора номера текущей строки и положения курсора (в количестве символов) относительно её начала. Это позволит вам одновременно с переводом также контролировать максимальный размер строк (опять-таки можно посмотреть картинку внизу).
Если строка перевода получается чересчур длинной (превышает 260-270 символов) и сократить её без ущерба для смысла никак не удаётся, и эта строка не относится к полноэкранному фрагменту текста (текст в сегменте nvl), то эту строку можно разбить на две независимые, предваряя каждую соответствующим префиксом персонажа. Например:
Оригинал: hi «It's not like she's literally talking over me and stuff, obviously. It's hard to explain. They have more energy than I do. It's like, an aggressiveness. I don't feel like I have to match it, but I want to. I think maybe your sister has that effect on people.»
Перевод: hi «Не то чтобы она могла перекричать меня буквально или ещё что, разумеется. Это сложно объяснить. Они гораздо энергичнее меня. Это, знаешь, как напористость. И вроде бы я не обязан этому соответствовать, но мне хочется.»
hi «Наверное, твоя сестра оказывает такое влияние на окружающих.»
Для облегчения работы с Renpy я написал небольшое описание формата языка (синтаксис цветовой разметки). Оно выделяет красным цветом большинство служебных команд, и зеленоватым цветом — комментарии. Скачать текст разметки синтаксиса можно здесь.
Если захотите этим воспользоваться, необходимо целиком записать данный текст в файл под названием userDefineLang.xml, который находится в каталоге «<Имя диска>:\Documents and Settings\<имя пользователя>\Application Data\Notepad++\» в случае с Windows XP, или в каталоге «<Имя диска>:\Users\<имя пользователя>\AppData\Roaming\Notepad++\» в случае с Vista и старше. Если вы уже работали с Notepad++ и у вас в этих каталогах уже есть этот файл, то тогда просто добавьте в него приведённый фрагмент текста, удалив начальный тег <NotepadPlus> и конечный тэг </NotepadPlus>, в конец файла (перед закрывающим тэгом </NotepadPlus>). Если вы всё сделали правильно, то в пункте «Синтаксис» главного меню N++ в самом низу появится пункт 'Renpy'.

И ещё один важный момент. Никогда не забывайте делать резервные копии своих наработок в скриптах. Даже не смотря на то, что ваши наработки вы должны также заносить на Ноту, будет обидно, если вы в случае какого-либо досадного инцидента потеряете почти полностью отредактированный скрипт. Например, я взял себе за правило после каждой сессии работы над скриптом копировать его в другой каталог на другом диске.
Текст скрипта включает в себя служебные команды языка Renpy, определяющие то, что происходит на экране и то, что в каждый момент времени слышит игрок, дополнительную информацию в виде комментариев, и собственно фразы персонажей. Как и в большинстве языков программирования, для облегчения чтения и работы над скриптом, каждый отдельный блок команд, каждый комментарий и каждая отдельная фраза персонажа занимают одну строку. Структура скрипта последовательная, линейная. Поддерживаются переходы. Это значит, что команды исполняются одна за другой по порядку строк, но с помощью специальных служебных команд можно исключить какой-либо участок последовательных строк из обработки. Или обрабатывать этот участок как-то иначе.
Комментарии обозначаются знаком «решётка» — #, который идёт в начале строки. Такая строка игрой не учитывается вовсе, она как бы не видна для неё. Все команды Renpy пишутся на английском языке. Некоторые из команд могут предваряться особыми служебными символами, например «символом доллара» — $. Они обрабатываются игрой наравне с другими. Любой текст фраз персонажей, будь то повествование рассказчика, мысли главного героя или прямая речь персонажа, заключается в обычные кавычки ("). Не забывайте комментировать строки оригинальных английских фраз, когда добавляете для них свой перевод, просто добавляя в начале английской строки символ #. Внизу этого поста я приложил картинку с примером того, как в результате должен выглядеть скрипт.
При работе над скриптом следует обращать внимание на команды языка Renpy и служебную разметку скриптов. Во-первых, чтение команд поможет понять, что в данный момент должно происходить в игре, ведь любые игровые действия (вход/выход персонажей, смена их изображений и фона, звуки и спецэффекты) как раз и программируются в скрипте. Это поможет более цельно понять картину происходящего и соотнести с ней переводимый текст и его смысл. Во-вторых, команды и разметка обозначают границы таких областей скрипта, как фрагменты полноэкранного текста или независимые сцены/сюжетные развилки, что в той же степени немаловажно.
Команды, которые обозначают работу с персонажами и сценами:
scene — смена сцены (фона)
with locationchange — эффект смены сцены
with locationskip — эффект смены сцены
with dissolve — стирает отображение сцены
show — отображает указанного персонажа на экране
hide — скрывает указанного персонажа
with charaenter — обозначает появление нового персонажа (его изображение вдвигается из-за границ экрана)
with charachange — изменение картинки персонажа
with charamove — перемещение персонажа по экрану
with charaexit — выдвигает изображение персонажа за границы экрана
play sound — проигрывает определённый звук. Обычно по названию звука понятно, что именно это за звук.
Есть ещё некоторые другие, но они либо реже встречаются, либо не так важны. В принципе, названия команд достаточно выразительны для того, чтобы понять их действие без дополнительных подсказок.
Также иногда встречаются сложные команды, содержащие в своих строках фразы персонажей. Пример такой команды — команда doublespeak, которая отображает специальный эффект, когда два персонажа говорят что-нибудь одновременно. Разумеется, такие фразы тоже надо переводить, поэтому это ещё одна причина внимательно относится не только к тексту фраз, но и к командам Renpy. Ниже приведу пример применения такой команды из скрипта:
$ doublespeak (li, hh, «I don't see why it matters.», «I don't think it matters.»)
Команды, обозначающие фрагменты участков скрипта:
nvl — обозначает действия с полноэкранным оформлением текста. В начале такого сегмента всегда идёт команда nvl show. Когда сегмент полноэкранного текста заканчивается, идёт команда nvl hide. Если полноэкранный текст занимает несколько страниц, для очищения экрана при переходе на следующую страницу используется команда nvl clear.
label — начало определённого фрагмента текста. Это может быть как отдельная сцена, одна из составляющих всю главу, так и сюжетное ветвление, и даже просто отдельный выбор из набора каких-либо действий или фраз.
menu — соответственно, показывает меню. Ниже этой команды идёт перечисление пунктов, из которых формируется меню.
Некоторые рекомендации при работе над скриптом:
Лично я предпочитаю работать со скриптами Renpy в бесплатном текстовом редакторе Notepad++. Он обладает достаточно богатым функционалом и гораздо более быстрый и менее громоздкий, нежели чем, к примеру, MS Word. Среди удобств — поддержка цветового выделения текста и отображение в статусной строке внизу окна редактора номера текущей строки и положения курсора (в количестве символов) относительно её начала. Это позволит вам одновременно с переводом также контролировать максимальный размер строк (опять-таки можно посмотреть картинку внизу).
Если строка перевода получается чересчур длинной (превышает 260-270 символов) и сократить её без ущерба для смысла никак не удаётся, и эта строка не относится к полноэкранному фрагменту текста (текст в сегменте nvl), то эту строку можно разбить на две независимые, предваряя каждую соответствующим префиксом персонажа. Например:
Оригинал: hi «It's not like she's literally talking over me and stuff, obviously. It's hard to explain. They have more energy than I do. It's like, an aggressiveness. I don't feel like I have to match it, but I want to. I think maybe your sister has that effect on people.»
Перевод: hi «Не то чтобы она могла перекричать меня буквально или ещё что, разумеется. Это сложно объяснить. Они гораздо энергичнее меня. Это, знаешь, как напористость. И вроде бы я не обязан этому соответствовать, но мне хочется.»
hi «Наверное, твоя сестра оказывает такое влияние на окружающих.»
Для облегчения работы с Renpy я написал небольшое описание формата языка (синтаксис цветовой разметки). Оно выделяет красным цветом большинство служебных команд, и зеленоватым цветом — комментарии. Скачать текст разметки синтаксиса можно здесь.
Если захотите этим воспользоваться, необходимо целиком записать данный текст в файл под названием userDefineLang.xml, который находится в каталоге «<Имя диска>:\Documents and Settings\<имя пользователя>\Application Data\Notepad++\» в случае с Windows XP, или в каталоге «<Имя диска>:\Users\<имя пользователя>\AppData\Roaming\Notepad++\» в случае с Vista и старше. Если вы уже работали с Notepad++ и у вас в этих каталогах уже есть этот файл, то тогда просто добавьте в него приведённый фрагмент текста, удалив начальный тег <NotepadPlus> и конечный тэг </NotepadPlus>, в конец файла (перед закрывающим тэгом </NotepadPlus>). Если вы всё сделали правильно, то в пункте «Синтаксис» главного меню N++ в самом низу появится пункт 'Renpy'.

И ещё один важный момент. Никогда не забывайте делать резервные копии своих наработок в скриптах. Даже не смотря на то, что ваши наработки вы должны также заносить на Ноту, будет обидно, если вы в случае какого-либо досадного инцидента потеряете почти полностью отредактированный скрипт. Например, я взял себе за правило после каждой сессии работы над скриптом копировать его в другой каталог на другом диске.
Главы в работе
Здесь ведётся учёт глав, как находящихся в работе (в процессе редактирования), так и уже отработанных. Информация обновляется по мере поступления.
Активная работа:
Редактирование, первый проход:
Hanako 2 — timcalire
Lilly 3 — Ch_Bibikoff
Emi 2 — Kredjer
Активная работа:
Редактирование, первый проход:
Hanako 2 — timcalire
Lilly 3 — Ch_Bibikoff
Emi 2 — Kredjer
Предлагаю приниматься за редактирование.
Господа желающие поработать над редактированием, предлагаю начинать проявлять активность. В особенности я обращаюсь к тем, кто был упомянут в качестве потенциальных редакторов вот в этой теме.
Те, кто упомянут не был, также могут предлагать собственные варианты к переводам, этого никто не запрещал. Тем более, если конкретная глава ещё ни за кем не закреплена. А ведь ещё ни одна глава не закреплена, поскольку никто не вызывался.
Предлагаю начинать работу по сформулированной схеме. Если у кого-то есть вопросы относительно этой схемы, если кому-то что-то в ней непонятно или что-то в ней не нравится — просьба высказываться и задавать свои вопросы в её обсуждении. А то уже добрый десяток дней прошёл, а никто и ни гу-гу (ну, почти никто).
Те, кто упомянут не был, также могут предлагать собственные варианты к переводам, этого никто не запрещал. Тем более, если конкретная глава ещё ни за кем не закреплена. А ведь ещё ни одна глава не закреплена, поскольку никто не вызывался.
Предлагаю начинать работу по сформулированной схеме. Если у кого-то есть вопросы относительно этой схемы, если кому-то что-то в ней непонятно или что-то в ней не нравится — просьба высказываться и задавать свои вопросы в её обсуждении. А то уже добрый десяток дней прошёл, а никто и ни гу-гу (ну, почти никто).
Новая методика редактирования
Новая не только потому, что «новая метла по-новому метёт», но и потому, что предложенные ранее не учитывали много важных моментов. Вполне возможно, я буду вносить изменения в этот пост по мере обсуждения.
Итак, на в сложившейся в проекте ситуации редактирование, как мне сейчас представляется, должно состоять из двух этапов и осуществляться В ДВА ПРОХОДА. Потому что на первом проходе редакторам, увы, во многом придётся заниматься тем, что должны были сделать сами переводчики в процессе работы над первоначальным переводом. Я прежде всего имею в виду сверку с оригинальными скриптами, но ей одной дело не ограничивается. Для получения вменяемого перевода сверка со скриптами необходима, поскольку только из скриптов можно взять информацию о ветвлении и взаимозависимости фрагментов текста. Кроме того, некоторые фразы были утеряны при начальной загрузке английского текста на Ноту (такие, во всяком случае, были раньше; вполне возможно, что есть ещё).
Оригинальные скрипты — это не те, которые можно выдрать из игры декомпилятором RenPy. Оригинальные скрипты предоставлены разработчиками игры и несут в себе дополнительную информацию в виде комментариев разработчиков, которые встречаются по тексту и относятся к различным его аспектам. Сам же по себе скрипт RenPy представляет собой обычный текстовый файл с расширением *.rpy в кодировке (это важно!) UTF-8, с которым можно работать в любом текстовом редакторе с поддержкой кодировки. Структура языка RenPy крайне проста, с её анализом даже у чистого гумманитария не должно возникнуть особых проблем. Лично я работаю с ними во freeware-редакторе Notepad++, для которого написал маленький шаблон синтаксиса для языка RenPy, подсвечивающий для удобства служебные слова языка и закомментированные строки другими цветами. Минимально необходимую информацию по скриптам Renpy, а также шаблон языка для N++ и инструкцию по его установке можно посмотреть здесь.
Да, при работе со скриптом редакторы в каком-то смысле будут выполнять двойную работу — заносить свой вариант и на Ноту, и в скрипт — но в дальнейшем это позволит наиболее просто решать задачи по первоначальному тестированию промежуточных результатов на движке игры, а на выходе сразу же даст готовый для интегрирования скрипт. Главное: редактору нужно не забывать поддерживать текст скрипта в актуальном состоянии, внося в него изменения, которые он сделал на Ноте. Отказываться же от выкладывания на Ноту тоже нельзя — во-первых, это будет служить своего рода «резервным копированием» на тот случай, если с наработками на компе редактора что-то случится, а во-вторых, так можно будет следить за прогрессом редактирования и как-то контролировать работу на ходу.
Далее я привожу блок-схему в виде двухуровневого списка со сквозной нумерацией, чтобы в обсуждении можно было обратиться к определённому пункту, не цитируя его.
Проход первый, редактирование.
Смысл: на этом этапе исправляются огрешности перевода, приводится к единообразию переводческий словарь и пунктуация, производится сверка с текстом оригинального англоязычного скрипта, поднимаются на обсуждение прочие нерешённые до этого вопросы.
1.1. Редактору, взявшемуся за конкретную главу, мной высылается её оригинальный скрипт. В соответствующем посте блога делается запись о том, что такая-то глава отдана на редактирование редактору имярек.
1.2. Редактор не редактирует чужие варианты перевода на Ноте, если они его не устраивают. Вместо этого он добавляет собственный вариант перевода. Если его устраивает уже предложенный вариант, всё так и остаётся. Если предложено несколько вариантов перевода и его устраивает ОДИН ИЗ НИХ, он добавляет ему свою оценку (плюс). Авторство оценок можно отследить и будут иметь силу только оценки, выставленные редактором — при обычном порядке вещей (наверное, возможны исключения, но это всё обсуждаемо). В обычном рабочем порядке оценки остальных участников перевода будут нести лишь декоративный смысл.
1.3. Одобренный вариант перевода редактор добавляет в оригинальный скрипт rpy, при этом комментируя английский текст фразы (но не удаляя его).
1.4. При работе над текстом обращаем внимание на присутствие в оригинальном скрипте значащих, незакомментированных фраз персонажей, которые почему-либо отсутствуют в тексте на Ноте. Там, где они есть — переводим их и вносим этот перевод на Ноту.
1.5. При работе над текстом обращаем внимание на служебный синтаксис RenPy в оригинальном скрипте, чтобы выделять независимые ветвления текстовых фрагментов и структуру логических переходов, зависящих от выбора игрока на развилках-вариантах. Границы ветвлений отмечаем в комментариях фраз на Ноте, чтобы было понятно всем прочим (как, например, это сделано у меня вот здесь и здесь). При необходимости прибегаем к анализу структуры переходов, например, как это проделано здесь. За помощью в анализе обращаемся, например, ко мне. Без подобного разбора структуры скрипта нельзя будет разделить независимые текстовые фрагменты, а также проследить логическую связь между зависимыми, поэтому она необходима и обязательна.
1.6. При работе над текстом обращаем внимание на комментарии от разработчиков в оригинальных скриптах. Там может содержаться полезная информация, относящаяся к логической структуре связей или просто к смыслу конкретной фразы, например.
1.7. Также сверяемся с англоязычным списком «крылатых цитат и выражений». С одной стороны он, к сожалению, далеко не полон, с другой стороны — далеко не всегда полезен (в силу узости целевой аудитории, для которой предназначена конкретная отсылка), но делать это всё равно необходимо.
1.8. По ходу работы редактор вылавливает все характерные слова, термины, названия, имена и т.п., которые могут встретиться в других частях текста, других главах или других ветках, и заносит их в комментарии к будущей записи «единый реестр» в блоге. То, что нужно, будет внесено модераторами в «словарь» перевода (доступен на любой странице текста перевода при нажатии Alt+V). Т.е. занимаемся тем, чем до этого занимались, к примеру, здесь, здесь и здесь, но теперь уже делаем это в обязательном сквозном порядке по всему тексту. Письмо Иванако, кстати, тоже сюда относится, но под него я попрошу создателя сделать отдельную, независимую ветвь перевода, окончательный вариант которого будет эталонным.
1.9. Также приводим к единообразию пунктуацию. Видимо, нужно будет создать отдельный пост в блоге, который будет использоваться, как справочник. Старая тема.
1.10. Контекстное время повествования — настоящее или прошедшее. Больной вопрос, который в своё время родился в силу чрезмерной фантазии и стремления к реформаторству на пустом месте и впоследствии стал причиной немалого срача. В силу того, что а) в большинстве русскоязычной художественной литературы основой контекстного повествовательного является прошедшее время и б) существующий перевод первой главы от Хоняк выполнен в традиционном контекстном прошедшем, предлагаю: там, где работы для редактора много, приводить время к прошедшему, там, где мало, и перевод выполнен в контекстном настоящем — оставлять как есть. Но прежде всего нужно соблюдать правило сохранения контекстного повествовательного на протяжении не только одной главы, но вообще всей конкретной ветки персонажа, состоящей из трёх глав. Поэтому, если уж переделываем конектстное время, то во всех трёх главах конкретной ветки. Вообще этот вопрос, думаю, тоже достоин нового отдельного поста в блоге, ибо старое обсуждение потеряло актуальность.
1.11. По завершению работы над главой редактор отсылает получившийся у него скрипт перевода rpy мне. В соответствующем посте блога делается запись о том, что глава такая-то прошла первичное редактирование редактором имярек. После этого все правки в текст перевода вносятся только в процессе второго прохода.
На выходе первого прохода для каждой главы мы получаем скрипт с русскоязычным переводом, готовый для предварительного тестирования на движке игры. Как это тестирование осуществлять технически, надо будет посмотреть, но вроде как у Шамана получалось без особых проблем вставлять в игру тестовый русский скрипт.
Проход второй, стилизация.
Смысл: окончательная правка, решение оставшихся «хвостов», стилизация речи некоторых (наиболее ярких) персонажей.
2.1. Получившийся в результате первого прохода скрипт перевода rpy отсылается редактору второго прохода. В дальнейшем он, как это было при первом проходе, работает не только с текстом на Ноте, но и с этим самым скриптом. Снова отметка в соответствующем посте блога.
2.2. Редактор второго прохода действует по аналогии с редактором первого, но работает при этом с одним-единственным вариантом перевода — тем, который был одобрен (или предложен) редактором первого прохода и, соответственно, был занесён им в текст скрипта. Именно этот вариант редактор второго прохода либо одобряет (также ставя свою оценку на Ноте и просто оставляя его без изменений в тексте скрипта), либо правит по своему усмотрению, но с сохранением смысла перевода. В последнем случае на Ноту к первоначальному варианту от первого редактора редактор второго прохода добавляет свой исправленный вариант, а в скрипте первоначальный просто заменяется на исправленный. Сомнения относительно смысла перевода (если вдруг таковые возникнут) следует разрешать в совещательном порядке, поднимая вопрос в соответствующей теме в блоге. Если для конкретной фразы на Ноте, помимо варианта, одобренного первым редактором, представлены также другие варианты, рекомендуется использовать их не более чем в качестве возможных источников удачных слов или выражений.
2.3. На этом проходе редактором окончательно решаются все спорные вопросы в конкретных местах и фразах, которые могли возникнуть в процессе первого прохода и породить обсуждения в комментариях на Ноте. Возможно, сюда же перекочует работа пункта 1.10 с приведением контекстного повествовательного времени к единообразию внутри ветки — если, например, на первом проходе выяснится, что в разных главах в этом отношении полный винегрет и редактор первого прохода не сможет решить сходу, что делать с контекстным временем.
2.4. Производится сквозная стилизация фраз отобранных персонажей. Например, таковую стилизацию я считаю необходимой для Миши с её распевной манерой речи и для Рин с её скомканными, ломаными, обрубленными фразами. И если в случае с Мишей в основном можно ограничиться расстановкой в нужных местах тильды (знак «~») или её замены на принятую в русском языке передачу «растянутых» гласных написанием через короткое тире (типа «А-а-а!») — тоже тема для отдельного поста — то с Рин возни будет куда больше, поскольку особенность её речи зачастую концептуальна и сюжетоопределяюща. Если пойти дальше, то можно стилизовать речь Эми (энергичная, лишённая излишних формальностей бойкая речь) и речь Лилли (наоборот, речь преимущественно интеллигентная и сдержанная). Мне кажется, первичные наработки в этом отношении должен сделать редактор во время первого прохода.
2.5. Выверяется максимальная длина всех фраз (т.е. строк). В обычном случае она не должна превышать 260-270 символов (в зависимости от того, как много в конретной фразе символов с полной типографской шириной типа «ш», «м», «ж») без учёта служебного префикса идентификации персонажа и служебных символов разметки, которые могут встречаться по тексту. Если превышает и фразу безболезненно для смысла сократить не удаётся — фразу бьём надвое, т.е. её смысл разделяем на две различные фразы, идущие последовательно и с одинаковым префиксом персонажа. Такой трюк движок RenPy вполне безболезненно позволяет. Более длинные фразы в тексте есть, но они относятся к специальным блокам — «повествовательное» (ключевое служебное слово nvl) — и их текст выводится на весь экран, а не в окно фразы персонажа в нижней части. Обычные же фразы при превышении рекомендуемой длины движок игры начинает бить на четыре строки, и четвёртая строка уже не полностью влезает в окно фразы персонажа, что очень некрасиво. Тоже достойно отдельного поста в блоге.
2.6. Думаю, что дополнительный контроль того, как получающийся результат будет выглядеть на деле (в т.ч. длина строк и компоновка повествовательных полноэкранных блоков), можно будет без особых проблем осуществлять прямо в движке игры. Нужно только будет разработать инструкцию, как самостоятельно подпихивать игре переведённый вариант скрипта. Ещё одна будущая тема в блоге.
2.6. По завершению работы получившийся окончательный скрипт перевода опять-таки отсылается мне. В соответствующем посте блога снова делается отметка. Глава считается отредактированной и, возможно, закрывается для дальнейшей правки (но обсуждение в комментариях можно оставить открытым).
Таким образом, на выходе работы второго редактора мы получаем скрипт с русскоязычным переводом, готовый для окончательного интегрирования в игру и проверенный на отсутствие глюков или нестыковок.
Вроде всё. Если что-то забыл — добавлю. Обсуждаем, критикуем, предлагаем.
Итак, на в сложившейся в проекте ситуации редактирование, как мне сейчас представляется, должно состоять из двух этапов и осуществляться В ДВА ПРОХОДА. Потому что на первом проходе редакторам, увы, во многом придётся заниматься тем, что должны были сделать сами переводчики в процессе работы над первоначальным переводом. Я прежде всего имею в виду сверку с оригинальными скриптами, но ей одной дело не ограничивается. Для получения вменяемого перевода сверка со скриптами необходима, поскольку только из скриптов можно взять информацию о ветвлении и взаимозависимости фрагментов текста. Кроме того, некоторые фразы были утеряны при начальной загрузке английского текста на Ноту (такие, во всяком случае, были раньше; вполне возможно, что есть ещё).
Оригинальные скрипты — это не те, которые можно выдрать из игры декомпилятором RenPy. Оригинальные скрипты предоставлены разработчиками игры и несут в себе дополнительную информацию в виде комментариев разработчиков, которые встречаются по тексту и относятся к различным его аспектам. Сам же по себе скрипт RenPy представляет собой обычный текстовый файл с расширением *.rpy в кодировке (это важно!) UTF-8, с которым можно работать в любом текстовом редакторе с поддержкой кодировки. Структура языка RenPy крайне проста, с её анализом даже у чистого гумманитария не должно возникнуть особых проблем. Лично я работаю с ними во freeware-редакторе Notepad++, для которого написал маленький шаблон синтаксиса для языка RenPy, подсвечивающий для удобства служебные слова языка и закомментированные строки другими цветами. Минимально необходимую информацию по скриптам Renpy, а также шаблон языка для N++ и инструкцию по его установке можно посмотреть здесь.
Да, при работе со скриптом редакторы в каком-то смысле будут выполнять двойную работу — заносить свой вариант и на Ноту, и в скрипт — но в дальнейшем это позволит наиболее просто решать задачи по первоначальному тестированию промежуточных результатов на движке игры, а на выходе сразу же даст готовый для интегрирования скрипт. Главное: редактору нужно не забывать поддерживать текст скрипта в актуальном состоянии, внося в него изменения, которые он сделал на Ноте. Отказываться же от выкладывания на Ноту тоже нельзя — во-первых, это будет служить своего рода «резервным копированием» на тот случай, если с наработками на компе редактора что-то случится, а во-вторых, так можно будет следить за прогрессом редактирования и как-то контролировать работу на ходу.
Далее я привожу блок-схему в виде двухуровневого списка со сквозной нумерацией, чтобы в обсуждении можно было обратиться к определённому пункту, не цитируя его.
Проход первый, редактирование.
Смысл: на этом этапе исправляются огрешности перевода, приводится к единообразию переводческий словарь и пунктуация, производится сверка с текстом оригинального англоязычного скрипта, поднимаются на обсуждение прочие нерешённые до этого вопросы.
1.1. Редактору, взявшемуся за конкретную главу, мной высылается её оригинальный скрипт. В соответствующем посте блога делается запись о том, что такая-то глава отдана на редактирование редактору имярек.
1.2. Редактор не редактирует чужие варианты перевода на Ноте, если они его не устраивают. Вместо этого он добавляет собственный вариант перевода. Если его устраивает уже предложенный вариант, всё так и остаётся. Если предложено несколько вариантов перевода и его устраивает ОДИН ИЗ НИХ, он добавляет ему свою оценку (плюс). Авторство оценок можно отследить и будут иметь силу только оценки, выставленные редактором — при обычном порядке вещей (наверное, возможны исключения, но это всё обсуждаемо). В обычном рабочем порядке оценки остальных участников перевода будут нести лишь декоративный смысл.
1.3. Одобренный вариант перевода редактор добавляет в оригинальный скрипт rpy, при этом комментируя английский текст фразы (но не удаляя его).
1.4. При работе над текстом обращаем внимание на присутствие в оригинальном скрипте значащих, незакомментированных фраз персонажей, которые почему-либо отсутствуют в тексте на Ноте. Там, где они есть — переводим их и вносим этот перевод на Ноту.
1.5. При работе над текстом обращаем внимание на служебный синтаксис RenPy в оригинальном скрипте, чтобы выделять независимые ветвления текстовых фрагментов и структуру логических переходов, зависящих от выбора игрока на развилках-вариантах. Границы ветвлений отмечаем в комментариях фраз на Ноте, чтобы было понятно всем прочим (как, например, это сделано у меня вот здесь и здесь). При необходимости прибегаем к анализу структуры переходов, например, как это проделано здесь. За помощью в анализе обращаемся, например, ко мне. Без подобного разбора структуры скрипта нельзя будет разделить независимые текстовые фрагменты, а также проследить логическую связь между зависимыми, поэтому она необходима и обязательна.
1.6. При работе над текстом обращаем внимание на комментарии от разработчиков в оригинальных скриптах. Там может содержаться полезная информация, относящаяся к логической структуре связей или просто к смыслу конкретной фразы, например.
1.7. Также сверяемся с англоязычным списком «крылатых цитат и выражений». С одной стороны он, к сожалению, далеко не полон, с другой стороны — далеко не всегда полезен (в силу узости целевой аудитории, для которой предназначена конкретная отсылка), но делать это всё равно необходимо.
1.8. По ходу работы редактор вылавливает все характерные слова, термины, названия, имена и т.п., которые могут встретиться в других частях текста, других главах или других ветках, и заносит их в комментарии к будущей записи «единый реестр» в блоге. То, что нужно, будет внесено модераторами в «словарь» перевода (доступен на любой странице текста перевода при нажатии Alt+V). Т.е. занимаемся тем, чем до этого занимались, к примеру, здесь, здесь и здесь, но теперь уже делаем это в обязательном сквозном порядке по всему тексту. Письмо Иванако, кстати, тоже сюда относится, но под него я попрошу создателя сделать отдельную, независимую ветвь перевода, окончательный вариант которого будет эталонным.
1.9. Также приводим к единообразию пунктуацию. Видимо, нужно будет создать отдельный пост в блоге, который будет использоваться, как справочник. Старая тема.
1.10. Контекстное время повествования — настоящее или прошедшее. Больной вопрос, который в своё время родился в силу чрезмерной фантазии и стремления к реформаторству на пустом месте и впоследствии стал причиной немалого срача. В силу того, что а) в большинстве русскоязычной художественной литературы основой контекстного повествовательного является прошедшее время и б) существующий перевод первой главы от Хоняк выполнен в традиционном контекстном прошедшем, предлагаю: там, где работы для редактора много, приводить время к прошедшему, там, где мало, и перевод выполнен в контекстном настоящем — оставлять как есть. Но прежде всего нужно соблюдать правило сохранения контекстного повествовательного на протяжении не только одной главы, но вообще всей конкретной ветки персонажа, состоящей из трёх глав. Поэтому, если уж переделываем конектстное время, то во всех трёх главах конкретной ветки. Вообще этот вопрос, думаю, тоже достоин нового отдельного поста в блоге, ибо старое обсуждение потеряло актуальность.
1.11. По завершению работы над главой редактор отсылает получившийся у него скрипт перевода rpy мне. В соответствующем посте блога делается запись о том, что глава такая-то прошла первичное редактирование редактором имярек. После этого все правки в текст перевода вносятся только в процессе второго прохода.
На выходе первого прохода для каждой главы мы получаем скрипт с русскоязычным переводом, готовый для предварительного тестирования на движке игры. Как это тестирование осуществлять технически, надо будет посмотреть, но вроде как у Шамана получалось без особых проблем вставлять в игру тестовый русский скрипт.
Проход второй, стилизация.
Смысл: окончательная правка, решение оставшихся «хвостов», стилизация речи некоторых (наиболее ярких) персонажей.
2.1. Получившийся в результате первого прохода скрипт перевода rpy отсылается редактору второго прохода. В дальнейшем он, как это было при первом проходе, работает не только с текстом на Ноте, но и с этим самым скриптом. Снова отметка в соответствующем посте блога.
2.2. Редактор второго прохода действует по аналогии с редактором первого, но работает при этом с одним-единственным вариантом перевода — тем, который был одобрен (или предложен) редактором первого прохода и, соответственно, был занесён им в текст скрипта. Именно этот вариант редактор второго прохода либо одобряет (также ставя свою оценку на Ноте и просто оставляя его без изменений в тексте скрипта), либо правит по своему усмотрению, но с сохранением смысла перевода. В последнем случае на Ноту к первоначальному варианту от первого редактора редактор второго прохода добавляет свой исправленный вариант, а в скрипте первоначальный просто заменяется на исправленный. Сомнения относительно смысла перевода (если вдруг таковые возникнут) следует разрешать в совещательном порядке, поднимая вопрос в соответствующей теме в блоге. Если для конкретной фразы на Ноте, помимо варианта, одобренного первым редактором, представлены также другие варианты, рекомендуется использовать их не более чем в качестве возможных источников удачных слов или выражений.
2.3. На этом проходе редактором окончательно решаются все спорные вопросы в конкретных местах и фразах, которые могли возникнуть в процессе первого прохода и породить обсуждения в комментариях на Ноте. Возможно, сюда же перекочует работа пункта 1.10 с приведением контекстного повествовательного времени к единообразию внутри ветки — если, например, на первом проходе выяснится, что в разных главах в этом отношении полный винегрет и редактор первого прохода не сможет решить сходу, что делать с контекстным временем.
2.4. Производится сквозная стилизация фраз отобранных персонажей. Например, таковую стилизацию я считаю необходимой для Миши с её распевной манерой речи и для Рин с её скомканными, ломаными, обрубленными фразами. И если в случае с Мишей в основном можно ограничиться расстановкой в нужных местах тильды (знак «~») или её замены на принятую в русском языке передачу «растянутых» гласных написанием через короткое тире (типа «А-а-а!») — тоже тема для отдельного поста — то с Рин возни будет куда больше, поскольку особенность её речи зачастую концептуальна и сюжетоопределяюща. Если пойти дальше, то можно стилизовать речь Эми (энергичная, лишённая излишних формальностей бойкая речь) и речь Лилли (наоборот, речь преимущественно интеллигентная и сдержанная). Мне кажется, первичные наработки в этом отношении должен сделать редактор во время первого прохода.
2.5. Выверяется максимальная длина всех фраз (т.е. строк). В обычном случае она не должна превышать 260-270 символов (в зависимости от того, как много в конретной фразе символов с полной типографской шириной типа «ш», «м», «ж») без учёта служебного префикса идентификации персонажа и служебных символов разметки, которые могут встречаться по тексту. Если превышает и фразу безболезненно для смысла сократить не удаётся — фразу бьём надвое, т.е. её смысл разделяем на две различные фразы, идущие последовательно и с одинаковым префиксом персонажа. Такой трюк движок RenPy вполне безболезненно позволяет. Более длинные фразы в тексте есть, но они относятся к специальным блокам — «повествовательное» (ключевое служебное слово nvl) — и их текст выводится на весь экран, а не в окно фразы персонажа в нижней части. Обычные же фразы при превышении рекомендуемой длины движок игры начинает бить на четыре строки, и четвёртая строка уже не полностью влезает в окно фразы персонажа, что очень некрасиво. Тоже достойно отдельного поста в блоге.
2.6. Думаю, что дополнительный контроль того, как получающийся результат будет выглядеть на деле (в т.ч. длина строк и компоновка повествовательных полноэкранных блоков), можно будет без особых проблем осуществлять прямо в движке игры. Нужно только будет разработать инструкцию, как самостоятельно подпихивать игре переведённый вариант скрипта. Ещё одна будущая тема в блоге.
2.6. По завершению работы получившийся окончательный скрипт перевода опять-таки отсылается мне. В соответствующем посте блога снова делается отметка. Глава считается отредактированной и, возможно, закрывается для дальнейшей правки (но обсуждение в комментариях можно оставить открытым).
Таким образом, на выходе работы второго редактора мы получаем скрипт с русскоязычным переводом, готовый для окончательного интегрирования в игру и проверенный на отсутствие глюков или нестыковок.
Вроде всё. Если что-то забыл — добавлю. Обсуждаем, критикуем, предлагаем.
Редакторы
Итак, принимаемся за дело.
Предыдущий пост о выборах редакторов объявляю недействительным по очевидным причинам: идея о демократичных выборах редакторов без предварительного отбора кандидатов, где правом голоса обладает каждый желающий — откровенный бред. Я бы отредактировал непосредственно тот пост, но увы — не могу.
Собственно, кто и как. Сейчас в проекте есть люди, которые умеют грамотно и литературно переводить, что и доказали на деле своими переводами. Для начала их и включим в список возможных редакторов. Перечислю их ники в алфавитном порядке:
Ch_Bibikoff
GepToR
Kredjer
Necr0niX
p1cadorr
Swordsman
xBlackJackx
Кроме того, есть люди, в чьих силах у меня нет достаточной уверенности — в основном из-за того, что они отметились слишком мало. Это BRC и timcalire. Также могут появится новые люди со стороны, чего я на самом деле очень бы хотел, но их способности нужно будет как-то проверять. По всей видимости, тут нужно принимать на вооружение какой-либо тест наподобие того, как в своё время у Хоняк (та группа, что сделала существующий перевод первой главы) принимали переводчиков в развалившийся проект по переводу остальных глав Катавы. Но там было проще — из оригинального английского текста был выбран небольшой и достаточно сложный отрывок, который нужно было перевести. У нас такой возможности уже нет и нужно придумывать что-то своё.
Со всем этим надо что-то решать. Для начала предлагаю всем модераторам обсудить предложенный список и вообще то, согласны ли они с подобным способом первоначального выбора кандидатур. Также предлагаю всем, кто был здесь упомянут (включая тех, кто под сомнением) отметиться в теме на предмет, есть ли у них вообще желание и возможность взять на себя редактуру.
Предыдущий пост о выборах редакторов объявляю недействительным по очевидным причинам: идея о демократичных выборах редакторов без предварительного отбора кандидатов, где правом голоса обладает каждый желающий — откровенный бред. Я бы отредактировал непосредственно тот пост, но увы — не могу.
Собственно, кто и как. Сейчас в проекте есть люди, которые умеют грамотно и литературно переводить, что и доказали на деле своими переводами. Для начала их и включим в список возможных редакторов. Перечислю их ники в алфавитном порядке:
Ch_Bibikoff
GepToR
Kredjer
Necr0niX
p1cadorr
Swordsman
xBlackJackx
Кроме того, есть люди, в чьих силах у меня нет достаточной уверенности — в основном из-за того, что они отметились слишком мало. Это BRC и timcalire. Также могут появится новые люди со стороны, чего я на самом деле очень бы хотел, но их способности нужно будет как-то проверять. По всей видимости, тут нужно принимать на вооружение какой-либо тест наподобие того, как в своё время у Хоняк (та группа, что сделала существующий перевод первой главы) принимали переводчиков в развалившийся проект по переводу остальных глав Катавы. Но там было проще — из оригинального английского текста был выбран небольшой и достаточно сложный отрывок, который нужно было перевести. У нас такой возможности уже нет и нужно придумывать что-то своё.
Со всем этим надо что-то решать. Для начала предлагаю всем модераторам обсудить предложенный список и вообще то, согласны ли они с подобным способом первоначального выбора кандидатур. Также предлагаю всем, кто был здесь упомянут (включая тех, кто под сомнением) отметиться в теме на предмет, есть ли у них вообще желание и возможность взять на себя редактуру.
Обновление состава модераторов
Приветствую всех. Как можно заметить, в составе модераторов проекта произошли изменения. Произошли они вследствие того, что мне удалось убедить создателя проекта в необходимости изменений, в том, что проектом по переводу должны управлять те, кто действительно умеет переводить.
Сейчас в составе модераторов пять человек. Это немало, но и не слишком много, особенно учитывая то, что некоторых неизбежно отвлекают различные дела и обязанности. Надеюсь, что у модераторов будет немного работы, связанной непосредственно с поддержанием порядка, но если вдруг такая работа возникнет, желаю им всем подходить к ней с трезвым суждением и взвешенными решениями, избегая скоропалительных поступков. В случае, если кто-то в чём-то не уверен, советуйтесь с коллегами или поднимайте вопрос открыто. Один человек никогда не застрахован от ошибок, поэтому во многих случаях лучше, если сложные решения будут приниматься коллегиально.
Отдельно хочу отметить ещё один момент. Смена состава не означает того, что разжалованные модераторы должны подвергаться гонениям, а их мнение по любым вопросам будет отметаться с порога. Не стоит повторять старых ошибок на новый лад. Грамотность в переводе необходима, опыт, если его нет, рано или поздно придёт, но конструктивизм тоже важен. Даже самый опытный переводчик не застрахован от ошибок, поэтому ещё раз хочу пожелать рассудительного подхода к делу. В новом составе модераторов есть люди с различным мнением по разным вопросам, поэтому хочу пожелать всем постараться сделать так, чтобы разница во взглядах не вела к конфликтам, но помогала сформировать более полное и разностороннее мнение.
Сейчас в составе модераторов пять человек. Это немало, но и не слишком много, особенно учитывая то, что некоторых неизбежно отвлекают различные дела и обязанности. Надеюсь, что у модераторов будет немного работы, связанной непосредственно с поддержанием порядка, но если вдруг такая работа возникнет, желаю им всем подходить к ней с трезвым суждением и взвешенными решениями, избегая скоропалительных поступков. В случае, если кто-то в чём-то не уверен, советуйтесь с коллегами или поднимайте вопрос открыто. Один человек никогда не застрахован от ошибок, поэтому во многих случаях лучше, если сложные решения будут приниматься коллегиально.
Отдельно хочу отметить ещё один момент. Смена состава не означает того, что разжалованные модераторы должны подвергаться гонениям, а их мнение по любым вопросам будет отметаться с порога. Не стоит повторять старых ошибок на новый лад. Грамотность в переводе необходима, опыт, если его нет, рано или поздно придёт, но конструктивизм тоже важен. Даже самый опытный переводчик не застрахован от ошибок, поэтому ещё раз хочу пожелать рассудительного подхода к делу. В новом составе модераторов есть люди с различным мнением по разным вопросам, поэтому хочу пожелать всем постараться сделать так, чтобы разница во взглядах не вела к конфликтам, но помогала сформировать более полное и разностороннее мнение.
Проблема с уведомлениями по e-mail
Здравствуйте!
Есть техническая проблема с уведомлениями по e-mail, приходящими от имени домена notabenoid.com. Они приходят с битыми заголовками, в результате письма в почтовом клиенте (Thunderbird) нечитабельны до тех пор, пока не исправишь заголовок письма вручную. Проблема заключается в строках 'Subject:' и 'From:' заголовков; данные, содержащиеся в этих строках, бьются на две или несколько строк. Если выгрузить письмо в файл и вручную отредактирвать его заголовок, убрав CR/LF в упомянутых строках, письмо без проблем открывается.
Это только я один такой невезучий, или это общая проблема?
Есть техническая проблема с уведомлениями по e-mail, приходящими от имени домена notabenoid.com. Они приходят с битыми заголовками, в результате письма в почтовом клиенте (Thunderbird) нечитабельны до тех пор, пока не исправишь заголовок письма вручную. Проблема заключается в строках 'Subject:' и 'From:' заголовков; данные, содержащиеся в этих строках, бьются на две или несколько строк. Если выгрузить письмо в файл и вручную отредактирвать его заголовок, убрав CR/LF в упомянутых строках, письмо без проблем открывается.
Это только я один такой невезучий, или это общая проблема?
Проблема с комментариями.
Добрый день. Есть техническая проблема.
Присоединился к группе перевода, на проекте стоят права «комментировать» и «комментировать в блоге» для членов группы. Однако ни та, ни другая функция мне по непонятной причине недоступна. В блоге проекта у меня вообще нижней строкой после всех комментариев к постам стоит «Вы не можете писать комментарии в блоге этого перевода».
Куки стирал, не помогло. Пробовал два браузера — Chrome и IE9 — с одинаковым результатом.
Присоединился к группе перевода, на проекте стоят права «комментировать» и «комментировать в блоге» для членов группы. Однако ни та, ни другая функция мне по непонятной причине недоступна. В блоге проекта у меня вообще нижней строкой после всех комментариев к постам стоит «Вы не можете писать комментарии в блоге этого перевода».
Куки стирал, не помогло. Пробовал два браузера — Chrome и IE9 — с одинаковым результатом.
Резюме
- Пол:
- мужчина
- Родной язык:
- русский
- С нами:
-
с 17 января 2013 г.
(5020 дней)
Не является членом клуба. - Деятельность:
-
2024 версии перевода
с общим рейтингом 179
523 комментария
Карма: −1 (оценок: 1)
