Отчёт о работе над переводом School Days
Главная проблема Школьных дней заключается отнюдь не в японском языке. Вся сложно в том что сотрудники фирмы Overflow очень плохие программисты. Они замечательные художники, прекрасные сценаристы, замечательные постановщики сцен, а озвучка просто гениальная. Но вот программисты отвратительные.
- сказал Великий Программист. Он подошел к зеркалу, проверил, не просвечивает ли где его панический синдром, посмотрел в сторону голодающей собаки ("Да, хозяин, только дай еще косточку!" - радостно молил ее голодный взгляд) и двинулся обратно к кафедре. "Нелегко же выдавать себя за того, кем я на самом деле не являюсь..." - звенело тревожной дробью у него в глове.
По сути визуальная новелла представляет собой набор звука, анимаций и статических изображений. Наверное логично предположить что анимации должны представлять собой видеофайлы, а картинки это Jpg, или PNG. - а про себя подумал: "Стоп, Антошка, что ты несешь?! Остановись, отверни лицо от мегафона!.. Набор одного звука? Анимации - всегда должны быть видеофайлами? Картинки - это Jpg, или PNG? Кому я стараюсь что впарить? Любой, даже самый хиленький настоящий программист легко утрет мне нос кодировкой файлов и системами сжатия!.. Не стоит так подставляться под аудиторию, все-таки, меня смотрят люди, десятки тысяч их!". Пот крупными каплями выступил на лбу. Великий Программист поморщился, словно почесывая нос. "Нелегко!.."
Плюс нужен движок и скриптовый язык который бы собирал все это воедино превращая графику видео и звуковые файлы в цельную историю. - сказал он. Посмотрет на публику: она ждала продолжения. "Интересно, я все правильно пересказал?.. Вроде, мне так написали..." Великий Программист быстро пробежался взглядом по листку: "Распечатанная личная переписка, правок нет - значит, все верно."
Поскольку над таким проектом обычно работает целая студия с десятком художников и аниматоров, - медленно продолжил он. - очень важно чётко распределить обязанности и тем кто над какими сценами работает. - "Пока что идет все по плану", - Великий Программист изо всех сил старался, чтобы его мысли не вырвались в рупор мегафона. Подушечки пальцев взмокли, а язык пересох: в звуках речи начали проскальзывать хитрые свистящие нотки.
Вот тут у Oveflow вышла засада. - "Сейчас я вам покажу, что я лучше всех знаю, как надо делать игры!" - Игра представляет собой около 10000 файлов рассортированных по папкам на первый взгляд без всякой видимой системы. Дальше больше до версии 1.1 игра вообще не поддерживала субтитры и соответственно речь о переводе практически не шла. - Легкий отсыл к истории всегда помогает выглядеть умнее в глазах публики, и Великий Программист это прекрасно понимал.
Однако отвечая на просьбы пользователей поддержка японских субтитров, наконец, появилась. - у говорящего резко пересохло в горле. "Мать моя женщина! Надеюсь, здесь никто не говорит на русском языке?" - пронеслась у него в голове дикая нотка. После себя она оставила слишком заметный след истерики на лице. Великий Программист отвернулся, чтобы еще раз посмотреть на себя в зеркало. Ему показалось, что на него смотрит розовощекий круглый бизнесмен, слегка неряшливый в своем творческом беспорядке. Самодовольная ухмылка кричала: "Я - Лучший!", рыльце было горделиво вздернуто вверх, на лбу светились тиснением буквы iPh__e3GS.
Другая забавная штука заключается в том, что игра очень странно работает под не японской Windows. - "Интересно, меня сейчас принимают как специалиста по операционным системам? А ведь я даже не знаю, чем они отличаются!.. Боже, надеюсь, никто не спросит..."
Но это ещё не самое плохое, для того чтобы перевести игру мало добавить поддержку русского языка и перевести скрипты. Дело в том, что игра изобилует сюжетным текстом прямо в самом видеокадре. - "Боги низкоуровнего программирования, не казните меня! Позвольте я договорю свой текст!.. Мне бы только поумнее выглядеть!.. Я искренне надеюсь, что провидение не прислало сегодня в аудиторию программиста, который сидит сейчас и смеется с моих фраз о "тексте в видеокадре"!" Великий Программист перемял листок в руках, быстро скользнул взглядом по собравшимся: нет, никто не перешептывается, смешков и не слышно. На задних рядах кто-то сидит с ехидной улыбкой... Великий Программист заметно заволновался.
Во-первых это общение на уроках посредством записей в тетрадке, во вторых это всевозможные сотовые телефоны, экраны компьютеров и так далее. Все это играет важную роль для сюжета поэтому о том что перевести игру только путём перевода субтитров не может быть и речи. - "Интересно, они уже забыли про текст в видеокадре? Слишком рано, надо попробовать переключить внимание на "неожиданный поворот дела"!"
Теперь мы сталкиваемся с другой проблемой. Наряду с wmv, wma, jpg и png игра использует свой собственный формат CGS причём CGS файлы бывают двух типов тип первый отвечает за движение губ а его воспроизведение регулируется пиками громкости в звуковом файле. - Великий Программист добавил "Это я сам понял!", но кто-то в это время бурно закашлялся перед кафедрой, и фраза утонула в шуме. Истерично пытаясб перекричать кашель, Великий Программист повысил голос, но шум оборвался так же резко, как и начался, поэтому аудитория услышала только визгливое "...ЯЛ!!!". "Нет, только не сейчас!" - оратор стал бросать испуганные взгляды на собравшихся. К счастью для него, никто не решился прерывать монолог.
Второй подвид CGS[/b], - медленно начал говорящий. - [b]это полноценная анимация по типу анимированных GIF но с использованием PNG. - "Надеюсь, никто здесь не знает о формате APNG", - пронеслось молнией у него в голове. Но он не останавливаясь продолжал:
За два месяца работы в первую очередь благодаря огромной работае Vendor из Honyaku-Subs и информации от Sekai Team нам удалось расковырять архивы игры, разобраться с форматом скриптов и даже научиться разбирать CGS файлы на составляющие. - "Нам! НАМ! Я не забыл себя влепить в анналы истории, хотя не принимал в этом никакого участия!"
Я выполнил первод первх трёх глав и казалось всё шло к тому что нужно делать первый демо релиз. - "Следующую строчку лучше не озвучивать: "Ведь я обещал всем, что еще пара дней, и они получат полноценную демку!"
А вот тут мы наткнулись на то что игра ужасно глючит и отказывается сообщать хоть какую то Debug информацию. - "Господи, ну пускай меня считают умным!.. Пускай никто не знает, что дот-нет код, будучи скомпилированным с определенным release-набором условий компиляции, не содержит в себе информацию для дебага! Пускай все думают, что это там, в Японии, такие тупые программисты, но только не я! Господи, пожалуйста!.."
Не говоря уже о том что поиск файлов которым необходим перевод перваращается в блуждания по лабиринтам под названием структура папок архивов школьных дней. - "Я не знаю, правильно ли раставил смысловые ударения, потому что утром мой Алтарь голосом меня приказал мне никогда не ставить каких бы то ни было знаков препинания!" Великий Программист взмок, верхняя губа начала дергаться, на кафедру начали капать шарики непрекращающегося пота.
Логика этого лабиринта очень интересная и не всегда совпадает со здравым смыслом так например файлы второй главы очень лихо лежат в папке с первой. Ну и потом отсуствие вменяемых названий тоже работу не упрощает. А поскольку в игре несколько сотен сюжетных, - "Я не понимаю, что я несу! О, Гораций! Пускай этого тоже никто не понимает! Дай мне возможность сказать только пару финальных слов, чтобы они отложились в головах слушающих!" - развило, - "Развило? Кто кого куда развило? Неважно, главное, тараторить и не останавливаться, Антон Ленников, ты же знаешь!" - быстрее света мелькали в голове Великого Программиста его мысли. - и 21 концовка поиск багов в таком лабиринте превращается в ещё более увлекательную задачу. А даже если баг и найден то игра вылетает абсолютно без какой либои информации о природе ошибки, это баг скрипта или графического файла? Если скрипта то какого? Место вылета совершенно не обязательно показывает место ошибки, потому что игра загружает 3-5 файлов со скриптом наперёд. Причём ошибка может быть совсем не очивидной с точки зрения кода например лишний пробел в конце фразы вполне достаточный повод для того чтобы зависнуть наглухо. - Великий Программист устало выдохнул оставшийся воздух. Скороговорка, отнявшая чуть больше сил, чем он ожидал, пролетела мимо сознания слушателей. Они молча смотрели на него, некторые старались конспектировать, некоторые - откровенно спали, привалившись на соседа.
В результате всего вышеперечисленного мы поняли что без радикальных мер мы моджет и сможем перевести скрипты и графику игры, но не сможем довести это все до работоспособного продукта. Поэтому было принято решение создать собственный движок, а для того чтобы избавиться от тысяч файлов подчинённых какой-то внеземной логикой мы просто сняли видеосигнал с каждой игровой сцены превратив десятки тысяч разрозненных файлов. - "Странно, почему точка-то?.. А, Алтарь, орфография..." - В приблизительно 500 видеороликов со звуком, всё что теперь осталось это закончить игровой движок который воссоздаст связи между роликами и ключевые сцены выбора. - "Все, слава богу, произошло!" - Великий Программист в мыслях поздравил себя с успешным принятием самого себя в ряды Великих Программистов и геймдевелоперов.
Кстати благодаря этому подходу игру очень легко будет портировать на любую другую платформу в том числе на Linux, Mac и мобильные устройства. - "Хотя платформа дотнет поддерживается не всеми в полной мере, но главное - это вылить! Крикнуть! Дать! Блеснуть! Я - Мастер оф сегодняшняя серемони! Я повелеваю их умами!" - с лица Великого Программиста отделилась последняя крупная капля пота.
Мы вряд ли будем этим заниматься но поскольку исходные коды движка и структура видеофайлов будут опубликованы в открытом доступе уверен найдутся желающие это сделать. По не совсем понятным причинам в сети ходили слухи что перевод будет распространяться на платной основе повторюсь это не более чем слухе. - "Пожалуйста, Антон Ленников, не смотри тупым взглядом на неправильный текст, пипл хавает - надо быстрее скармливать!"
Используя данный подход мы возможно сможем значительно упростить портирование и перевод визуальных навел использующих закрытые движки или сложное шифрование архивов. - "Хотя при чем здесь сложное шифрование архивов? Мне недоступен даже 8-битовый код md!"
Правда вам при этом придётся смириться, что это будут всё таки чуть-чуть другие визуальные новеллы, с тем же самым сюжетом но немного другим интерфейсом. Увидеть новый движок в действии можно будет к концу марта вместе с переводом первой главы Школьных Дней. - "А теперь кланяйся и бегом отсюда, пока транскрипт твоей речи не попал на глаза понимающему человеку!"
Великий Программист в полной тишине начал пятиться к выходу.
- сказал Великий Программист. Он подошел к зеркалу, проверил, не просвечивает ли где его панический синдром, посмотрел в сторону голодающей собаки ("Да, хозяин, только дай еще косточку!" - радостно молил ее голодный взгляд) и двинулся обратно к кафедре. "Нелегко же выдавать себя за того, кем я на самом деле не являюсь..." - звенело тревожной дробью у него в глове.
По сути визуальная новелла представляет собой набор звука, анимаций и статических изображений. Наверное логично предположить что анимации должны представлять собой видеофайлы, а картинки это Jpg, или PNG. - а про себя подумал: "Стоп, Антошка, что ты несешь?! Остановись, отверни лицо от мегафона!.. Набор одного звука? Анимации - всегда должны быть видеофайлами? Картинки - это Jpg, или PNG? Кому я стараюсь что впарить? Любой, даже самый хиленький настоящий программист легко утрет мне нос кодировкой файлов и системами сжатия!.. Не стоит так подставляться под аудиторию, все-таки, меня смотрят люди, десятки тысяч их!". Пот крупными каплями выступил на лбу. Великий Программист поморщился, словно почесывая нос. "Нелегко!.."
Плюс нужен движок и скриптовый язык который бы собирал все это воедино превращая графику видео и звуковые файлы в цельную историю. - сказал он. Посмотрет на публику: она ждала продолжения. "Интересно, я все правильно пересказал?.. Вроде, мне так написали..." Великий Программист быстро пробежался взглядом по листку: "Распечатанная личная переписка, правок нет - значит, все верно."
Поскольку над таким проектом обычно работает целая студия с десятком художников и аниматоров, - медленно продолжил он. - очень важно чётко распределить обязанности и тем кто над какими сценами работает. - "Пока что идет все по плану", - Великий Программист изо всех сил старался, чтобы его мысли не вырвались в рупор мегафона. Подушечки пальцев взмокли, а язык пересох: в звуках речи начали проскальзывать хитрые свистящие нотки.
Вот тут у Oveflow вышла засада. - "Сейчас я вам покажу, что я лучше всех знаю, как надо делать игры!" - Игра представляет собой около 10000 файлов рассортированных по папкам на первый взгляд без всякой видимой системы. Дальше больше до версии 1.1 игра вообще не поддерживала субтитры и соответственно речь о переводе практически не шла. - Легкий отсыл к истории всегда помогает выглядеть умнее в глазах публики, и Великий Программист это прекрасно понимал.
Однако отвечая на просьбы пользователей поддержка японских субтитров, наконец, появилась. - у говорящего резко пересохло в горле. "Мать моя женщина! Надеюсь, здесь никто не говорит на русском языке?" - пронеслась у него в голове дикая нотка. После себя она оставила слишком заметный след истерики на лице. Великий Программист отвернулся, чтобы еще раз посмотреть на себя в зеркало. Ему показалось, что на него смотрит розовощекий круглый бизнесмен, слегка неряшливый в своем творческом беспорядке. Самодовольная ухмылка кричала: "Я - Лучший!", рыльце было горделиво вздернуто вверх, на лбу светились тиснением буквы iPh__e3GS.
Другая забавная штука заключается в том, что игра очень странно работает под не японской Windows. - "Интересно, меня сейчас принимают как специалиста по операционным системам? А ведь я даже не знаю, чем они отличаются!.. Боже, надеюсь, никто не спросит..."
Но это ещё не самое плохое, для того чтобы перевести игру мало добавить поддержку русского языка и перевести скрипты. Дело в том, что игра изобилует сюжетным текстом прямо в самом видеокадре. - "Боги низкоуровнего программирования, не казните меня! Позвольте я договорю свой текст!.. Мне бы только поумнее выглядеть!.. Я искренне надеюсь, что провидение не прислало сегодня в аудиторию программиста, который сидит сейчас и смеется с моих фраз о "тексте в видеокадре"!" Великий Программист перемял листок в руках, быстро скользнул взглядом по собравшимся: нет, никто не перешептывается, смешков и не слышно. На задних рядах кто-то сидит с ехидной улыбкой... Великий Программист заметно заволновался.
Во-первых это общение на уроках посредством записей в тетрадке, во вторых это всевозможные сотовые телефоны, экраны компьютеров и так далее. Все это играет важную роль для сюжета поэтому о том что перевести игру только путём перевода субтитров не может быть и речи. - "Интересно, они уже забыли про текст в видеокадре? Слишком рано, надо попробовать переключить внимание на "неожиданный поворот дела"!"
Теперь мы сталкиваемся с другой проблемой. Наряду с wmv, wma, jpg и png игра использует свой собственный формат CGS причём CGS файлы бывают двух типов тип первый отвечает за движение губ а его воспроизведение регулируется пиками громкости в звуковом файле. - Великий Программист добавил "Это я сам понял!", но кто-то в это время бурно закашлялся перед кафедрой, и фраза утонула в шуме. Истерично пытаясб перекричать кашель, Великий Программист повысил голос, но шум оборвался так же резко, как и начался, поэтому аудитория услышала только визгливое "...ЯЛ!!!". "Нет, только не сейчас!" - оратор стал бросать испуганные взгляды на собравшихся. К счастью для него, никто не решился прерывать монолог.
Второй подвид CGS[/b], - медленно начал говорящий. - [b]это полноценная анимация по типу анимированных GIF но с использованием PNG. - "Надеюсь, никто здесь не знает о формате APNG", - пронеслось молнией у него в голове. Но он не останавливаясь продолжал:
За два месяца работы в первую очередь благодаря огромной работае Vendor из Honyaku-Subs и информации от Sekai Team нам удалось расковырять архивы игры, разобраться с форматом скриптов и даже научиться разбирать CGS файлы на составляющие. - "Нам! НАМ! Я не забыл себя влепить в анналы истории, хотя не принимал в этом никакого участия!"
Я выполнил первод первх трёх глав и казалось всё шло к тому что нужно делать первый демо релиз. - "Следующую строчку лучше не озвучивать: "Ведь я обещал всем, что еще пара дней, и они получат полноценную демку!"
А вот тут мы наткнулись на то что игра ужасно глючит и отказывается сообщать хоть какую то Debug информацию. - "Господи, ну пускай меня считают умным!.. Пускай никто не знает, что дот-нет код, будучи скомпилированным с определенным release-набором условий компиляции, не содержит в себе информацию для дебага! Пускай все думают, что это там, в Японии, такие тупые программисты, но только не я! Господи, пожалуйста!.."
Не говоря уже о том что поиск файлов которым необходим перевод перваращается в блуждания по лабиринтам под названием структура папок архивов школьных дней. - "Я не знаю, правильно ли раставил смысловые ударения, потому что утром мой Алтарь голосом меня приказал мне никогда не ставить каких бы то ни было знаков препинания!" Великий Программист взмок, верхняя губа начала дергаться, на кафедру начали капать шарики непрекращающегося пота.
Логика этого лабиринта очень интересная и не всегда совпадает со здравым смыслом так например файлы второй главы очень лихо лежат в папке с первой. Ну и потом отсуствие вменяемых названий тоже работу не упрощает. А поскольку в игре несколько сотен сюжетных, - "Я не понимаю, что я несу! О, Гораций! Пускай этого тоже никто не понимает! Дай мне возможность сказать только пару финальных слов, чтобы они отложились в головах слушающих!" - развило, - "Развило? Кто кого куда развило? Неважно, главное, тараторить и не останавливаться, Антон Ленников, ты же знаешь!" - быстрее света мелькали в голове Великого Программиста его мысли. - и 21 концовка поиск багов в таком лабиринте превращается в ещё более увлекательную задачу. А даже если баг и найден то игра вылетает абсолютно без какой либои информации о природе ошибки, это баг скрипта или графического файла? Если скрипта то какого? Место вылета совершенно не обязательно показывает место ошибки, потому что игра загружает 3-5 файлов со скриптом наперёд. Причём ошибка может быть совсем не очивидной с точки зрения кода например лишний пробел в конце фразы вполне достаточный повод для того чтобы зависнуть наглухо. - Великий Программист устало выдохнул оставшийся воздух. Скороговорка, отнявшая чуть больше сил, чем он ожидал, пролетела мимо сознания слушателей. Они молча смотрели на него, некторые старались конспектировать, некоторые - откровенно спали, привалившись на соседа.
В результате всего вышеперечисленного мы поняли что без радикальных мер мы моджет и сможем перевести скрипты и графику игры, но не сможем довести это все до работоспособного продукта. Поэтому было принято решение создать собственный движок, а для того чтобы избавиться от тысяч файлов подчинённых какой-то внеземной логикой мы просто сняли видеосигнал с каждой игровой сцены превратив десятки тысяч разрозненных файлов. - "Странно, почему точка-то?.. А, Алтарь, орфография..." - В приблизительно 500 видеороликов со звуком, всё что теперь осталось это закончить игровой движок который воссоздаст связи между роликами и ключевые сцены выбора. - "Все, слава богу, произошло!" - Великий Программист в мыслях поздравил себя с успешным принятием самого себя в ряды Великих Программистов и геймдевелоперов.
Кстати благодаря этому подходу игру очень легко будет портировать на любую другую платформу в том числе на Linux, Mac и мобильные устройства. - "Хотя платформа дотнет поддерживается не всеми в полной мере, но главное - это вылить! Крикнуть! Дать! Блеснуть! Я - Мастер оф сегодняшняя серемони! Я повелеваю их умами!" - с лица Великого Программиста отделилась последняя крупная капля пота.
Мы вряд ли будем этим заниматься но поскольку исходные коды движка и структура видеофайлов будут опубликованы в открытом доступе уверен найдутся желающие это сделать. По не совсем понятным причинам в сети ходили слухи что перевод будет распространяться на платной основе повторюсь это не более чем слухе. - "Пожалуйста, Антон Ленников, не смотри тупым взглядом на неправильный текст, пипл хавает - надо быстрее скармливать!"
Используя данный подход мы возможно сможем значительно упростить портирование и перевод визуальных навел использующих закрытые движки или сложное шифрование архивов. - "Хотя при чем здесь сложное шифрование архивов? Мне недоступен даже 8-битовый код md!"
Правда вам при этом придётся смириться, что это будут всё таки чуть-чуть другие визуальные новеллы, с тем же самым сюжетом но немного другим интерфейсом. Увидеть новый движок в действии можно будет к концу марта вместе с переводом первой главы Школьных Дней. - "А теперь кланяйся и бегом отсюда, пока транскрипт твоей речи не попал на глаза понимающему человеку!"
Великий Программист в полной тишине начал пятиться к выходу.

