Space engineers nanite control factory гайд

Обновлено: 05.07.2024

Чужой компьютер

Просмотр темы 5 067

Есть проблема? Давайте решать её вместе.

Виталий Ильин

Есть рабочий Steam Fix для пиратки версии 01.188.104?

Нравится Показать список оценивших

Дима Котолевский

помогите пожалуйста

Нравится Показать список оценивших

Александр Хет

Нравится Показать список оценивших

Евгений Люфт

Народ, чтоттакое криокамера и нах она нужна?

Нравится Показать список оценивших

Никита Щекин

Нравится Показать список оценивших

Александр Хет

Ника, мат запрещен, если не хватает ОП, нужно проапать компьютер. Для игры нужно как минимум 8гб (у меня такая ОП), а лучше 16

Нравится Показать список оценивших

Никита Щекин

Александр, у меня 16 гб ОП, что на это скажите ?

Нравится Показать список оценивших

Александр Гапонов

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

Нравится Показать список оценивших

Денис Пушкарёв

а венда случайно не 32битная?

Нравится Показать список оценивших

Никита Щекин

Денис, нет, винда 64 битная

Нравится Показать список оценивших

Евгений Люфт

Александр, касается только сетевой игры,или в сингле тоже самое происходит?

Нравится Показать список оценивших

Александр Гапонов

Евгений, только для сетевой. В сингле она бесполезная.

Нравится Показать список оценивших

Евгений Люфт

Нравится Показать список оценивших

Alexander Pivkin

Нравится Показать список оценивших

Alexander Pivkin

Спасибо за советы) решил проблему полного удаления и последующей установкой

Нравится Показать список оценивших

Даниил Алексеев

здравствуйте,у меня появилась проблема с нанитами, суть в том что при установке мода "Nanite Control Factory" все текстуры появляются, но модуль отказывается работать, линии на фабрике должны светиться красным, зеленым, фиолетовым, но светятся белим, и фабрика просто стоит и не на что не реагирует.
Мод устанавливал через "Steam Workshop Downloader"
может кто знает как это решается?)

Нравится Показать список оценивших

Екатерина Проскурина

установив версию 188 выяснилась проблема,при попытке начать новую игру все крашит напрочь,вообще никак не поиграть,кто как лечил эту ересь? комп тянет на ультрах SE,весь софт есть,никакая переустановка не лечит.


Wait so with enough power generation, I can use this to build an entire large blueprint without having to make a bunch of pistons with wide area welders on them?

Report Save

Quite simply, yes.

Report Save

Very simple to use and works perfectly in Creative mode for testing!

Report Save

Overview

This is a large ship block that creates and controls specialized construction nanites. These nanites are released from the factory when it detects that there are blocks on a ship that are damaged or not completely constructed. The factory will draw components from the conveyor system, which it then feeds to the nanites which then carry those components (in their atomic form) to the target block where they will then reassemble the components in the position required by the block. The nanites are created by focusing a massive amount of raw energy into a very small area, and using a form of anti-gravity in order to achieve a very briefly period of flight. Along with being atomic in size, they are able to move through existing material without damaging it, thereby being able to construct and repair blocks that are remote and can not be reached by normal engineers. Nanites are also able to detect when projections are available to be built, and are sent to construct projected blocks.

Nanite Functionality

The factory offers the following functionality:

The construction and repair functionality requires access to components in order to perform the construction or repair. It also requires a lot of energy. Each factory can support 6 streams of nanites. Each stream can repair or construct a single block and takes a minimum of 20 seconds. If the block is further away from the factory this time increases. Each stream requires 26MW of power.

Здравствуйте. Я хочу рассказать про проектирование и программирование системы управления конечностями в гексаподе, построенном в 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 мегабайта):

gif 2 мегабайта

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

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


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

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