ENG Новый сайт

Расширенный поиск
[ Новые сообщения · Пользователи · Правила ]
  • Страница 1 из 1
  • 1
Структура папок и pak-файлы 0.980
SpaceEngineerДата: Среда, 07.09.2016, 18:05 | Сообщение # 1
Автор Space Engine
Группа: Администраторы
Российская Федерация
Сообщений: 5547
Награды: 55
Статус: Offline
Последнее обновление: 07.09.2016 (версия 0.9.8.0)

Папки SpaceEngine

В SpaceEngine есть две основные папки с файлами данных, которые находятся в корневом каталоге (каталоге установки): data и addons. Они эквивалентны во многих аспектах. Первая содержит стандартные файлы SpaceEngine, которые не рекомендуется изменять. Вторая зеркально повторяет внутреннюю структуру первой, и используется для пользовательских модов и аддонов. Она также имеет более высокий приоритет при поиске файлов при запуске. Это значит, что если у вас есть какой-то файл в папке addons с таким же путём и именем, как какой-то файл в папке data, SpaceEngine загрузит файл из папки addons. Это полезно для создания модов, которые изменяют некоторые из системных файлов, таких как шейдеры, без фактического изменения самих системных файлов.

Внутри папка data содержит следующие стандартные подпапки: catalogs, locale, models, music, scripts, shaders, sounds, textures. Слово «стандартные» означает, что SpaceEngine ожидает найти конкретные файлы данных в этих вложенных папках, например, файлы саундтрека должны быть в data/music/, а каталоги звёзд - в data/catalogs/stars/ (некоторые из стандартных папок содержат свои собственные стандартные папки следующего уровня).

Папка addons также может содержать эти стандартные папки, которые работают параллельно с папками в data. Это значит, что SpaceEngine загружает файлы из обоих папок data и addons, как будто они представляют собой одну большую папку (но с более высоким приоритетом у addons в случае конфликта имени файла, как было описано выше).

В папке addons также допустимо использовать дополнительные вложенные папки, для лучшей организации аддонов. Эти дополнительные папки могут иметь любое имя (которое, очевидно, не может совпадать с именем стандартной папки), как правило, отражающее имя аддона или франшизы, например addons/StarWars/. Внутри дополнительная папка может содержать стандартные папки с файлами данных: catalogs, models, textures и т.д., или pak-файлы (см. ниже), или же она может содержать дополнительную вложенную папку следующего уровня, например addons/StarWars/EmpireShips/. SpaceEngine допускает неограниченное количество вложенных папок (ограниченно только операционной системой - как правило, длина пути не должна превышать 256 символов).

pak-файлы

pak-файлы - это zip-архивы, использующиеся для лучшей организации и распространения игрового контента. Например, большой аддон с тысячами файлов может быть заархивирован в один pak-файл и распространяться так, что удобно для пользователя. Также, при создании pak-файла может использоваться сжатие, что полезно для экономии дискового пространства и трафика.

pak-файлы - это zip-архивы, включающие в себя файлы и папки с той же структурой, как на диске, начиная с корневого уровня data и addons (или addons/YourCustomFolder/). Это значит, что самая верхняя папка, которая может быть заархивирована в pak-файл - это одна из стандартных папок: catalogs, models, textures и т.д. SpaceEngine считывает содержимое всех pak-файлов при запуске и использует их для организации виртуальной файловой системы с приоритетом даты модификации.

1) Формат pak-файла
Как уже говорилось, pak-файлы - это zip-архивы (т.е. .zip файлы с расширением, изменённым на .pak). Вы можете связать тип файла .pak с WinRAR или 7zip или любой другой программой-архиватором, поддерживающей zip, и открывать pak-файлы в ней. Создавать pak-файлы просто: выберите нужные файлы и папки и запакуйте их в zip-архив, а потом переименуйте его в .pak.

