| Официальный гайд по моддингу - перевод

1 post / новых - 0
Аватар пользователя Johnny
Не в сети
Официальный гайд по моддингу - перевод
-1
+6
+1

Оригинал: http://forum.keenswh.com/threads/official-modding-guide.7028598/

Сравнение локальных модов и модов из Workshop:
Когда вы начинаете разработку нового мода, этот мод является локальным.
Когда вы доведете мод до ума, вы можете опубликовать его в Steam Workshop (пожалуйста, протестируйте его перед этим).
Теперь у вас два мода - один локальный и один в Steam Workshop.
Вы можете обновить контент локального мода и затем заново опубликовать его в Steam Workshop (мод в Steam будет обновлен).

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

Что может быть модифицировано:
- Скайбоксы
- Блоки, компоненты, слитки, руды, материалы астероидов
- Модели персонажей, анимация
- Кастомная анимация персонажей (приветствие, фейспалм и так далее)
- Прозрачные материалы (используются для свечения двигателей)
- Стартовые базы и корабли (частично)
- Модели обломков
- Снаряды пусковых установок

Пока что не может быть модифицировано:
- Сценарии
- Звуки
- Магазины оружия
- Интерфейс

Каталог модов:
Моды располагаются по адресу: C:\Users\{username}\AppData\Roaming\SpaceEngineers\Mods\

Здесь вы можете видеть папку с модами, где находится один локальный мод (SkyboxMilkyWay) и два загруженных из Мастерской.
Загруженные моды являются zip-файлами, вы можете поменять их расширение на .zip и посмотреть, что внутри.

Внутри папки SkyboxMilkyWay:
"Data" - аналог Content/Data в папке с игрой.
"Textures" - аналог Content/Textures.
"modinfo.sbmi" - автоматически создается после публикации мода в Мастерской.
"thumb.jpg" - превью мода, создается автором.

Скачать SkyboxMilkyWay можно здесь: http://mirror.keenswh.com/Temp/SkyboxMilkyWay.zip (10)
Также здесь могут быть другие папки, например "Models".

Создание нового мода:
Создайте новую папку по адресу C:\Users\{username}\AppData\Roaming\SpaceEngineers\Mods\
Скопируйте туда модифицированный контент (подробнее - в разделе "Модификация контента").
Создайте thumb.jpg (превью мода).
Запустите игру.
Выберите пункт "Edit world settings" (выберите старт новой игры или загрузите уже существующую).
Выберите пункт "Mods".
Выберите свой мод и нажмите "Publish".
(желательно протестировать мод перед публикацией)

Другой пример - сферический блок:
Мы создали новый мод, который добавляет новый блок - сферу.
Я подготовил mwm-модель сферы, про создание mwm-моделей вы можете прочитать здесь: http://www.spaceengineersgame.com/modding.html

1) Создайте папку C:\Users\{username}\AppData\Roaming\SpaceEngineers\Mods\SphereBlock
2) Создайте папку C:\Users\{username}\AppData\Roaming\SpaceEngineers\Mods\SphereBlock\Data
3) Создайте папку C:\Users\{username}\AppData\Roaming\SpaceEngineers\Mods\SphereBlock\Models
4) Скопируйте "Sphere.mwm" в "SphereBlock\Models"
5) Создайте "SphereBlock\thumb.jpg"
6) Создайте пустой файл "SphereBlock\Data\CubeBlocks_Sphere.sbc"
7) Скопируйте параметры блока в файл:

<?xml version="1.0"?>
<Definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<CubeBlocks>
<Definition>
<Id>
<TypeId>CubeBlock</TypeId>
<SubtypeId>LargeSphereBlock</SubtypeId> <!-- Unique block subtypeId -->
</Id>
<DisplayName>Large Sphere</DisplayName> <!-- Name visible in game -->
<Icon>Textures\GUI\Icons\Cubes\window</Icon> <!-- Lets use window icon for our sphere -->
<CubeSize>Large</CubeSize> <!-- We're making large block -->
<BlockTopology>TriangleMesh</BlockTopology> <!-- Use TriangleMesh (unless you want to make new deformable armor) -->
<Size x="1" y="1" z="1" /> <!-- Size in blocks is 1x1x1 (just one block) -->
<ModelOffset x="0" y="0" z="0" />
<Model>Models\Sphere</Model> <!-- Model path -->
<Components>
<Component Subtype="InteriorPlate" Count="12" />
<Component Subtype="Construction" Count="8" />
<Component Subtype="SmallTube" Count="4" />
</Components>
<CriticalComponent Subtype="Construction" Index="0" />
<BlockPairName>SphereBlockPairName</BlockPairName>
<EdgeType>Light</EdgeType>
<BuildTimeSeconds>10</BuildTimeSeconds>
</Definition>
</CubeBlocks>
<BlockPositions>
<BlockPosition>
<Name>SphereBlockPairName</Name>
<Position>
<X>-3</X>
<Y>-3</Y>
</Position>
</BlockPosition>
</BlockPositions>
</Definitions>

Модель должна быть в папке "Models", иначе игра не загрузит ее.
sbc-файлы должны быть в папке "Data", иначе см. предыдущий пункт.
Я загрузил мод в Мастерскую: http://steamcommunity.com/sharedfiles/filedetails/?id=294468758

ДОПОЛНИТЕЛЬНЫЕ СВЕДЕНИЯ:
Модификация контента:
В папке "SpaceEngineers/Content/Data" вы можете увидеть игровые ресурсы.
Она включает в себя блоки, модели персонажей, чертежи, настройки окружения (скайбоксы и настройки солнца) и многое другое.
Многим из этих ресурсов требуются дополнительные файлы, такие как текстуры и модели.
Их пути должны быть указаны относительно папки с модом или корневой папки с ресурсами.

Например, файл "Textures\BackgroundCube\Final\MilkyWay", требуемый моду SkyboxMilkyWay, должен быть найден по следующим адресам:
C:\Users\{username}\AppData\Roaming\SpaceEngineers\Mods\SkyboxMilkyWay\Textures\BackgroundCube\Final\MilkyWay.dds
{SpaceEngineersDir}\Content\Textures\BackgroundCube\Final\MilkyWay.dds

Прим.: расширение ".dds" автоматически добавляется к текстурам.

В моде вы можете указывать ссылки только на контент внутри этого мода, либо на корневую папку игры, перекрестные ссылки между модами не работают!
Игра не будет загружать текстуры и модели из мода, если на них не ссылается ни один файл.

Например, мод содержит только один файл "Textures\BackgroundCube\Final\BackgroundCube.dds" (такое же название имеет оригинальный скайбокс).
В таком случае, игра не загрузит его. Вам необходимо создать Environment.sbc и поместить туда ссылку на файл.

Обработка контента в игре:
В первую очередь загружается оригинальный контент.
Затем загружается первый мод, который добавляет новый контент либо заменяет существующий (или отключает его).
Далее загружается второй мод, который может переписать оригинальный контент или первый мод.

Например:
В оригинальной игре есть блок с параметрами TypeId "Drill" и SubtypeId "LargeBlockDrill".
Когда мод объявляет блок с параметрами TypeId "Drill" и SubtypeId "LargeBlockDrill", он переписывает оригинальный блок.

Когда мод объявляет блок с параметрами TypeId "Drill" и SubtypeId "LargeCrazyDrill", он добавляет новый тип блока.
Если моду требуется отключить данный тип блока, в него нужно добавить следующие параметры:

<Definition xsi:type="MyObjectBuilder_ShipDrillDefinition">
<Id>
<TypeId>Drill</TypeId>
<SubtypeId>LargeBlockDrill</SubtypeId>
<Id>
<Enabled>false</Enabled>
</Definition>