Несколько недель назад у меня очень жестко стал глючить мод TextureReplacer, который стал ронять FPS до нуля каждую секунду независимо вообще ни от чего. Есть текстуры в нем, нет ли, есть ли прочие моды, переустановлена ли игра - нет, он тормозил и бесил. За это мод был наказан и изгнан подальше. Ну а на днях Major Tom спросил в чате, а можно ли впихнуть текстуры непосредственно в игру, чтобы оперативка не использовалась для хранения базовых, которые все равно не будут использованы? Я решил озаботиться этим вопросом и в конце концов он был разрешен! Итак...
Сейчас мы научимся впендюривать сторонние текстуры непосредственно в архивы игры. Естественно, мы будем ЗАМЕНЯТЬ существующие текстуры, а не добавлять новые объекты. Для этого нам понадобятся:
1)
Unity Assets Unpacker
2) Собственно текстуры на замену, например из мода
KSPRC.
3) Возможно, понадобится редактор изображений, который воспринимает файлы формата dds. Например, paint.net с необходимыми плагинами.
В качестве учебного пособия воспользуемся
текстурой Felsmak-а для Джула. Файл идет в формате png, поэтому сохраняем его в dds. Выбираем формат DXT-1 для экономии памяти с генерацией мипмапов.
Неслабый размерчик, да?
Так, теперь всё это надо проинсталлировать в игру. Запускаем свежескаченный UnityAssetsUnpacker и наблюдаем его минималистичный дизайн. Немного информации по поводу того, как информация хранися в игре.
В егре есть два типа файлов - часть хранится в папке GameData в открытом виде. Это модельки деталей, различные настройки, флажки и т.п., с чем мы работаем непосредственно в игре. А в папке KSP_Data хранится сама Вселенная игры - библиотеки юнити и ассеты со всей солнечной системой. Именно там и живут все звуки, текстуры планет и Джеба, параметры орбит и т.д. Туда мы и полезем на свой страх и риск.
Итак, смело открываем файл с названием shaderassets0.assets в папке KSP_Data нажатием на первую кнопку нашего анпакера. Наблюдаем кучу файликов разных типов. Нам нужен gas1_clouds, именно так называется текстура Джула в игре. Поиска в программе нет, поэтому ищем по старинке - упорядочивая по имени. Итак, вот оно!
Обратите внимание, нам нужна именно текстура 2D, а не материал! К сожалению, материалы я еще не научился нормально декомпилировать, так можно было бы такого наворотить с самой игрой!.. Не отвлекаемся!
Выделяем наш файл, щелкаем по третьей кнопке - импорт. Выбираем свежесохраненную текстуру Джула (кстати, ее название совершенно не важно)...
Вуаля!
А в игре...
Таким макаром мы можем улучшить все текстуры в игре и не прибегать к услугам TextureManager, который будет дольше грузиться и схавает больше памяти. Конечно, без него не будет отражений на стеклах, разных костюмчиков и прочего. Но мы (точнее вы) можете оставить его, но сначала открыть папку TextureManager/Default
И перебросить все содержимое в ассеты! Особенно это касается больших текстур, которые весят 10-40 мб, а вот от памяти откусывают гораздо больше! Сейчас я на пальцах расскажу, как насильно засунуть в КСП текстуры из самого продвинутого на сегодня мода KSPRC.
1) Все делаем, как описано выше, но текстуры уже подготовлены, так что никак их не пересохраняем и не трогаем вообще!
2) Так как мы воруем работу у мода, легко догадаться, что мы должны найти в shaderassets0.assets файлы с таким же названием и импортировать их! На всякий случай запоминаем:
moho00 карта Мохо
moho01 нормали Мохо
Eve2_00
карта Евы
Eve2_01 нормали Евы (не обнаружил нигде, Еву прячут облаками!)
evemoon100 карта Джилли
evemoon101 нормали Джилли
KerbinScaledSpace300 карта Кербина
KerbinScaledSpace401 нормали Кербина
NewMunSurfaceMapDiffuse карта Муны
NewMunSurfaceMapNormals нормали Муны
NewMunSurfaceMap00 карта Минмуса
NewMunSurfaceMap01 нормали Минмуса
Duna5_00 карта Дюны
Duna5_01 нормали Дюны
desertplanetmoon00 карта Айка
desertplanetmoon01 нормали Айка
dwarfplanet100 карта Дреса
dwarfplanet101 нормали Дреса
gas1_clouds карта Джула
cloud_normal нормали Джула (они существуют на самом деле!)
newoceanmoon00 карта Лейт
newoceanmoon01 нормали Лейт
gp1icemoon00 карта Валла
gp1icemoon01 нормали Валла
rockyMoon00 карта Тило
rockyMoon01 нормали Тило
gp1minormoon100 карта Бопа
gp1minormoon101 нормали Бопа
gp1minormoon200 карта Пола
gp1minormoon201 нормали Пола
snowydwarfplanet00 карта Илу
snowydwarfplanet01 чьи-то там нормали
В этом же ассете лежат всякие нормали голов кербалов, текстуры очков Вернера фон Кермана, флагшток и прочие мелкие детали, относящиеся к кербонавтам. Их тоже можно поменять, потому что теперь мы это можем!
В shaderassets2 лежат текстуры неба, точнее недостижимой небесной тверди, к которой прибиты разноцветные гвоздики, называемые в простонародье звездами. Называются файлы так:
GalaxyTex_PositiveX
GalaxyTex_NegativeX
GalaxyTex_PositiveY
GalaxyTex_NegativeY
GalaxyTex_PositiveZ
GalaxyTex_NegativeZ
Куда что смотрит - без понятия, но вот Y - это верх и них небесной тверди.
В shaderassets7 лежит текстура навболла.
Как можно заметить, называется он иначе, так что вопрос - меняет ли KSPRC текстуру навболла? Заметить это довольно трудно. Меняем и его, просто так.
В shaderassets9 лежит текстура солнечных бликов, но по неизвестной мне причине сменить ее нельзя, при этом блики ломаются и становятся уродливыми квадратами. Поэтому можете просто скачать этот
уже готовый файлик с бликами из
интерстеллара.
Часть деталей я не нашел, возможно, они спрятаны в файлах с расширением resS, но толком их открывать не получается.
Где-то минут за 30 вполне можно управиться, после чего выпилить совсем те текстуры, которые мы проинсталлировали в игру. Существует пара подводных камней в данном процессе, так что рассмотрим их.
1) Первая проблема заключается в том, что dds текстуры переворачиваются вертикально где-то в игре. Поэтому может так случиться, что планета будет выглядеть довольно странно.
С KSPRC таких проблем нет и все текстуры ложатся, как лыко в строку. Но в текстурах из других модов, имеющих до пересохранения формат png, может произойти переворачивание текстуры. Поэтому после вивисекции обязательно проверьте все планеты и, если что-то не так, переверните текстуру вверх ногами и проинсталлируйте заново!
2) Вторая проблема касается только KSPRC и связана она с тем, что мод в другом файле ссылается на текстуры из TextureReplacer, и если мы удалим их, то это приведет к катастрофическим для игры последствиям. Поэтому открываем файл KSPRC/KSPRC.cfg блокнотом и удаляем из него все строки для каждой планеты типа такой:
VertexColorMap
{
map = TextureReplacer/Default/evemoon100.dds
order = 9999977
}
Лентяи могут просто скачать обновленный файл по
ссылке.
Кроме всего прочего, Unpacker может вытаскивать игровые файлы из ассетов. Вообще они все имеют какие-то внутренние кодировки, но мы можем в этой программё все получить в dds-формате и импортировать в нем же обратно во внутриюнитишные файлы. А значит можно вытащить какую-нибудь текстуру ангара, в пейнте нарисовать на стене "Тут был Джеб" или еще какую похабщину, и запаковать обратно. Профит!
Ну и совсем для лентяев с достаточно быстрым интернетом можно скачать те заархивированные файлы, которые я себе уже запилил (подходит для последней версии КСП с билдом 1028, на более ранних возможны баги!)
shaderassets0 - с оттекстуренными планетами (почти 500 мб!)
shaderassets2 - с обновленным небом из мода BetterAtmosphere
shaderassets4 от Майора Тома с выпиленной огромной текстурой из титров (в КСП есть титры!)
Важно - на всякий случай скопируйте свои сейвы в надежное место перед запуском! Возможны конфликты с модами!
Такие вот пироги! Благодарите теперь
Майора Тома, без него бы КСП ассеты сохранили бы свою девственность!