Ksp как пользоваться сканером

Обновлено: 17.05.2024

Свободного времени для игры стало меньше, но за эту неделю очень многое произошло, так что я просто обязан выпустить отчёт. Сегодня я расскажу о подготовке колонии на Красной планете, попытках создать базу на астероиде класса Е и герое, который носит скафандр. Туристический контракт из прошлого отчёта принёс почти 55 миллионов кредитов, так что сейчас у меня есть возможность заняться всем, что хочется. А хочется многое.

Я никогда не строил раньше наземные базы, а особенно с механиками из модов. Первая попытка была предпринята при постройке небольшого пункта временного пребывания на Минмусе, но это по факту очень большой ровер, а не колония.

Для постройки полноценной колонии надо было найти место, соответсвующее 3 требованиям:

1. Имеются месторождения руды, силикатов, урановой смолки, есть минералы/глинозём и гидраты. Ещё очень желательно наличие редких и экзотических элементов, чтобы в будущем организовать производство аппаратов на месте.
2. Поверхность не должна иметь уклон вообще. Иначе база «скатится». Также не смогут нормально стоять на тормозах роверы.
3. Будущая база должна располагаться либо в 5-10 градусах от экватора, либо очень близко к полюсам. Это необходимо для удобного выхода на орбиту и взлёта/посадки с минимальными затратами топлива.

Результаты сканирования меня расстроили. Месторождения руды и редких металлов почти не пересекались, кроме пары мест, силикаты были только на южном полюсе в небольшой области, минералы с рудой тоже почти не пересекались.

Я выбрал 2 перспективных места, там очень слабо пересекались почти все необходимые ресурсы. Для исследования сконструировал вот такие лёгкие марсоходы:

Полюс оказался не таким перспективным, как я надеялся. Всё таки это почти полярный круг, что уже достаточно далеко, плюс там слишком неровный ландшафт. Ну а главное, надежда на пересечение залеганий ресурсов не оправдалась.

Второй марсоход был спущен в область на 10 градусов севернее экватора, там было больше надежды встретить одновременно нужные ресурсы, но там не было воды. Я ошибся. В области гипотетического залегания всего не было ничего. Проехал 20 км в надежде на чудо, ничего не нашёл, потерял одну их панелей, наткнулся на метеорит, просканировал и получил почти 200 очков науки.

Третьей зоной посадки стал небольшой кратер южнее экватора на 5 градусов. По прогнозам это было самое жирное месторождение руды. Раз уж получить всё сразу не выходит, будем идти по другому пути.

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

Летят. (У меня вообще уже очень много всего летает на орбитах)

Самое сложное — это всё ещё посадка всего этого рядом друг с другом. Для этого я даже начал придумывать небольшой кран, который мог бы перевозить все эти вещи, но придумывалка сломалась немного на этапе тестов. Получалось слишком неустойчиво или слишком сложно. Поэтому грузы я снабдил колёсами, чтобы они сами после посадки ехали к базе.

Итак. В кратере нашлось более-менее ровное место с терпимыми запасами ресурсов, первым делом я попытался опустить ядро базы, попал с точностью до 100 метров.

Потом инженеры разберут все эти посадочные двигатели на полезные составляющие Порадовало количество ExoticMinerals, которые нужны для постройки кораблей на месте. Ну и может продавать их получится. 20000 шт стоят почти 3 500 000 кредитов, правда весят почти 50 тонн

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

Во время посадки груз повалился на бок. Чтобы вернуть его снова на колёса, использовал очень кербальский способ. Получилось)

Итак, основные приготовления закончены. Теперь осталось доставить туда инженеров для развёртывания всего этого добра, и с этим возникли трудности. Я очень сильно перестарался, делая последний модуль, поэтому теперь при его прогрузке игра очень жёстко лагает, что невозможно управлять, а как осуществлять посадку я не представляю.

