3.3.1. О Dreamcast и его ограничении на место.
3.3.1.1. «Малкавианин».
3.3.2. О злоключениях до обнаружения PVMEditSharp.
3.3.3. Радость после, но…
3.4.1. О Gamecube-версии.
3.4.2. Об исправлении SA2.
3.5. Про версии для Xbox 360 и PS3.
3.5.1. Xbox 360-версия.
3.5.2. PS3-версия.
3.5.3. Баг в переиздании с новым меню.
Продолжаем говорить о переводе Sonic Adventure. Первую часть можно найти здесь.
3.3.1. О Dreamcast и его ограничении на место.
Как я уже говорил выше, файлы Dreamcast были тщательно очищены от всех архивов и текстур, которые не относятся к переводу. Удалены все текстуры японских заданий и загрузочных экранов, некоторые файлы TGS-билда, а также часть BIN-файлов с текстом. Но главная проблема заключалась, как выяснилось, совершенно в другом. Дело в том, что Dreamcast… до жути прихотлив на текст. Возьмём, к примеру, всё тот же сад Чао. У нас есть пара сообщений. Шрифт один, текст по количеству символов совпадает, но вот незадача… В одном сообщении всё хорошо, а в другом – происходит какая-то чертовщина. Краткий тест показал, что у каждого сообщения свой лимит на символы. Причём настолько зарытый в коде игры, что наш хакер сразу сказал: «Режьте фразы«. Ничего другого нам не оставалось. Вооружившись пилой, я и наша японистка Софья порезали сад Чао до отображаемого состояния, но при этом сохранив смысл и отличия японского оригинала. Впрочем, схожая подстава ожидала нас буквально везде. Оттого тестирование игры проходило в несколько этапов с целью выявить все проблемные строчки, сократить их и проверить снова. Самое противное, что в PC-версии с модами такой проблемы не возникает и она позволяет вставить полный вариант. Тяжёлым решением было отказаться от этого в угоду равенства всех версий. Ограничение не думало отставать и преследовало нас в версиях для PS3/X360, что слегка облегчало отлавливание косяков с отображением, поскольку выявленный косяк на одной платформе автоматически исправляется сразу на четырёх.
3.3.1.2. «Малкавианин».
Тут бы хотелось немного отвлечься и рассказать о таинственном NPC. Вы можете найти его у основания станции в Мистических руинах. По какой-то причине этот «малкавианин» любил спойлерить сюжетные события (прозван был под впечатлением от Vampire The Masquerade: Bloodlines). Дебаг (процесс отлова различных ошибок с помощью просмотра памяти) хакера показал, что это неисправность игры. Эту же информацию нам подтвердили моддеры. Однако по каким-то причинам баг исчезал, если в Dreamcast-версию вставить файлы жителей из PC. Да, мы тоже не понимаем, как это работает, но работает же!
3.3.2. О злоключениях до обнаружения PVMEditSharp.
С текстовой частью мы уяснили: режем, кромсаем, но сохраняем смысл. А что там насчёт текстур? Вот тут ещё веселее, но для начала я хочу провести небольшой ликбез на тему форматов хранения графики. Знакомьтесь – PVM-архив. Как я уже отметил выше, это специальный формат хранения, разработанный SEGA для своей консоли Dreamcast. Формат достаточно неприхотлив, поэтому его использовали и после смерти консоли. Единственные две платформы, где он не применялся – Gamecube и Wii, так как там уже использовался аналог – GVM, но о нём позже. В PVM-архивах хранятся PVR-текстуры. С ними ещё веселее. Рассмотрим технические особенности PVR:
«А зачем нам всё это?» – возопите вы. Просто для общего развития, поскольку достаточно иметь PVRViewer, который позволяет спокойно конвертировать через Puyo Tools (программа для работы с форматами SEGA). Жалею, что нет аналога PVRViewer для GVR, поскольку именно из-за него мне пришлось изучать как PVR, так и GVR. И если бы проблема была только в том, чтобы конвертировать текстуры с правильным значением, вы бы этих строк не видели. Проблема в следующем…
Да, в PVM идёт определённый порядок файлов. С определёнными ID (идентификационным значением). И нужно собирать в том же порядке, а иначе…
Иначе вы можете забыть про полтора часа сборки и начать заново. Одна ошибка – привет-пока. К счастью, высшие силы таки дали мне наводку на программу под названием…
3.3.3. Радость после, но…
PVMEditSharp. Данная программа позволяла максимально быстро заменить все необходимые текстуры в архиве без процесса распаковки/запаковки, сохраняя нужные значения.
И вы не представляете, насколько это ускорило дело. В то время как раньше я пересобирал архив по несколько раз из-за ошибок по часу-полтора, то теперь весь процесс занимал минуты две. Что хорошо, он умеет работать и с архивами GVM. Казалось бы, что теперь все проблемы решены, однако PVMEditSharp имеет один изъян – сохраняет текстуры не так, как это нужно игре. Точнее, текстуры игра видит, отображает, но не всегда успешно (например, HIT при прохождении Гаммой).
А если вы вставите текстуру через PVMEditSharp, то увидите вот это:
Мы-ы-ы-ы… так и не поняли, почему данный баг возникает, но он возникал. А пока додумались, что именно из-за этого файла всё идет по одному месту… Я успел раз 20 пересобрать бедный образ для Dreamcast. По итогу пришлось конкретно эту текстуру конвертировать руками через Puyo Tools и вставлять её HEX-редактором (заменять таким образом весь архив целиком я бы не вынес). Впрочем, одной проблемой меньше. Переходим к следующему пункту.
3.4.1. О Gamecube-версии.
Gamecube-версия перевода «Sonic Adventure» доставила максимум проблем как хакеру, так и нам. Хакер столкнулся с трудностями в процессе дебага по случаю выявления уникального сжатия. Также возникала заминка с размещением текста, из-за чего приходилось выделять под него несколько блоков вместо одного. Технических подробностей не будет, так как RikuKH3 не любит распространяться по их поводу. Единственное, что можем сказать, после «восторженных» возгласов моддерского коммьюнити — он полностью удалил систему шифрования и теперь игра может принимать файлы без необходимости их заново шифровать.
Зато у нас их полно. Начнём с того, что это самая капризная версия по части файлов с текстурами. Они будут хуже качеством в тех местах, где игра виснет и не может «прожевать» такой архив. Для примера, приведу меню «Результаты заданий». Изначально там был «тяжёлый» вариант архива, и он даже работал, но… Посмотрите, что высвечивалось при вхождении в меню Бигом:
Пришлось «облегчать» архив, после чего всё приходило в норму:
Что удивительно, несжатые архивы спокойно загружаются на Xbox 360/PS3. И даже на Dreamcast текстуры выше качеством, а вот версия для Gamecube не вывозит.
Из забавного могу отметить, что GC – переходное звено между Dreamcast и PC/X360/PS3 по части структуры файлов. Например, GC использует внешние файлы для хранения текста роликов и менюшек, как на Dreamcast, тогда как в следующих версиях всё засунут в исполняемый файл. Также отличаются архивы с текстурами для титульного экрана. Если на Gamecube используется спрайт Соника, поделённый на четыре текстуры, то вот на PC таких текстур…
Самое смешное, что в прототипной версии для Gamecube используется третий метод хранения данного спрайта:
К слову, с этого самого прототипа до поздних версий дожила занятная вещь: вы можете переименовать одну текстуру и вместить в неё полновесный спрайт, а все остальные превратить в пустышки. Почему-то это работает.
3.4.2. Об исправлении SA2.
После того, как первые сборы на версию GC провалились, я начал изучать её по части текстур. Даже успешно вставил руками одну на титульном экране.
Тогда-то в голове щёлкнуло, что у наших коллег по цеху в своё время была одна неприятная проблема с Sonic Adventure 2 на этой же платформе – всё зависало при попытке сменить оформление меню настроек. Заинтересовавшись, я решил посмотреть текстуры «Sonic Adventure 2«, после чего выявил корень зла в странном файлике с необычным заголовком.
Как результат, после ручного обработки файла всё работает замечательно.
Когда я спросил хакера, который ломал для другой команды игру, то выяснилось, что… к нему просто не обратились! Nuff said.
Если вам кажется, что этот пункт был расписан лишь затем, чтобы пошутить над нашими коллегами, то нет. Тут принцип «Не совершай чужих ошибок«, поскольку нам попалась одна такая текстура при переводе. Закралась она в меню игр Game Gear и без ручного исправления давала вот такой эффект:
Почему это происходило? Всё просто. Ни самописная программа для формата GVR, ни Puyo Tools не могли правильно сконвертировать текстуру, из-за чего происходил баг. Взгляните на скриншот:
Видите странность? Естественно нет, поэтому держите скрин с оригинальной текстурой:
Мы можем наблюдать, как целая область неправильно заполнена при конвертации. Судя по документации к GVR-формату, это некие CLUT-данные. Вот уж не знаю, почему они так важны, но если их исправить вручную, то всё сразу приходит в норму.
3.5. Про версии для Xbox 360 и PS3.
Стоит обозначить сразу, что для данных версий основой служит PC 2004-го года. И тут, наверное, стоит загрузить вас юмора ради, сказав, что PC 2011-го года является портом Xbox 360 2010-го года, которая является портом PC 2004-года, которая является портом Gamecube-версии, которая является портом с Dreamcast. А теперь прокручивайте эту цепочку от Dreamcast до ПК и держите в голове, что с каждой версией они что-то да ухудшали. Уже представили масштаб трагедии? Ну так вот, в играх для Xbox 360/PS3 не смогли реализовать нормальное разрешение 16:9, в результате чего игра идёт с отвратительной рамкой. Плюс в этих версиях были вырезаны игры c Game Gear (хоть их файлы и лежат до сих пор в дистрибутиве игры), а Метал Соник и режим заданий отправились в отдельное DLC под названием… Sonic Adventure DX. Это звучит максимально абсурдно, так как по факту без этого DLC у вас будет обычная DX-версия, но с изменённым меню и без Метала с заданиями. Самое смешное, что все необходимые файлы для данного DLC лежат в обычной версии, и при его покупке вы просто активируете контент.
Небольшой оффтоп: меня позабавило то, как включается и выключается DX-режим на PS3. В папке с игрой лежат два EDAT-файла с названиями SonicAdv и SonicAdvDX. Первый есть изначально, а второй появляется после установки DLC. Вот только ничто не мешает вам (если только вы, конечно, не сидите без CFW) взять SonicAdvDX и переименовать его как-нибудь. Магия! Игра сразу превращается в версию без DLC.
Но вот мы подобрались к вишенке. Что же хранят в себе эти EDAT-файлы? Не буду долго томить – вот это. И да, я сам не знаю, что это. Даже пробовал искать информацию, но ничего такого не нашёл.
Но… Мы же пришли смотреть внутренности, да? Приступим.
3.5.1. Xbox 360-версия.
Про текст данной версии не имеет смысла говорить, поскольку он всё так же хранится в исполняемом файле, как и на PC 2004, но! Помимо текста он содержит в своём xex-файле (аналог exe-файла на Xbox 360) и стартовые текстуры.
Сказать, что я не был удивлён, – ничего не сказать. Ибо зачем тогда хранить эти текстуры в дистрибутиве игры?
Пришлось по такому поводу выискивать все точные адреса текстур (в формате DDS).
К слову, об этом. Ещё одно отличие портов для PS3/X360 – использование DDS-текстур. С их помощью выводятся «старые-новые» надписи в различных меню и на паузе. Однако, после небольшого изучения, выяснилось следующее: изначально разработчики порта пытались сделать эти надписи посредством PVR-текстур в PVM-архиве ava_tooltips.
Особенно забавно это смотрится на фоне мытарств с меню «Руководство». Да, в финальной версии всё устроено, как и десяток лет назад – архивы TUTO. Но! Ещё в бета-версии за январь 2010-го для этого меню использовались… всё те же DDS-текстуры!
Так даже удобнее. В какой-то мере… Составить текстуру из элементов легко, и ты точно будешь знать, что всё стоит ровно. Но в финальной версии разработчики откатились обратно к PVM-архивам. И это странно. Как и то, что начудили в PS3-версии, но о ней позже.
Смущает факт, что они создали новые архивы для тех языков, которые уже присутствовали в оригинальной версии. Просто напомню, что по факту в игре всего два языка для меню – японский и английский. Французский, итальянский и немецкий остались не удел. И мастера порта пытались исправить эту ситуацию!
Но по какой-то причине эти языки не используются, и почему архивы до сих пор хранятся – непонятно. Туда же и надписи «Сreate new file«. ОНИ ТОЖЕ НЕ ИСПОЛЬЗУЮТСЯ! Но самый маразм, что японская и английская версии до сих пор используют ABC_TXT.PVR, а вот новые текстуры – уже DDS-формат. Так может и английский с японским запихнуть в DDS? Разработчики, что с вами не так?
Возвращаясь к бета-версии за январь. Помимо вырвиглазного титульного экрана…
…я заметил ещё одну особенность – совершенно другую рамку.
Она выглядит намного приятней и не настолько давит своей тёмной гаммой. Как можно было испортить её в финальной версии? Да запросто! Просто растянуть оригинальную рамку из бета-версии и накинуть затемнение.
Это уже полный маразм! Хотя вот товарищ N69 (который периодически помогает с ежиными проектами) подметил, что с финальной рамкой меньше шансов выжечь телевизор. В таких тонкостях я совершенно не мастак, поэтому идём дальше – к PS3-версии.
3.5.2. PS3-версия.
Вспоминая опыт с «Sonic The Hedgehog 2006«, ожидались как минимум незначительные отличия. И поначалу казалось, что отличий почти нет. Переделать пару текстур, текст адаптировать под кнопки PS3. В итоге вышло и да, и нет одновременно. В паре архивов присутствовали моменты, когда нужно было заменить пару текстур, но стоило дойти до обучения и, внезапно, карт – я потерял дар речи.
Начнём с карт, так как это не самое болезненное. Видите ли… Кому-то из разработчиков пришла в голову гениальная идея сделать по две вариации архивов с картами. С кнопкой Х и кнопкой О, отвечающей за возвращение. С учётом того, что в игре совершенно точно есть поддержка DDS-текстур, не проще ли сделать переключаемые DDS, чтобы не занимать место? По итогу приходилось для каждой карты клепать по две вариации, так как просто заменить одну клеточку нельзя было. Обязательно две, потому что они даже не «синхронизировали» положение кнопок на карте (О нарисована чуть-чуть правее, чем Х).
Переварив всё это, я отправился смотреть «А что там с обучением?«. В общем, на PS3 текстуры с обучением устроились почему-то не в PVM-архиве, а в обычных папках.
«Какая халява«, — подумал я и принялся конвертировать лежащие в открытом доступе PVR текстуры при помощи Puyo Tools. Думаю, если б программы умели разговаривать, то она бы обозвала меня поехавшим. Но нет, она скромно промолчала и отказалась конвертировать. После третьей попытки я начал просматривать эти текстуры через HEX-редактор. Вот тут очень кстати фраза: «Нет слов, одни эмоции».
Бва-ха-ха-ха-ха-ха-ха-ха-ха-ха-ха-ха-ха-ха-ха-ха-ха-ха-ха-ха-ха-ха-ха-ха-ха-ха-ха-ха-ха-х… Кхе-хе…
Они серьёзно? Они на полном серьёзе взяли и собрали текстуры в PNG, а потом переименовали их в PVR? Простите, простите… Я смеялся и плакал одновременно в этот момент, поскольку просто не мог поверить. Когда же наконец отошёл от смеха, то начал переводить эти PNG-файлы. Этот метод был даже удобней того, что я описывал выше, в разделе про Xbox 360, поскольку не нужно волноваться о других элементах. Просто грамотно сделай текст.
Больше отличий особо не заметил. Единственное что – пропала текстура «Идёт загрузка«, так как этот текст выводится при помощи средств XMB (да и в целом PS3-версия всё же шустрее, чем Xbox 360).
3.5.3. Баг в новом меню.
Fun Fact. Если кто играл в новые переиздания, то вы могли заметить новое меню, из которого можно прочитать обучение на того или иного персонажа. Так вот, я не знаю, как разработчики сломали и его до кучи, но, прочитав обучение в этом меню, на экране выбора файла вы заметите, что теперь в последний раз играли за того, чьё руководство прочли. Видимо, делали совсем на отвали.
На этом у меня всё. Осталась последняя, заключительная часть, где мы основательно поговорим о тексте. Спасибо, что продолжаете читать!