GithubHelp home page GithubHelp logo

my-th-os / kml Goto Github PK

View Code? Open in Web Editor NEW
36.0 7.0 7.0 13.69 MB

Kerbal Markup Lister - A persistence file editor for Kerbal Space Program

License: GNU General Public License v3.0

C# 100.00%
ksp kerbal-space-program kerbalspaceprogram

kml's Introduction

KML - Kerbal Markup Lister v0.9.4 - 2023-04-21

A persistence file editor for Kerbal Space Program

KSP Forum: http://forum.kerbalspaceprogram.com/index.php?/topic/133971-win-kml-persistence-file-editor/

Do you face a problem with broken docking ports or need just a little fuel-cheating? Do you got tired of editing save games in a text editor with long loading time and so much scrolling to compare different parts and vessels? So did I and decided to make a more helpful external editor to display the XML-like structure (the "KML" - Kerbal Markup Language) in a tree view and pick out vessels, kerbals and parts to be displayed in more eye-candy way.

The current version is almost feature-complete and functional, and already helps with quite a few problems (or some cheating if you choose to do so).

Any feedback, more testing, bug reports and suggestions are very welcome.

Sceenshots

New Features

  • CLI selected warning like -ws=0 shows source node - for darthgently
  • CLI shows all sources nodes for each warning with multiselect -wm=*
  • GUI and CLI always name 2 nodes in warning message, even if it is about an attribute

Features

  • open SFS and CRAFT files
  • save files edited or exactly as loaded
  • backup of overwritten files
  • display file structure in a "KML" tree
  • display all vessels in a sorted and filtered list
  • display all kerbals in a sorted and filtered list
  • display vessel's part attachment structure
  • display warnings about structural problems
  • search for nodes, attributes and their content
  • adding, inserting and deleting nodes and attributes
  • change position of nodes (except parts) and attributes
  • copy & paste of nodes and attributes
  • deletion of parts will fix part indices and connections
  • deletion of kerbals and vessels will fix crew assignment
  • support renaming kerbals when assigned
  • send kerbal home to astronaut complex
  • send vessel to low kerbin orbit
  • repair broken docking ports and grappling devices
  • repair broken ID references in contracts
  • refill part resources
  • change vessel flag in all its parts - for Enceos
  • list all GameData dirs used by vessel parts - for TheCardinal
  • CLI mode for basic editing and repairs
  • tested with KSP 1.0 to 1.12 (newest KML version should still work with at least all these KSP versions)