По центру расположен подвижная мобильная база, способная обеспечить почти бесконечное проживание 2 кербонавтов. Также сверху расположен дополнительный запас оборудования. Снизу расположен ровер полегче, который предназначен для транспортировки пассажиров к посадочным модулям и их дозаправки. Вообще он был прикреплён больше для балансировки центра тяжести, т.к не уверен, что сильно буду им пользоваться.

Теперь не буду. Лагает.

После первых лагов я сконструировал другую модель. Все эти громоздкие контрукции были убраны, мобильная база заменена на стазисный отсек, позволяющий замораживать до 3 карбонатов, ровер был оптимизирован под 6 пассажиров. Тесты показали, что он способен развивать до 40 м/с на Кербине. 2 инженера и 1 учёный отправляются на Дюну!

После прошлого поста я решил подойти к задаче с другого конца, а не тащить сразу 1 500 000 тонный астероид на низкую орбиту. 3000 тонный астероид класса В, более-менее успешно вышел на орбиту Кербина, но вот выравнивать наклонение и опускать апоцентр очень сложно. На корабле есть переработчик руды, но он генерирует слишком мало топлива за 1 виток. Но зато САС способна повернуть этот метеорит, так что гиродины всё же что-то могут.

Воодушевившись этим событием я сразу бросился искать класс Е. Тут к задаче надо было подойти основательно и я решил раскошелиться.

В 60-70 годы у США был проект Орион, который предполагал, что использование взрывов термоядерных бомб за кораблём позволит достигать огромных скоростей, вплоть до 5% скорости света.

Расчётный диаметр плиты для корабля составлял всего 100 метров. Максимальная масса определялась как 400 тысяч тонн, из которых 300 тысяч тонн приходились на мегатонные заряды. Взрывая за кормой по мегатонному заряду каждые 3 секунды, корабль мог разгоняться сравнительно быстро. По расчётам Дайсона, при среднем ускорении в 1 g (9,8 м/с²), корабль мог бы разогнаться до скорости 10 000 км/с (3,3% скорости света) за десять дней, и преодолеть расстояние до Альфы Центавра всего за 130 лет. Проект же «Momentum Limited Orion Starship» стоил бы примерно 10% ВВП США за 1968 г.

Двигатель "Орион" стоит примерно 2,5 млн кредитов, столько же стоит запас зарядов. Можно выбрать разный калибр зарядов, но например для выхода на орбиту я потратил примерно 1000 из 20000 маломощных зарядов. В принципе это выгодно, потому что 30-40% всего запаса ускорения с химическими двигателями тратится как раз для достижения первой космической скорости. Но тратить 5 миллионов кредитов на это дело — рисковый проект, поэтому я сделал двигатель съёмным, чтобы потом можно было потом перестыковать его на другой корабль.

Этого было мало. Орион не смог скорректировать орбиту такого огромного астероида, ему не хватало тяги для такой громадины, так что сейчас он мирно кружится на низкой орбите в ожидании будущих проектов.

Я пока не знаю что делать с крупными астероидами, чтобы быстро и легко менять их орбиту. Работаем в этом направлении, возможно попробую плазменные двигатели.

Помимо всего вышесказанного я ещё занимался отправкой пилотируемых исследовательских станций ко всем планетам. Все они имеют одинаковую конструкцию и предназначены для максимального сбора науки из космического пространства вокруг небесных тел без посадки.

Особенно отличился экипаж «Евы-1». Эти 2 безумца вышли на орбиту Гилли, небольшого спутника-астероида. Из-за его размеров ускорение свободного падения равно там в 20 раз меньше, чем на Кербине! По контракту станция должна была кружиться в течение 2 дней на орбите ниже 6000 метров. А теперь посмотрите как это выглядит:

В некоторых местах орбита пересекается с поверхностью планеты(т.е корабль сталкивается)

Удалось подобрать такое наклонение, чтобы не происходила столкновений в ближайшие пару дней. И тут, пролетая всего в 50 метрах от Земли один из кербонавтов вышел в открытый космос, оттолкнулся от станции и приземлился на Гилли.

Он провёл пару экспериментов и сразу взлетел, используя реактивный ранец. Через 5 часов внекорабельная деятельность была успешно завершена.

Восход Евы над Гилли. маленькая голубая точка - Кербин.

Игра называется Kerbal Space Program, является полным симулятором космической программы: конструирование ракет, их пилотирование, контракты, наука, менеджмент кербонавтов. Использую моды KerbalHealth, USI LifeSupport, WildBlueIndustries, Granuus Star System, ReStock, OrbitalColony и другие.

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

Contents

Описание изделия

— Experimental Engineering Group

Использование


Сканер хорошо смотрится на небольшом спутнике размером 1.25 метра, но для работы требуется значительное количество электроэнергии, так что рекомендуется использовать батарейку не хуже Z-1k, или нечто подобное. Потребление энергии недолгое, можно небеспокоиться о генерации и не выводить в космос ядерный реактор. сама по себе деталь не очень тяжёлая, выводите её как обычный спутник. Для передачи данных обратно в КЦ требуется антенна любого типа.

Для запуска пригодятся обтекатели или грузовые отсеки, так как сканер крупного размера и с плохой аэродинамикой. Для нормального функционирования сканер нужно вывести на стабильную полярную орбиту с соответствующей высотой (смотри ниже). После выхода на правильную орбиту, сканер требуется развернуть (кнопка в контекстном меню Deploy Scanner), затем провести сканирование (кнопка в контекстном меню Perform orbital survey). Для одного небесного тела достаточно одного сканирования, которое занимает несколько секунд. полученная информация автоматически передаётся, и передача данных требует большого количества электроэнергии. Результат сканирования можно увидеть в режиме общего обзора карты (по умолчанию клавиша M ) при управлении спутником, или из Центра слежения. Чтобы увидеть результат сканирования в режиме общего обзора карты нужно выбрать в контекстном меню сканера Toggle Overlay. Чтобы посомтреть результат сканирования из Центра слежения выберите небесное тело и затем нажмите на иконку Resources (Ресурсы) в правой части экрана. развёрнутый сканер можно свернуть обратно в транспортное положение опцией Retract Scanner в контекстном меню.

Режим отображения ресурсов можно изменить. Можно выбрать порог (англ. cutoff) отображаемой концентрации (при выборе высокого процента концентрации менее богатые зоны не отображаются), а также стиль и цвет.

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

  • Модуль сканирования поверхности - точная информация о биоме после посадки
  • Узкополосный сканер M4435 - детальная карта участка местности с орбиты

Высота сканирования

Небесное тело Радиус Min. Max.
Кербол 261.1 Мм н/д н/д
Мохо 250 км 25 км 1.25 Мм
Ив 700 км 70 км 1.5 Мм
Джилли 13 км 25 км 65 км
Кербин 600 км 60 км 1,5 Мм
Мюн 200 км 25 км 1000 км
Минмас 60 км 25 км 300 км
Дюна 320 км 32 км 1.5 Мм
Айк 130 км 25 км 650 км
Дрес 138 км 65 км 690 км
Джул 6 Мм н/д н/д
Лейт 500 км 50 км 1.5 Мм
Валл 300 км 30 км 1.5 Мм
Тайло 600 км 60 км 1.5 Мм
Боп 65 км 25 км 325 км
Пол 44 км 25 км 220 км
Иилу 210 км 25 км 1.05 Мм

Максимальная и минимальная высота сканирования зависит от радиуса тела, с фикисированным минимальным значением 25 км, и максимальным 1.5 Мм.

[KSP: RSS] Картографирование Луны Kerbal Space Program, Игры, Длиннопост

[KSP: RSS] Картографирование Луны Kerbal Space Program, Игры, Длиннопост

