Space engineers файл с настройками

Обновлено: 03.07.2024

Здравствуйте. Я хочу рассказать про проектирование и программирование системы управления конечностями в гексаподе, построенном в Space Engineers.

Забегая вперед скажу, что всё, что касается программирования в Space Engineer, будет в следующей статье. В этой я расскажу про обратную кинематику и покажу прототип на HTML Canvas в котором я занимался отладкой алгоритмов.


Предыстория и постановка задачи.

Изначально было построено сочлененное шасси, а затем на нем копательный агрегат. Такая конфигурация обеспечивала контакт всх колес с поверхностью на больших неровностях, в том числе и при скручивании.

image

Вроде такого

Но я столкнулся с невозожностью его точно разместить на месторождении, так-как колеса часто соскальзывали вниз (проблема физики — большинство блоков (в том числе и колеса) имеют слишком малый коэффициент трения). Колесная платформа с цельноповоротными колесными модулями оказалась слишком громоздкой и страдала от периодических physics explosion. В результате было решено строить шагающего робота — а именно — гексапод, как самую стабильную шагаюшую платфрому.

С чего начнет строить гексапод нормальный человек? Наверное зайдет в игру и начнет строить тело робота с конечностями, а потом думать как это всё оживлять. Но это не наш метод (ц)

Я начал с теории

Для строения ноги была выбрана следующая схема:

Inner joint — внутренний сустав, качающийся по оси рысканья (yaw)
Mid joint и outer joint — внешние суставы, качающиеся по оси тангажа (pitch). Направление отсчета — от основания ноги к концу ноги.


Угол 0 для всех суставов означает, что нога полностью выпрямлена (прямую ногу будет проще строить в игре).

Задача — при заданной целевой точке найти такие углы поворота сустовов, что-бы конец ноги оказался в заданной точке. Значит время вспоминать тригонометрию.

Угол внутреннего сустава можно найти через арктангенс горизонтальных координат цели.


С двумя другими суставами посложнее. У нас есть длина всех суставов. Можно найти угол к горизонту и расстояние между средним суставом и землей, а так-же расстояние до целевой точки.

Дальше через теорему косинусов нужно найти углы треугольника по известным сторонам.

image

Так это выглядит в коде:

Движение

Далее. Робот должен ходить, верно? То-есть мы должны передавать N раз в секунду каждой ноге координаты заданной позиции. С учетом того, что ног 6 и 3 из них двигаются в противофазе получается как-то сложно. Нужно ввести новый уровень абстракции.

А что если мы представим что нога движется по окружности и ей нужно передавать угол обозначающий позицию на этой окружности? Удаление в сторону становится постоянным и нужно передавать только один параметр, меняющийся циклично. Тогда целевые координыты находятся через синус и косинус.

Пока достаточно

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

Поэтому я решил написать визуализатор. Мне хотелось его сделать без дополнительных библиотек и иметь возможность запускать его в один клик и без привязки к окружению.
Поэтому был выбран JS + HTML Canvas.

А сейчас нарисуем сову.


Шаг — структура данных для управления ногой:


Но для отрисовки понадобятся еще несколько классов:

Обертка над Canvas:


В классе Leg есть метод для получения текущих координат суставов. Вот эти координаты мы и будем отрисовывать.

Так-же я добавил отрисовку точек, в которых находилась нога в N последних тиков.

И наконец Worker, который будет запускать симуляцию:

Правда миленько?

Здесь видно, что траектория движения ног отличается от окружности. Движение по вертикали напоминает урезанную синусоиду, а движение по горизонтали линейно. Это должно уменьшить нагрузку на ноги.

Теперь несколько пояснений, что происходит в коде.

Как научить робота поворачивать?

Для поворота я рассмотрел 2 ситуации:

Если робот стоит — ноги двигаются по окружности.

Единственное но — движение именно по окружности сильно усложнило-бы код с текущей реализацией. Поэтому ноги двигаются по касательной к окружности.

Когда робот двигается нужно реализовать что-то вроде Ackermann steering geometry с дифференциалом.

image

То-есть длина шага ног, двигающихся по меньшему радиусу, — меньше. А угол поворота — больше.

Что-бы реализовать изменение угла поворота для каждой ноги я придумал следующий алгоритм:

1. Считаем угол от изначального положения ноги к центру робота:


2. Считаем угол от изначального положения ноги к (центру робота + смещение, которое отвечает за поворот — это изменяемый параметр):


3. Поворачиваем шаг на разницу этих углов:


Но это не всё. Еще нужно изменять длину шага. Реализация в лоб — домножать длину шага на изменение расстояния до центра — имело фатальный недостаток — внешние ноги слишком широко шагали и начинали задевать друг друга.

Поэтому пришлось усложнить реализацию:

1. Считаем изменение расстояния до центра для каждой ноги:


0.3 — магическое число

2. Находим отношение между минимальным и максимальным изменением


Этот множитель отражает разницу между минимальным и максимальным изменением расстояния до центра. Он всегда меньше 1 и если на него домножать длину шага — она при повороте не будет увеличиваться даже для внешних по отношению к направлению поворота ног.


Вот как это работает (gif 2 мегабайта):

→ Поиграться с результатом можно тут

Для более пристального изучения рекомендую сохранить содержимое в html файл и продолжить в любимом текстовом редакторе.

Space Engineers

Александр Недбаев

Александр Недбаев запись закреплена

Здравствуйте. Не давно скачал данную игру (пиратку) знаю,плохо так делать,но сперва хочу разобраться,что да как. так вот как на эту пиратину поставить чертеж корабля? Знаю конечно,что в лицензии куда проще

Валентин Кравченко

Короче тебе нужно скачать сам чертёж. Дальше нажми win+R и напиши в строке appdata, затем открой папку Roaming и найди там папку Space enginners. В этой папке будет папка Blueprints и в эту папку нужно запихивать чертежи. Вот тебе пару чертежей

Валентин Кравченко

Валентин Кравченко

Александр Недбаев

Валентин, Собственно файл sbb распаковываю и содержимое в Blueprints?)

Александр Недбаев

Валентин, Да,и в данной паке у меня еще 2 папки, это local и workshop,мне куда?

Валентин Кравченко

Александр, то что я тебе скинул их собственно не надо открывать, просто скачиваешь и кидаешь в папку Blueprints

Валентин Кравченко

Александр, а папки local и workshop должны находится в папке space engineers(эта папка в Roaming) ну скинь короче файлы в Blueprints

Александр Недбаев

Александр Недбаев

Валентин, в общем вот как выглядит указанный вами путь у меня, именно сюда класть файл?

Валентин Кравченко

Александр, ну попробуй сначала сюда, если не заработает то в папку workshop скинь

Александр Недбаев

Валентин Кравченко

Александр, не имея лицензии никак, но когда домой прийду могу скачать. И лучше в личку пиши

Yuki Kaze

Санёк Шальнев

Чувак тебе 300 р жалко? На платиру стимовскую купи и все играй на ровне со всеми и не надо мозги ипать с модами, чертежами и т.д.

Александр Недбаев

Санёк, Дак ясен пень,н оя пока в этой игре ни фигашечки не понимаю..я только научился корабль мелкий строить ни одного механизма не знаю, как панели управления эти работают,да и железка моя старовата, последняя версия на минимуме идет,так,что я пока смысла не вижу ее покупать. я так в 12 или 13 году rust купил,он шел на средних,а в прошлом году стал жутко тормозить,сис требования повысились,а оптимизация упала. Так,что может позже


 Ведущее сообщество космических песочниц Space Engineers и RIFT - игр о проектировании, строительстве и обслуживании космических структур. Играйте, делитесь творчеством, общайтесь и получайте удовольствие вместе с нами! Сервер: выключен
Публичный сервер: выключен

Вы здесь


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

Аватар пользователя Johnny

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

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

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

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

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

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


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


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

1) Создайте папку C:\Users\\AppData\Roaming\SpaceEngineers\Mods\SphereBlock
2) Создайте папку C:\Users\\AppData\Roaming\SpaceEngineers\Mods\SphereBlock\Data
3) Создайте папку C:\Users\\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>

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

Например, файл "Textures\BackgroundCube\Final\MilkyWay", требуемый моду SkyboxMilkyWay, должен быть найден по следующим адресам:
C:\Users\\AppData\Roaming\SpaceEngineers\Mods\SkyboxMilkyWay\Textures\BackgroundCube\Final\MilkyWay.dds
\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>


Space Engineers в Linux

Space Engineers работает под Linux, и вы сможете в нее поиграть. Однако он работает только с мощью Proton, включенной в Linux-версию Steam. По этой причине нам нужно заранее узнать, как установить приложение Steam.