TODO

  • identify add-on part connections (only a little KAS support for now)
  • more testing (uncommon vessel builds I didn't think of?)
  • support multiple docking ports per part
  • documentation
  • a lot of source code TODOs

Install

Windows
  • download KML_Windows.zip and extract anywhere you want
  • run the KML.exe and open your save file
  • or choose "open with" on your save file and select KML.exe (command-line arguments supported)
Linux, Mac
  • need to have Mono installed
  • download KML_Mono.zip and extract anywhere you want
  • run the KML.exe command-line from the terminal of your choice

Instructions, Hints, FAQ

  • Don't find your vessel in the tree (ordered by in-game creation)? Switch to the "vessels" tab to have a sorted list and the possibility to filter by type (debris, ship, etc.).
  • Don't find your kerbal in the tree? There's also a sorted and filtered list in the "kerbals" tab.
  • Want to see how the parts of your vessel are connected? Have a look on the graph displayed in the "vessels" tab.
  • What do the colored lines in that part graph mean?
    • Dark green line is a node attachment in top/down direction
    • Light green is a node attachment in front/back or left/right direction
    • Yellow line is a surface attachment
    • Blue line is a docking connection
  • If parts are arranged in a way you can't see where the connections go, mouse over the part and they are drawn thicker.
  • After you found your vessel, kerbal or part in the list you want to see it in the tree? Just make a double click.
  • Sometimes there appears a warnings tab, what do these warnings mean? Some KML elements are more heavily inspected than others, like vessel parts and especially docking or grappling devices. If something is not as expected there is a warning generated.
  • There is a warning but my save game works fine! If the problem is related to stock parts please send me feedback about this problem. If KML has warnings about add-on parts not connected (e.g. KAS): That's ok for now, KML does not support that add-on and can't understand what it has written to the save file. KML just expects all parts to be somehow connected and gives a warning otherwise.
  • Don't fear about saving a file with warnings, unknown add-ons, missing part-connections, etc. KML will save the file as it was read and only apply the changes you made. All unknown data will be kept as it was.

Command Line Interface

When you download the KML_Mono.zip, you will get no graphical user interface (GUI), but only a command line interface (CLI). The benefit of this version is that it runs on Windows, Linux and Mac. The latter need to have Mono installed.

The full Windows version KML_Windows.zip includes the GUI and a CLI. To access the CLI, you just call it with any dashed argument.

$ ./KML.exe --help
KML: Kerbal Markup Lister 0.9 © 2021 Oliver Pola (Mythos)
Use: KML [Opt] <save-file>
Opt: --tree             | -t : List tree
     --vessels          | -v : List vessels
     --kerbals          | -k : List kerbals
     --warnings         | -w : Show warnings
     --repair           | -r : Repair docking and contract problems, includes -w
     --select           | -s : Show numbers, select one by -s=<Sel>
     --multiselect      | -m : Select all occurences by tag/name, includes -s
     --version               : Show version and check online for updates
     Actions on selection, need -s=<Sel> or -m=<Sel>, only one of:
     --export=<file>         : Export selection, no -m, defaults <file> to stdout
     --import-replace=<file> : Import file to replace selection, no -m
     --import-before=<file>  : Import file as new before selection, no -m
     --import-after=<file>   : Import file as new after selection, no -m
     --delete                : Delete selection, -m is allowed
Sel: < number | tag-start | name-start >[/Sel]
     Only in tree you can select by tag or go deep into hierarchy

What most users need, is to check for warnings (change path to KML.exe and *.sfs to your situation)

$ ./KML.exe saves/test/persistent.sfs --warnings

and then repair docking and contract problems automatically.

$ ./KML.exe saves/test/persistent.sfs --repair

To learn more, check the COMMANDLINE.md introduction.

Developers

  • Mythos (initiator, maintainer)
  • pamidur (contributor)

kml's People

Contributors

my-th-os avatar pamidur avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

kml's Issues

No GUI on Mono under Linux

Since this is a .Net program, it should be fairly easy to limit it's subset of .Net routines in order to run on Linux and Mac, thus allowing just about anyone using KSP to run the program.

So fixing this by replacing any calls not support by Mono with those that can be would allow players on any platform to run this tool.

Please implement part deletion

Hi, first of all thanks for your amazing Tool! It is very helpful in various situations.

However, for me, it would be even more helpful if part deletion were a thing. Is it possible to implement that?
What would be needed to do that? In your forum post, you mentioned:

parts (need to rebuild index numbers and attachments)

What exactly does this refer to? I understand the index numbers, but what do you mean about the attachments?
Also, could there be other issues that could arise from part deletion?

I might be able to help here, but I am unfamiliar with your code (although it looks very very clean, congrats on that ;) )

Add more info to warning lines to make it less ambigous and problems directly addressable

Specifically, uid of part in warning entry would allow searching within the savefile to the specific craft and part directly.
Maybe craft name would be nice but not necessary. For context I am only using the CLI mono version and only plan to use this version as it it can be driven by script with low overhead. So the request is for mono version. As far as I know the GUI version may already address this in another way.

srfn third parameter support

Since 1.7.3, I've noticed a third parameter appearing in the sfrn parameter list in some modules. I believe it is some sort of collision model function.

Example: srfAttach, 80,COLLIDERADAPT

This is causing KML to not read the surface attachment node properly and causes incorrect parent node adjustments on node insert and delete. Attached is a zip file containing a modified KmlPart.cs that resolves the problem for me and a sample persistent.sfs file with a problematic ship in orbit around Kerbin.

submission.zip

The changes implemented include the following.

  • a string variable AttachedToSurfaceCollider

  • changes to the srfn processor code in the Add function to check for a third element in items[] and then processing the index value and copying the collider value to the AttachedToSurfaceCollider variable

  • Changes to the srfn processor code in the ReIndexStructureForPartDeletion function to detect the third parameter and preserve it.

  • Changes to the srfn processor code in the ReIndexStructureForPartInsertion function to detect the third parameter and preserve it.

These changes appear to work properly for my issues with the third parameter and for .sfs files that don't have the third parameter.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.