2) Виртуальный путь
Можно представлять pak-файл как контейнер для файлов/папок. Внутренняя структура папок внутри pak-файла является продолжением структуры папок SE, они "прозрачны" для SE. Это значит, что pak-файл выглядят для SE так, как если бы всё его содержимое было извлечено на диск в том месте, где этот pak-файл находится. Мы будем называть это виртуальный путь. Далее в этой статье будет применяться следующая цветовая маркировка: пути к файлам и папкам на диске (не запакованным) окрашены в зелёный цвет, а пути внутри pak-файла - в оранжевый цвет. Например, эти три виртуальные пути равнозначны (помните, что папка StarWars необязательна):
addons/StarWars/StarWarsPlanets.pak/catalogs/planets/Coruscant.sc (упакованный в pak-файл)
addons/StarWars/catalogs/planets/Coruscant.sc (распакованный на диск)
addons/catalogs/planets/Coruscant.sc (распакованный на диск, без опциональной папки StarWars)

3) Приоритет по дате изменения
Если есть два или более файлов с одинаковым виртуальным путём, SE будет загружать самый новый из них. SE сравнивает дату/время модификации файлов на диске, или дату/время модификации всего pak-файла. Например, рассмотрим 3 файла SolarSys.sc в разных местах, но с одинаковым виртуальным путём:
data/catalogs/Catalogs0980.pak/planets/SolarSys.sc (в стандартном pak-файле SE, дата модификации pak-файла 06.08.2016)
data/catalogs/planets/SolarSys.sc (извлечён на диск, дата модификации файла файла 01.09.2016)
data/catalogs/SolarSysUpdate001.pak/planets/SolarSys.sc (в другом pak-файле, дата модификации которого 05.09.2016)
В этом примере SpaceEngine загрузит последний файл, так как он имеет самую "свежую" дату. Это полезно для создания обновлений. Пусть теперь кто-то добавил аддон с таким файлом:
addons/SolarSystemMod.pak/catalogs/planets/SolarSys.sc (дата модификации pak-файла 15.08.2016)
В этом случае SpaceEngine загрузит файл из этого аддона, несмотря на то, что он старше pak-файла обновления из предыдущего примера. Это происходит потому, что файлы в папке addons имеют приоритет над файлами в папке data. Это сделано для того, чтобы сохранить работоспособность аддонов после установки обновления SpaceEngine. Но внутри папки addons действует то же правило приоритета по дате модификации файла/пака.

4) Извлечение файлов
Вы можете извлечь любой файл из pak-архива, открыв его как zip-архив. При извлечении файла, необходимо создать все подпапки, в которой он находится внутри pak-файла, так, чтобы извлечённый файл имел тот же виртуальный путь, как и упакованный (как при использовании команды "Извлечь здесь" в контекстном меню Проводника). Например, если вы хотите, извлечь файл SolarSys.sc из Catalogs0980.pak, необходимо создать папку data/catalogs/planets/ и извлечь этот файл в него, так чтобы у него был такой путь:
data/catalogs/planets/SolarSys.sc
После этого SpaceEngine будет загружать этот извлечённый файл, так как он будет иметь более позднюю дату. Теперь можно радактировать его.

5) Создание pak-файлов
Например, вы делаете аддон с планетными системами, состоящий из следующих файлов:
addons/StarWars/catalogs/stars/StarWarsSystems.sc
addons/StarWars/catalogs/planets/Coruscant.sc
addons/StarWars/catalogs/planets/Tatooine.sc

Когда вы закончите его создание и тестирование, и будете готовы к релизц, перейдите в папку addons/StarWars/, выберите папку catalogs и упакуйте её в zip-архив, затем переименуйте его StarWarsPlanets-v001.pak. Имя файла не имеет значения, но оно должно отражать содержимое файла; также хорошей идеей будет указание номера версии/ревизии. После этого можно удалить папку catalogs со всем содержимым (или переместить её в какое-то резервное место) и оставить только вновь созданный pak-файл. Если вы сделали всё правильно, ваш аддон должен работать в SE, как и раньше. Файлы данных должны иметь такой виртуальный путь:
addons/StarWars/StarWarsPlanets.pak/catalogs/stars/StarWarsSystems.sc
addons/StarWars/StarWarsPlanets.pak/catalogs/planets/Coruscant.sc
addons/StarWars/StarWarsPlanets.pak/catalogs/planets/Tatooine.sc
Теперь можно выложить файл StarWarsPlanets-v001.pak на всеобщий доступ. Обратите внимание, что он будет работать, будучи помещённым в любую вложенную папку в папке addons (естественно, кроме стандартных вложенных папок):
addons/StarWarsPlanets-v001.pak
addons/StarWars/StarWarsPlanets-v001.pak
addons/blabla/ololo/123/StarWarsPlanets-v001.pak
Можно запаковать любой набор файлов данных в один pak-файл. Например, вы можете создать полный аддон франшизы «Звёздные войны», который включает в себя все планетные системы, галактику и модель галактики, и все модели кораблей. Правда, существуют некоторые ограничения, описанные ниже.

6) Ограничения
1) pak-файлы не могут находиться в корневой папке SpaceEngine. Такое не будет работать:
SpaceEngine/StarWars.pak/data/catalogs/planets/Coruscant.sc
2) pak-файл не может содержать дополнительные вложенные папки, допустимо использование только стандартных папок. Такое не будет работать:
SpaceEngine/addons/StarWars.pak/StarWars/StarWarsPlanets/catalogs/planets/Coruscant.sc
3) pak-файл должен иметь размер не более 4 гигабайт. Если вы не вписываетесь в этот размер, разделите ваш аддон на несколько более мелких pak-файлов.
4) Музыка и звуковые файлы в формате .ogg не могут быть заархивированы в pak-файл.

7) Степень сжатия
Zip-архивы могут быть созданы с использованием сжатия или без сжатия. SpaceEngine поддерживает только "Deflate" метод сжатия. Некоторые типы файлов показывают большую степень сжатия (текстовые файлы, такие как скрипты и каталоги), некоторые - среднюю (двоичные файлы, такие как модели кораблей .sm, текстуры в формате .dds и несжатом .tga), некоторые почти не сжимаются (текстуры в формате .jpg, .png, .tif). Хорошей идей будет упаковывать большой массив текстур (например, аддон с текстурами планеты) в архив без сжатия, так как он имеет большую производительность при извлечении/загрузке текстур в SE. Более высокая производительность всегда лучше, чем экономия несколько мегабайт дискового пространства. Вы можете поэкспериментировать, чтобы найти лучшую степень сжатия для вашего аддона. Например, можно сохранить текстуры в pak-файл без сжатия, а скрипты и модели в файл другой pak-файл со сжатием.

8) Никогда не изменяйте стандартные pak-файлы
Так же, как и во всех других играх, изменение стандартныз ресурсов игры - плохая идея. В будущем, клиент игры будет проверять свои стандартные файлы на предмет изменения, и выгонять вас с сервера, если таковое будет обнаружено. Так что запомните простые правила:
1) Если вы хотите что-то добавить, создайте свой собственный pak-файл (или просто храните файлы в папках, не упаковывая их).
2) Если вы хотите изменить что-то, извлеките файл из стандартного pak-файла, и изменяйте извлечённый файл.
RomFilДата: Среда, 07.09.2016, 20:48 | Сообщение # 2
Нет аватара
Строитель Миров
Группа: Пользователи
Пират
Сообщений: 706
Награды: 2
Статус: Offline
ну до сервера ещё как сам знаешь до куда) дед лайн дед)
AerospacefagДата: Среда, 07.09.2016, 22:20 | Сообщение # 3
Строитель Миров
Группа: Пользователи
Российская Федерация
Сообщений: 1019
Награды: 3
Статус: Offline
Цитата SpaceEngineer ()
07.09.2006

2016

Все очень круто. Надеюсь, что если будет нормальный Стим релиз, можно будет сразу ставить на игру моды.


Win7
Intel Core i5-2310 2.9 Ghz
4 Gb DIMM DDR3
Asus GeForce GTX760, 2 Gb GDDR-5
lexancccpДата: Четверг, 08.09.2016, 00:03 | Сообщение # 4
Нет аватара
Исследователь
Группа: Пользователи
Пират
Сообщений: 268
Награды: 0
Статус: Offline
RomFil, да какой дедлайн, симуль такая махина с программной точки зрения, на дедлайны можно забить. развитие идет и это прекрасно.
vikt9604Дата: Воскресенье, 11.09.2016, 14:03 | Сообщение # 5
Наблюдатель
Группа: Пользователи
Пират
Сообщений: 5
Награды: 0
Статус: Offline
Большое спасибо! Мне эта тема помогла быстро разобраться в структуре папок в новой версии!
  • Страница 1 из 1
  • 1
Поиск:

>