Установить Steam

Чтобы начать установку Steam на вашем ПК с Linux, откройте окно терминала. Чтобы открыть окно терминала, нажмите Ctrl + Alt + T на клавиатуре. Или найдите «Терминал» в меню приложения и откройте его таким образом.

Когда окно терминала открыто и готово к использованию, следуйте приведенным ниже инструкциям по установке, которые соответствуют используемой вами операционной системе Linux.

Ubuntu

В Ubuntu вы сможете установить приложение Steam, используя команду Apt ниже.

Debian

В Debian Linux приложение Steam можно установить через загружаемый пакет DEB на ваш компьютер. Чтобы загрузить пакет Steam DEB на свой компьютер, используйте инструмент загрузки wget, чтобы загрузить его.

После загрузки последнего пакета Steam DEB на ваш компьютер с Debian Linux можно начинать установку Steam. Используя приведенную ниже команду dpkg, вы сможете запустить приложение Steam.

Arch Linux

В Arch Linux приложение Steam легко установить с помощью следующей команды Pacman.

Fedora / OpenSUSE

Как в Fedora, так и в OpenSUSE Linux Steam можно установить из официальных источников программного обеспечения. Однако выпуск Steam Flatpak намного лучше работает с этими дистрибутивами, и по этой причине мы рекомендуем установить его вместо него.

Проверь это - Как отключить автоматическое воспроизведение видео в LinkedIn

Flatpak

Чтобы приложение Steam работало в Steam, первое, что вам нужно сделать, это включить среду выполнения Flatpak на вашем компьютере. Чтобы включить среду выполнения Flatpak на вашем компьютере, следуйте этому руководству по этому вопросу.

После настройки среды выполнения Flatpak на вашем компьютере вы должны настроить магазин приложений Flathub. Чтобы настроить магазин приложений Flathub, используйте следующую команду удаленного добавления ниже. Этот шаг очень важен, так как без него Steam не может быть установлен.

Теперь, когда магазин приложений Flathub настроен, можно установить приложение Steam. Используя команду ниже, установите Steam.

Установите Space Engineers в Linux

Установив Steam, откройте приложение и войдите в свою учетную запись, используя свои учетные данные. После этого следуйте пошаговым инструкциям ниже, чтобы заставить Space Engineers работать с Linux.

Проверь это - Почему Linux systemd по-прежнему вызывает разногласия после всех этих лет

Шаг 1. Сначала откройте Steam и нажмите меню «Steam». Оттуда выберите «Настройки», чтобы получить доступ к области настроек Steam. Оттуда найдите область «Steam Play».


В области Steam Play установите флажки «Включить Steam Play для поддерживаемых игр» и «Включить Steam Play для всех других игр». Затем нажмите кнопку «ОК», чтобы применить изменения в Steam.

Шаг 2: Найдите кнопку «СОХРАНИТЬ» и щелкните по ней мышью. Затем щелкните мышью по полю поиска. В поле поиска введите «Space Engineers» и нажмите клавишу Enter, чтобы просмотреть результаты.


Просмотрите результаты поиска по запросу «Space Engineers» и щелкните его, чтобы просмотреть страницу магазина. Затем найдите зеленую кнопку «Добавить в корзину», чтобы купить и добавить игру в свою учетную запись.


Шаг 3: Откройте окно терминала. Как только окно терминала откроется, следуйте это руководство для установки Protontricks. Он понадобится вам для работы космических инженеров.

После установки Space Engineers сделайте следующее. Сначала нажмите зеленую кнопку «ИГРАТЬ», чтобы начать игру. Не волнуйтесь, если он не запустится правильно.

После запуска игры закройте ее. Затем перейдите в терминал и выполните следующую команду.

Выберите «Space Engineers» в графическом интерфейсе Protontricks. Затем выберите «dotnet48» и установите его. Затем перезагрузите компьютер.

Шаг 4: После перезагрузки компьютера перезапустите Steam и нажмите зеленую кнопку «ИГРАТЬ» второй раз. Поскольку Protontricks установил dotnet48, он должен работать правильно! Наслаждаться!


Исправление проблем

Нужна помощь в настройке Space Engineers на вашем ПК с Linux? Посетите страницу устранения неполадок ProtonDB за дополнительной информацией.

Читайте также: