Перейти к содержимому






- - - - -

CKM, или Creation Kit Mod

Написано CrazyHackGUT, в Creation Kit, Форматы файлов 07 января 2019 · 1 067 просмотры

skyrim creation kit creation kit mod ckm c#
CKM, или (возможная расшифровка) Creation Kit Mod - "архив" от Беседки, созданный для "бандлинга" модов из Creation Kit в Воркшоп. Применялся ранее до введения системы платных модов, после файлы начали скачиваться "как есть", без каких либо архивов.
Очень примитивный формат. Открыв в HEX-редакторе, и немного включив мозг, можно понять, что к чему.

Первыми четырьмя байтами в архиве всегда записан размер BSA-архива в Little Endian формате (байты идут наоборот). Возможно, есть моды и без BSA в CKM. У меня таких нет, пока что. В таких случаях, скорее всего будет восемь нолей в HEX-представлении.



Изображение
Открытый в HEX-редакторе CKM, свойства записанного внутри BSA-архива и переведённый размер в HEX
При переводе берём за основу именно фактический размер (100 506 607 байт), а не тот, который в итоге на диске (100 507 648 байт).
Вводим число в калькулятор в режиме программиста, предварительно выбрав DEC, после тыкаем на HEX-режим. Добавляем ноль в начале, если кол-во знаков не кратно двум, получаем размер в HEX: 05 FD 9B EF.
Теперь переворачиваем: EF 9B FD 05. Видим полное совпадение. Значит первыми четырьмя байтами у нас действительно идёт размер BSA-архива. Странно, кстати, что заголовка у файла нет, ну да ладно...
Сразу после размера записан сам BSA, "как есть". Вообще без изменений. Без сжатия и вот этого всего. Видимо, решили не экономить на трафике. Печально, конечно.
Скипнем весь BSA, ведь нам известен размер (записан первыми четырьмя байтами). Идёт четыре нулевых байта (кстати, они идут, даже если BSA архива в файле нет (таки нашёл CKM без BSA)), и сразу начинается сам ESP/ESM. Видно по заголовку (TES4):


Изображение
Всё, что идёт до красной черты - BSA + 4 нулевых байта (смещающие?). После - ESP.
Идёт сам файл плагина до конца файла. Т.е. как только поток закончился - всё, это конец ESP.
На коленке набросал на Шарпе класс, который принимает на вход:
  • Путь к файлу или поток с CKM.
  • Путь к папке, куда надо распаковать.
  • Имя мода (используется при формировании имён BSP и ESP-файла).
Можно посмотреть здесь. Возможно, как-нибудь сделаю и упаковщик, и оформлю в виде библиотеки в NuGet. Пока работает - и хрен с ним...

Для себя написал небольшую консольную утилитку, которая умеет распаковывать файлы, если:
  • Дропнуть файл на неё исполняемый (Drag'n'Drop);
  • Передать аргументом запуска (можно не в кавычках, если пробелы; я не предусматривал наличие каких-либо иных аргументов);
  • Просто запустить, ввести вручную или вставить в окно консоли путь к файлу.
Можно указать путь относительно бинарника. Сожрёт всё равно.
По предложению одного из форумчан в комментарии, публикую архив с ней. Писалось для себя, потому если возникнет какая-нибудь ошибка - отрапортует в консоли полностью все технические детали.




Изображение
Небольшая демонстрация





Загрузил в Файлы.
К постам в блоге - не вижу. Хотя может плохо смотрю, или спрятано

 

Лучше и правда класть в Файлы, а потом через свою библиотеку вставлять красивую ссылку (надпись Мои файлы в редакторе).

А для действительно важных картинок в тексте у нас есть ещё и свой форумный имгхостинг Host (вот правда не знаю точно, доступен ли он сейчас просто пользователям. Но если тебе недоступен - я могу туда тебе залить.

К счастью, доступен. Уже залил на этом посте. Сейчас переливаю для другого касательно Стимовского API.

 

У нас тут форум на приличной 3й ИПбороде позволяющей файлы цеплять к постам.

К постам в блоге - не вижу. Хотя может плохо смотрю, или спрятано :rolleyes:

Когда-то давно, вроде, рекомендовалось вообще на Радикал
У нас тут форум на приличной 3й ИПбороде позволяющей файлы цеплять к постам. (правда да, в счёт разрешённого места на хранилище профиля) А для особо важного есть и раздел "Файлы" (кстати как по мне твой анпакер вполне достоин там отдельного места в категории Программы для Skyrim и "Host" для действительно важных картинок.
:)

сделаю и упаковщик, и оформлю в виде библиотеки в NuGet
Лучше в виде библиотеки на Си, чтоб доступно было.

Можно и на Си, да. Так даже лучше будет, наверное.
Ох, придётся вспоминать, как с файлами работать)

Одно но - картинки настоятельно-бы порекомендовать залить непосредственно на tesall, чтоб не отпали. Хотя они и сейчас толком не работают т. к. у kruzya.me https сервер кривой.

Перезалью. Когда-то давно, вроде, рекомендовалось вообще на Радикал и прочие файло-помойки заливать картинки. Хотя наверное путаю с другим форумом...

И ссылку на готовый анпакер хотелось бы. Прямую. (и опять-же желательно залить сюда, на Tesall, дабы не пропало)

Ща упакую, залью тоже.
сделаю и упаковщик, и оформлю в виде библиотеки в NuGet
Лучше в виде библиотеки на Си, чтоб доступно было.

А вообще дельные статьи, отдельный респект за сей чудный разбор. И за тот тоже.
Одно но - картинки настоятельно-бы порекомендовать залить непосредственно на tesall, чтоб не отпали. Хотя они и сейчас толком не работают т. к. у kruzya.me https сервер кривой.

И ссылку на готовый анпакер хотелось бы. Прямую. (и опять-же желательно залить сюда, на Tesall, дабы не пропало)

Обратные ссылки на эту запись [ URL обратной ссылки ]

Обратных ссылок на эту запись нет

Искать в моем блоге

Новые записи

Новые комментарии