Почему стартовый стол раздолбан - не знаю, не помню. :)

Параметры ракеты
Масса: 609т (10т ПН)
dV:

16700m/s (с огромным запасом)
Деталей: 102 (со стартовыми фиксаторами)

Внешне может напоминать Протон, но на этом сходство и заканчивается. По бокам ТТРД и они отдельно отстреливаются, оставляя ракету лететь на керосиновых ЖРД.

[KSP: RSS] Картографирование Луны Kerbal Space Program, Игры, Длиннопост

[KSP: RSS] Картографирование Луны Kerbal Space Program, Игры, Длиннопост

[KSP: RSS] Картографирование Луны Kerbal Space Program, Игры, Длиннопост

В качестве маршевых стоят 8 РД-0210. Бустеры процедурные. Округляет орбиту один LR105.

[KSP: RSS] Картографирование Луны Kerbal Space Program, Игры, Длиннопост

Честно говоря, это второй запуск. В первом поставил 2 антенны от Спутника на 400км. Думал, что в последних версиях RemoteTech антеннам позволили работать на любое расстояние, уменьшая лишь пропускную способность. В общем-то, истина рядом: "бафнули" макс. дистанцию в 1000 раз для направляемых антенн и в 100 раз для всенаправленных. Так что после отлета от Земли корабль мирно сдох. :) Пришлось пересобирать, поставив одну направленную и одну omni антенну.

Поскольку эта малявка может работать и как ретранслятор сигнала, на всякий случай добавил лишние

2к дельты для потенциальной коррекции орбиты в будущем. Да и я еще только осваиваюсь в RSS.

[KSP: RSS] Картографирование Луны Kerbal Space Program, Игры, Длиннопост

Перехват корректировал еще на переходной орбите, дабы будущая орбита была полярной и перицентр был в районе 4500км. Чуток попутал: оптимальная высота для сканера - 7500, но с моей высоты он прекрасно все отсканировал.

[KSP: RSS] Картографирование Луны Kerbal Space Program, Игры, Длиннопост

Несмотря на то, что движок самого спутника (Astris) требует утрамбовки топлива перед стартом, дабы в двигатель не попал вакуум (параметр ullage), маневровые движки я на него не ставил. Утрамбовки достигал банальным раскручиванием корабля - стоит один маховик. У движка есть контроль вектора тяги и бесконечное количество включений, так что он отлично останавливает вращение после запуска. :)

[KSP: RSS] Картографирование Луны Kerbal Space Program, Игры, Длиннопост

[KSP: RSS] Картографирование Луны Kerbal Space Program, Игры, Длиннопост

Неспешно сканировал на варпе порядка сотни дней. В награду получил две карты в высоком разрешении и 300 науки.

Карта высот (altitude map):

[KSP: RSS] Картографирование Луны Kerbal Space Program, Игры, Длиннопост

Карта высот немного удивила обилием серого цвета. Объясняется это легендой:

[KSP: RSS] Картографирование Луны Kerbal Space Program, Игры, Длиннопост

Видно, возможно, плохо, но суть в том, что серый цвет - все, что выше 7500-8000 метров над условным уровнем моря. Видимо, разработчик упустил из виду RSS, где другие размеры.

Рельефная карта (slopes map):

[KSP: RSS] Картографирование Луны Kerbal Space Program, Игры, Длиннопост

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

Картографирование небесных тел - мод SCANSat.


Kerbal Space Program

210 постов 1.3K подписчиков

Правила сообщества

- выкладывая свои крафты оставляйте модлист. Если включили такие моды как RO или RP-0, то требуемые для них модификации можно не писать.

- выполняйте правила Пикабу.

- опытные игроки, будьте готовы к тому что в сообществе могут быть новички. Не проявляйте агрессию, даже если что-то вам покажется "нубским".

- у нас не матерятся.

Для сканирования приходиться "проворачивать" орбиту, или на орбиту закинул, развернул и отмотал? Я только восьми процентов добился в случае с Кербином.

В награду получил две карты в высоком разрешении.

Миссию, правда, не засчитали, т.к. по контракту я должен был провести сканирование в низком разрешении.

Немного не понял, у разработчиков мода вышла небольшая логическая ошибка? Просто, по логике вещей, карту в высоком разрешении (допустим, 10 метров на пиксель) можно конвертировать в карту в низком разрешении (допустим, 500 метров на пиксель).

Оборот денег в семье.

Старший сын подарил младшей сестре 5000 руб на днюху(13 лет разница).
Сегодня она подходит ко мне:
- Пап, вот 5000 рублей. И вот мои заказы на али. Это подарки тебе, маме, брату, его жене и их мелкому. Успеют же приехать? Можешь оплатить по карте?
- Конечно, доча.
Оплатил. Деньги взял. Ибо это её решение. Добавлю их в её подарок. Но об этом ей, конечно, не скажу.

Новый Год на носу. Подарки. Берегла эти деньги с апреля. Вот так решила их потратить.

У меня хорошие дети.


Это только начало, кожаные

Это только начало, кожаные


Битва

Битва


Золотой фонд багоделов

Если в ремастере GTA покачивать машиной из стороны в сторону, она увеличивается в размерах.

Семейные ценности

Семейные ценности


Ответ на пост «Про халат»

Сын просил меня пришить на куртку петельку-вешалку. Она не оторвалась, ее изначально не было. А то в техникуме, когда в гардероб сдавал, там ругались, что за капюшон приходится вешать. А у меня все руки не доходили. И вот как-то с работы прихожу, вешаю свою куртку и смотрю - куртка сына на петельке висит. Думаю, неужели сам пришил. Беру его куртку в руки, заглядываю в комнату и спрашиваю: "Ты пришил петельку?" Он с растерянностью во взгляде: "А разве не ты?" В общем гардеробщица пришила сама, видимо ей надоело напоминать всякий раз.


Действительно

Действительно Скриншот, Twitter, Верующие, Апокалипсис, Коронавирус, QR-код

На злобу дня

На злобу дня


Маленький

Маленький

Хороший совет

Хороший совет Twitter, Скриншот, Картинка с текстом, Текст, Совет

Ответ на пост «Не прокатило»


Всем доброго дня! С вами Анна Жаркова, ведущий мобильный разработчик компании Usetech. В феврале 2021 года компания Google анонсировали экспериментальный релиз технологии Kotlin Symbol Processing (совместима с Kotlin с 1.4.30), как более эффективную альтернативу KAPT (Kotlin Annotation Processing Tool). Она сразу привлекла внимание многих разработчиков, помышляющих о внедрении аннотаций в мультиплатформенные проекты, несмотря на рекомендации создателей не использовать ее в продакте. В сентябре вышел первый стабильный релиз, и теперь она официальна готова к работе в боевых проектах.
В этой статье предлагаю рассмотреть нюансы работы с KSP как в приложениях для Android, так и Kotlin Multiplatform.

Итак, начнем с назначения. Kotlin Symbol Processing предназначена для разработки легковесных плагинов компиляции Kotlin и процессоров аннотаций. Последние нас и интересуют. По сути аннотации нужны в приложении для того, чтобы упростить работу и избавить нас от лишнего кода. Например, когда нам нужно проанализировать код для определенной цели и затем сделать какие-то действия. Либо убрать лишнюю абстракцию из приложения. Гораздо привлекательнее выглядит добавить буквально 1 команду над конкретным объектом/методом/типов, и вместо того, чтобы писать тонны бойлерплейта для каждого случая, поручить это библиотеке, которая сделает все сама.

Давайте посмотрим, как работает в своей механике процессор аннотаций. Например, такой, как мы используем в Java коде:


Сначала мы регистрируем процессор для распознавания аннотаций определенного типа. Например, вот таких:

Затем процессор сканирует все исходники на предмет искомых аннотаций. Если такие были найдены, для них запускается работа. Затем полученный код компилируется.
При работе с KSP и KAPT мы не модифицируем текущие файлы, а генерируем новый код, который компилируется с нашими исходниками.

Генерация новых данных с помощью KAPT - это вещь долгая. Все мы знаем, как долго может выполняться задача gradle, когда в нашем коде есть тот же Dagger.
При обработке Kotlin кода с помощью Kotlin Annotation Processing Tool нам нужно сгенерировать Java Stub, которые уже как скомпилированные Java классы использовать при компиляции вместе с остальными исходниками. За счет этого промежуточного этапа весь процесс может занимать довольно много времени, особенно, если мы имеем многомодульное приложение.


В отличие от KAPT в KSP нет никакой генерации Java заглушек. Процессор работает с AST (абстрактное синтаксическое дерево) Kotlin напрямую, что позволяет генерировать сразу Kotlin код, причем сразу именно тот, который мы будем использовать в приложении. За счет этого работа с KSP получается быстрее, существенно эффективнее и чище.

Теперь посмотрим, как работает символьный процессор, и как создать свой. Для этого нам потребуется использовать специальные интерфейсы для провайдера и процессора:

Провайдер (используется для создания процессора) необходимо задекларировать как ресурс:


В самом файле ресурса просто указываем полное имя используемого провайдера.

Перейдем к структуре самого процессора:

Для доступа к исходным файлам и коду используется специальных ресолвер. Полученный код анализируется с помощью механизмов рефлексии Kotlin для получения информации о типах и параметрах, например, в специальном Visitor, имплементирующем KSVisitorVoid:

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

После этого можно генерировать код. Для этого используем библиотеку KotlinPoet. Она позволяет гибко прописать структуру генерируемых классов и метод, включая значения свойств:

Перейдем к практическому использованию KSP. Одним из самых эффективных и ожидаемых примеров работы с данной технологией является Dependency Injection. И не только в Androd, но и мультиплатформенных приложениях. И если в предыдущих релизах (альфа и бета) можно было использовать только в приложениях c таргетами JS и JVM/Android, то с cентябрьского релиза мы можем работать и с Kotlin Native.

В качестве примера я буду использовать свою же библиотеку Multiplatform-DI, но начнем с подключения к Android приложению.

Внутри библиотеки идет работа со специальными контейнерами, в которых сущности-ресолверы управляют хранением ссылок с типом, параметрами и фабриками создания экземпляров типа в тех или иных областях действия (скоупов).


На лицо очень много лишнего кода и нашего труда. Попробуем автоматизировать с помощью аннотаций (спасибо Koin за вдохновение):

Т.е мы сделаем аннотации для скоупов и контейнера и меняем код для регистрации следующим образом:

Кода у нас станет существенно меньше.

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

Текущая версия KSP 1.5.31-1.0.0. Т.к в основе KSP идет JVM, то таргетируем модуль на него. Также подключаем сюда выделенный модуль с теми компонентами, ссылки на которые мы будем использовать для генерации кода. В этом случае di-multiplatform-core. Для работы с ksp используем "com.google.devtools.ksp:symbol-processing-api:$kspVersion". Также нам потребуется KotlinPoet:


Теперь займемся самим провайдером и процессором. Будем использовать свой сканнер и генератор кода:

В сканнере используем ресолвер для анализа и проработки данных. Основной упор на метод getSymbolsWithAnnotation:

Именно такая логика используется для сканирования всех искомых типов:

Более подробно смотрите в исходниках.

Для генерации нам потребуется прописать шаблон с помощью Kotlin Poet. Т.е весь исходный файл с описанием регистрации превращаем в шаблон, куда будут прописываться нужные типы и их параметры:

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