Kos ksp гайд

Обновлено: 05.07.2024

Полная сборка симуляции довольно требовательная к ресурсам компьютера - в основном в плане оперативной памяти (минимум нужно 12 гигабайт ОЗУ). Поэтому попробовать процесс симуляции можно на стоковом KSP с минимальным набором нужных модов.

Содержание

Необходимое ПО

  • Kerbal Space Program 1.6.0+ [1].
  • KSPTOT 1.6.0+ [2].
  • Putty [3].
  • Zello - mobile push-to-talk рация (или настоящая рация).

Необходимые моды

kOS скрипты

  • kos/warput из архива.
  • kos/res из архива.

Стартовый сейв для KSP

Шаблоны для Mission Architect

ma/duna-depature.mat из архива. ma/duna-correction-burn.mat из архива.

Установка КСП

Купите KSP в одном из магазинов (Steam, GOG, cайт разработчиков) и установите на ваш компьютер. Запомните путь к папке, куда была установлена игра (далее он будет указываться как $KSP_PATH).

Установка начального сейва симуляции

  1. Запустите KSP
    1. В главном меню выберите "Начать игру"
    2. Далее выберите "Новая игра"
    3. Выберите тип игры "Песочница", название "Симуляция"
    4. Нажмите "Пуск!"

    Установка KSP TOT

    • Скачайте архив с релизом KSP TOT под вашу версию KSP. Распакуйте архив в удобную вам папку.
    • Кроме программы KSP TOT в этом же архиве лежит плагин KSPTOTConnect.
    • Скопируйте сценарии duna-depature.mat и ma/duna-correction-burn.mat из папки ma архива в папку KSPTOT.

    Установка модов

    Скачайте архив с релизом kOS под вашу версию KSP. Распакуйте архив в папку $KSP_PATH. Скопируйте папку GameData из папки куда разархивировали KSP TOT в папку $KSP_PATH.

    Установка скриптов kOS

    Скопируйте файлы warpup и res из папки kos из архива в папку $KSP_PATH/Ships/Script.

    Перед вами длиннопост, в котором подробно рассказано, с чем нужно есть такой мод как kOS.
    Данный гайд является точным переводом официальной документации за авторством erendrake'а. Ничего не было привнесено, по возможности сохранена стилистика повествования автора. Критика, как и замечания от GrammarNazi приветствуются (в разумных пределах :)).

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

    Первые шаги в kOS

    Гайд по быстрому старту в Kerbal Operating System.

    (Этот документ написан для тех, кто только начинает использовать kOS. Предполагается, что вы уже играли в KSP и знаете как управлять ракетой в ручном режиме. Кроме того, НЕ предполагается, что вы гуру программирования, так что вам будут рассказаны некоторые базовые первые шаги).

    Первый пример: Hello World

    Согласно великой традиции учебников по программированию, первый пример будет посвящен написанию скрипта, который не делает ничего, а лишь выводит на экран надпись "Hello World". Цель этого примера - показать, куда следует помещать файлы, как обращаться с ними и как запускать их на корабле.

    (Вы можете использовать kOS и в режиме карьеры, но необходимые детали не доступны на старте и их придется изучать, так что пример использует режим песочницы для упрощения).

    Первые шаги в kOS (учебник)

    Соберите корабль, содержащий непилотируемый командный модуль, батарею на несколько сот единиц заряда, что-нибудь, что позволит заряжать батарею, например, солнечные батареи, и "Comptronix CX-4181 Scriptable Control System". (С этого момента и далее для краткости будет обозначаться как "SCS".) SCS располагается во вкладке "Control" в редакторе (там же, где трастеры RCS и гироскопы).

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

    Кликните правой клавишей мыши (ПКМ) по SCS на корабле, а затем нажмите кнопку "Open Terminal".

    Обратите внимание, что если терминал полупрозрачный, значит в данный момент он не выбран. Если вы щелкните по терминалу мышкой, то все, что вы будете вводить с клавиатуры будет направлено в терминал, а НЕ на управление кораблем. Другими словами, если вы будете нажимать WASD, вы получите слово "wasd" на терминале, не смотря на то, что эти клавиши должны управлять кораблем. Что бы переключиться на ручное управление игрой, а не ввод в терминал, щелкните мышью где угодно вне окна терминала.

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

    (Не забудьте точку! Все команды kOS должны заканчиваться точкой. Опять же, kOS не обращает внимания на регистр вводимого. Хоть капс зажимайте.)


    Сейчас вы должны увидеть окно редактора, выглядящее примерно так (только без текста внутри, ведь вы создаете пустой файл):

    Введите следующий текст в окно редактора:


    Вы увидите выполнение программы, как на картинке ниже.

    Что бы посмотреть, где программа "HELLO" сохранена, исполните команду "LIST FILES":
    (Имейте ввиду, что стандартный вывод для команды LIST это именно вывод списка файлов, так что если хотите, можете опустить слово "FILES".)


    Выглядеть это должно примерно так:

    Это список всех файлов на выбранном в данный момент томе (VOLUME). По умолчанию, когда вы запускаете новый корабль, текущий том будет назван "1", и это том, который хранится на ТОЙ части SCS, на которой вы выполняли все эти команды.

    Это локальный том (локальный жесткий диск, если угодно) конкретно этой SCS. Локальные тома, как этот, как правило, сильно ограничены в объеме хранимых данных. Это хорошо видно в графе Free space remaining текущего вывода.

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

    Да. Да, это возможно.

    Есть другой том, который существует всегда. Он есть Архив (Archive), он же том 0 (Volume 0) (оба названия могут быть использованы в программах). Концептуально Архив хранится где-то на Кербине, в KSC, а не на вашем корабле. У него бесконечный объем и он не исчезнет вместе с вашим кораблем. КРОМЕ ТОГО, он существует вне зависимости от сохранения - если вы запустите одну сохраненную игру, поместите файл в Архив, а затем запустите другую сохраненную игру, в ней тоже будет этот файл.

    Что бы использовать архив, сначала нужно представить вам новую команду: SWITCH TO. Команда SWITCH TO позволяет выбрать том, с которым вы будете работать.

    Что бы работать с архивом и создать новый "hello world" там, исполните следующие команды и посмотрите, как они работают:
    Но где же оно хранится за кадром? Архив на данный момент несколько нарушает общий дизайн модов KSP, которые хранят все свои данные в папке GameData. Архив kOS на данный момент хранится в папке Plugins/PluginData/Archive домашней директории KSP, не в GameData.

    Если файл сохранен в Архиве, он может быть отредактирован в любом внешнем текстовом редакторе на ваш выбор вместо использования внутриигрового редактора kOS. Обычно, это гораздо лучшее решение, если вы начали делать с помощью kOS что-то более-менее сложное. Так же вы можете создавать новые файлы в папке архива. Просто убедитесь, что они заканчиваются расширением *.txt, иначе kOS их не увидит.

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

    Этот пример покажет самое простое, самое основное использование kOS, просто что бы было с чего начинать. В этом примере мы напишем программу, которая будет запускать корабль, используя все более и более сложные проверки. kOS может быть использован на любой стадии полета корабля - запуск, вывод на круговую орбиту, стыковка, посадка… и по сути, запуск - это одна из самых простых задач пилотирования, которые могут быть выполнены без необходимости сильной автоматизации. Где kOS действительно засияет во всей красе, так это в реализации чувствительных задач, таких как посадка, или стыковка, или выдерживание высоты. Это задачи, в которых молниеносная реакция компьютерного скрипта может принести реальную выгоду.

    Но в этом примере мы просто покажем, с чего вы можете начать - мы напишем пример запуска.

    • Используются ТОЛЬКО жидкостные двигатели. В этом примере будет предполагаться именно этот случай. kOS может работать и с твердотопливными ускорителями, но ради простоты примера, мы будем использовать только жидкостные.
    • Правильный список ступеней. (Убедитесь, что вам не нужно вручную кликать правой клавишей по частям, что бы запустить следующую ступень, а так же нет нужды для этого использовать Action Groups).
    • Убедитесь, что корабль имеет достаточные средства стабилизации, что бы не болтаться сильно.
    • Корабль должен содержать, по меньшей мере, следующие детали:
      • Батарея, емкостью не менее 400 единиц
      • Возможность зарядки, эквивалентная хотя бы 6 солнечным панелям или одному РИТЭГу
      • Деталь kOS SCS где-то ближе к верхушке, где она не будет отстрелена вместе с одной из ступеней

      О'кей, наберите нижеследующие строки во внешнем текстовом редакторе на ваш выбор (т.е. Блокнот в Windows или TextEdit на Mac, или любом другом, на вашу фантазию).
      Видите эти штуки с двумя слэшами ("//")? Это комментарии на языке Kerboscript, и это способ написать строки в программе, которые ничего не делают - они там для людей, таких как вы, которые хотят понять, что вообще происходит. В этом примере, в общем-то, нет необходимости набирать то, что отмечено двумя слэшами. Они там лишь для удобства вашего чтения, и вы можете их пропустить, если хотите.

      Сохраните файл в папке Plugins/PluginData/Archive (там, где установлена ваша KSP) под именем "hellolaunch.txt". НЕ сохраняйте его нигде внутри GameData/kOS/. НЕ СТОИТ. Согласно стандарту, нормальные моды для KSP должны хранить свои файлы в GameData/[имя мода], но kOS хранит архив вне папки GameData, потому что там лежат данные игрока - ваши данные, а не данные мода.

      Сохраняя файл в Plugins/PluginData/Archive, вы, вообще говоря, сохраняете их на вашем архивном томе. kOS увидит его немедленно и без задержки, и вам не нужно перезапускать игру. Если вы напишете
      после сохранения файла в вашем текстовом редакторе, вы увидите ваш "hellolaunch.txt". (Вне игры ваш файл должен иметь расширение *.txt, но в игре вы не увидите его расширения.)

      O'кей, теперь скопируйте файл на ваш локальный привод и попробуйте запустить его оттуда.


      Пока ваша программа не делает ничего, кроме обратного отсчета от 10 до 0. Немного разочаровывающе, но мы ведь еще не написали оставшуюся часть.

      Вы, наверное, обратили внимание, что все, что вы сделали - это переключились на локальный том (1), затем скопировали программу из архива (0) на локальный том (1), и только потом запустили ее с локального тома (1). Технически, в этом нет необходимости. Вы вполне можете запускать программы прямо из архива. Но для тех, кто ищет от KSP ролевой составляющей, имеет смысл никогда не запускать программы прямо из архива, а, вместо этого, копировать их на корабль для запуска.

      О'кей, идем обратно в текстовый редактор и добавляем еще несколько строк в "hellolaunch.txt" так, что бы теперь он выглядел вот так:
      Сохраните измененный "hellolaunch.txt" и заново скопируйте его на ваш корабль, который должен все еще стоять на стартовом столе, а потом запустите, примерно так:


      Эй! Теперь оно что-то делает! Оно запускает первую ступень и стартует!

      Но… Но подождите… Он ведь не контролирует положение ракеты и она летит куда ей вздумается…

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

      Легкий способ контролировать рулевое управление - использовать команду LOCK STEERING.

      Способ использования команды LOCK STEERING заключается в штуке, которую называют [url=http://]вектор[/url] (VECTOR) или [url=http://]направление[/url] (DIRECTION). В kOS встроены некоторые направления, одно из которых есть "UP" (вверх).

      "UP" - это направление, нацеленное всегда в небо (центр голубой части навбола).

      Что бы быть направленным всегда вверх, просто сделайте следующее:
      Так что если вы добавите эту строчку в ваш скрипт, вы получите нечто, что удерживает вашу ракету всегда направленной вверх и не дает ей отклоняться. Добавьте эту строку сразу после строки, задающей тягу, примерно так:
      Как и всегда, скопируйте это и запустите. Если ваша ракета упала во время предыдущего запуска (а она скорее всего это сделала), просто вернитесь (revert) в VAB и перезапустите ее.
      ЗАМЕТКА: Из-за некоторых багов, иногда перезапуск со стартового стола (revert to the launchpad) работает не вполне корректно и нужно перезапускать из VAB.


      Логика того, когда и как запускать ступени может быть интересной и забавной штукой для самостоятельного написания. Этот пример сохранит ее очень простой, и здесь как раз важно, что бы ваша ракета содержала только двигатели на жидком топливе. Если ваша ракета содержит ТТУ, для корректного запуска вам понадобится более сложный скрипт, чем дает этот учебник.

      Что бы добавить логику отстрела ступеней мы представляем новую концепцию, называемую триггером "WHEN" (когда). Что бы увидеть полную документацию по ней, когда вы закончите этот учебник, посмотрите [url=http://]страничку "Управление потоком"[/url].

      Быстрое и простое объяснение: WHEN-секция - это короткая секция кода, которая будет выполнена ПОЗЖЕ, чем прямо сейчас. Она создает фоновую проверку, которая будет постоянно проверять выполнение некоторого условия, и когда оно будет выполнено, основная программа будет прервана, что бы она ни делала, и будет исполнено тело WHEN-секции кода, после чего будет продолжено выполнение основного текста программы.

      С использованием WHEN-триггеров связано несколько сложных опасностей, которые могут привести к подтормаживанию и полному зависанию KSP, если вы будете неосторожны, но их объяснение выходит за рамки этого учебника. Но если вы собираетесь использовать WHEN-триггеры самостоятельно, вам стоит прочитать секцию об этом операторе на [url=http://]страничке "Управление потоком"[/url].

      WHEN-триггер, который мы добавим к нашему скрипту выглядит примерно так:
      Здесь сказано: "Когда количество жидкого топлива в текущей ступени будет настолько мало, что его может уже и не быть (<0.001), нужно активировать следующую ступень". Ключевое слово PRESERVE говорит: "Не прекращать проверку этого условия просто потому, что оно уже однажды сработало. Проверять нужно и дальше, до судного дня".

      Теперь ваш скрипт должен выглядеть так:

      Опять перезапустите ракету, скопируйте скрипт и запустите его.


      На этот раз вы должны увидеть как активируются ваши верхние ступени. (Опять же, если предположить, что вы сделали всю ракету только на жидком топливе).

      О'кей, все это круто, но оно все еще летит по прямой верх! Как быть с гравитационным поворотом?

      • Летим прямо до высоты 10000 метров.
      • Поворачиваем на 45 градусов вниз на восток до высоты в 40000 метров.
      • Ускоряемся горизонтально на восток после этого.

      Комбинируя это с командой WHEN мы получим следующий фрагмент кода:
      Обратите внимание на отсутствие здесь команды PRESERVE, в отличие от предыдущего примера с WHEN. Это потому, что нам этот триггер нужен только один раз и больше никогда не понадобится. Нет никакого смысла напоминать kOS сбрасывать положение к одному и тому же значению раз за разом, пока выполняется скрипт.

      Теперь если вы вставите этот новый фрагмент в скрипт, мы получим миленький и стильненький пример запускающего скрипта. Обратите внимание, что этот фрагмент кода будет работать даже если вы вставите его в начало скрипта, потому что он задает триггеры, которые сработают ПОЗЖЕ, когда будет выполнено условие. Триггеры не будут выполнены вотпрямщас.


      Вот как это выглядит в действии:


      И до самого конца:

      Если предположить, что вы сделали корабль, у которого достаточно топлива и энергии, что бы взобраться на орбиту, в принципе, этот скрипт вытащит вас из атмосферы. Скорее всего, корабль все равно упадет обратно, потому что скрипт никак не убеждается в том, что корабль набрал достаточную для поддержания орбиты скорость.

      Raw Text KerboScript files These files contain KerboScript text commands, as if you had typed them directly into the terminal. They are easily read, written, and edited by humans. These files traditionally have a ".ks" extension, however it is not required. Compiled Machine Language Files These files contain encoded and compressed machine language opcodes. They are not formatted to allow humans to read, write, or edit the files. These files traditionally have a ".ksm" extension, however it is not required.

      KerboScript Machine Code An explaination of how scripts are compiled, as well as an explaination of how COMPILE stores opcodes. Filename Warning Warning detailing issues with case sensitive host file systems.

      If you attempt to run the same program twice from within another script, the previously compiled version will be executed without attempting to recompile even if the original source script has been modified. However once the program has finished executing and returns to the main terminal input, the memory containing the programs is released. This means that every time that a script file is run from the terminal it is recompiled, even if the script file has not changed.

      Run Functions¶

      Changed in version 1.0.0: The RUNPATH and RUNONCEPATH functions were added in version 1.0.0. Previously, only the more limited RUN command existed.

      RUNPATH or RUNONCEPATH take a list of arguments, the first of which is the filename of the program to run, and must evaluate to a string. Any additional arguments after that are optional, and are passed in to the program as its parameters it can read:

      RUNPATH or RUNONCEPATH can also work with any expression for the filename as long as it results in a string:

      Run Keyword¶

      You should prefer RUNPATH over RUN

      Due to a parsing ambiguity issue, it was impossible to make RUN work with any arbitrary expression as the filename without changing its syntax a little in a way that would break every old kOS script. Therefore it was deemed better to just add a new function that uses the new syntax instead of changing the syntax of RUN .

      The RUN keyword is only capable of using hard-coded program names that were known at the time you wrote the script, and expressed as a simple bare word or literal string in quotes. For example, you can do this:

      If you wish to pass arguments to the program, you may optionally add a set of parentheses with an argument list to the end of the syntax, like so:

      Details Of Running Programs¶

      Automatic guessing of full filename¶

      Arguments¶

      Although the syntax is a bit different for RUN versus RUNPATH (and RUNONCEPATH ), all 3 techniques allow you to pass arguments into the program that it sees as its main script parameter values.

      The following commands do equivalent things:

      Then inside AutoLaunch.ks, final_alt would be 75000 , and do_countdown would be true , and message would be "hello" .

      © Copyright 2013-2021, Developed and maintained by kOS Team, Originally By Nivekk.

      What it does¶

      kOS introduces a few new parts that each contain a simulated computer capable of running programs written in its own scripting langauge called kerboscript. The computer has powerful smarts built in to the hardware that allow it to do complex spacecraft operations in one command, thus making it possible to make complex programs with only a few lines of script text.

      Get me Started!¶

      There is a quickstart tutorial for people new to kOS that gets you off the ground with a very simple launching script, sufficient to be an introduction for people new to the mod. Go ahead and give it a try .

      Installation¶

      Like other Kerbal Space Program mods, simply copy the contents of the zip file into your Kerbal Space Program folder, where it will install into your GameData folder.

      Documentation¶

      Online Community¶

      kOS has an active community of users willing to help each other with ideas and algorithms.

      History¶

      kOS was originally begun as a mod by a single author, Kevin Laity aka Nivekk. Although the project has undergone massive changes since then and now has a very different underlying archetecture and is under active development by a different set of people, none of that would have been possible without his original vision and work.

      © Copyright 2013-2021, Developed and maintained by kOS Team, Originally By Nivekk.

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