Jump to content

[WIP][TOOL]OMNI:interface for kerbal space port, automatic mod update,mod managements


Recommended Posts

update: some friends desided to suddenly have a surprise visit, that means no coding for me until the weekend, i am sorry but i will have to push back the release date for a few days

update 2: friends have finally went away, i have resumed coding

KSP Omni Tool 2.0[Currently in development]

ETA: 25th March for initial release

KSP Omni Tool is a tool for managing, installing and auto-updating mods, it is basically like app store for KSP

the biggest feature of OMNI is it's seamless integration of Kerbal Spaceport, this allowed several features:

- Automatic mod updating

- Easy installation of Kerbal Spaceport mods

- app store-like experience when browsing for mods with OMNI

of course the tool also supports other mods downloaded from elsewhere as well as already installed mods

OMNI essentially could do most things (if not every!) other mod managers could do but more! (if you haven't guessed yet, automatic mod update is my big selling point)

some eye candy:

b36nbAQ.pngIQSpXaY.png1jtQufO.png8dnP0TV.pngokPXqyy.png

for full rez image see here

when you browse to a mod, this is what you get

uZQ5sdB.png

it couldnt get simpler, just click on install and you are done! (and have i mentioned? the mod auto updates!)

Features

-works with any version of KSP

-easy one click install for both the mod manager itself and mods

-simple and easy to use mod management features (add, remove, rearrange, rename and so on)

-works with most zip archive formats (including: zip, rar, 7z, tar.gz, anything)

-auto detects preinstalled mods and adds them to the mod manager

-auto updates mods installed from kerbal spaceport

-auto updates the OMNI client

-seamless integration of kerbal spaceport, what you can find from kerbal spaceport, you could find here

-intuitive experience when browsing mods

-mods could be queued for download and install

-OMNI utilises multithreading, hence it should be much quicker when downloading and installing mods

-and many more small features around the place

Technical Things

Omni:

-development began on the 13th of March 2014

-is written in VB.NET, hence it requires the .Net framework 4.0

-handles the mod browsing and mod installation in an OOP manner

-deals with file compression/decompression by implementing 7zip, hence it should be faster and more efficient that most other mod managers out there

-is multithreaded, the program itself should run faster than anything out there

here's a time lapse at 50000% speed of me coding, the video is condensed from 26 hours of pure coding time to 2 something minutes

Some dev notes

-03/22/2014: found a minor memory leak problem when opening new tabs, turns out my IDisposable implementation wasnt spot on, it was swiftly fixed and i will check my memory levels in the future to prevent the same from happening

FINALLY: this program is still a work in progress! everything here is subjected to change, there are no downloads over here yet, check out the ETA at the top of the page

Edited by thelegendaryblah
Link to comment
Share on other sites

Oh my gosh......you sir, are amazing. This mod is what every mod user ever has been wanting for forever. Squad should really put this as a modding monday. everybody needs to know about it. You have definitly earned the title "legendary"

Link to comment
Share on other sites

thanks for the response everyone, 80% of the program is actually already finished (turns out HTML and CSS phrasing isnt that hard after all), now im mostly working on old code refactoring/optimising (this was a derilict project i left behind a year ago before the forum migration) and managing errors for certain exceptions (interfacing your program with a website is no child's play!), to clarify, i feel this is more of a tool instead of a mod, but i guess its close...

Link to comment
Share on other sites

Looking really really good!

Can't wait, might be what I need haha (running about 42 mods)

For updating, I'm assuming that it checks for updates when it runs?

Also, will it just auto update, or go "There are updates avaliable! would you like to update?"

Also! from the quick look at the screenshots, you open 'tabs' for mods to install etc, how are you going to handle a lot of tabs?

if you close tabs for mods you have installed, is there a way to quickly re-open them? (like a page of installed mods or something?)

(I'm an IT graduate, so my curiosity wins xD)

So it loads the webpage in its backend and trawls the html to get the information and download link and all that?

Curious how you did the downloading, although haven't really looked into downloading things via programs myself xD

Link to comment
Share on other sites

hello keio, im glad you are interested, here are my answer to your questions in part:

For updating, I'm assuming that it checks for updates when it runs?

Also, will it just auto update, or go "There are updates avaliable! would you like to update?"

there is a setting for updates to either disable updates completely, notify the user and ask for permission to update, or just update automatically

Also! from the quick look at the screenshots, you open 'tabs' for mods to install etc, how are you going to handle a lot of tabs?

if you close tabs for mods you have installed, is there a way to quickly re-open them? (like a page of installed mods or something?)

for the "too many tabs problem, i think i will problably add a ~12 character limit to the tab texts, by the way, the whole thing is resizable so it shouldnt be too much of a problem. and yes there is a page of installed mods for quickly accessing them so you could quickly re-open them from there, but there is no "recently closed tabs" like the ones in firefox or opera

So it loads the webpage in its backend and trawls the html to get the information and download link and all that?

yes basically there is a WeBrowser control in the background, this works for getting all the mod names, informations and whatnot, but unfortunately, the big red download button on a kerbal spaceport page is a css button, hence, i ID the HtmlElement of the button in the page and then invoke("submit") it, then catch a WebBrowser.Natvigating event with a handler and get the uri from the EventArgs, that uri would be the download link.

Curious how you did the downloading, although haven't really looked into downloading things via programs myself xD

i use .net to write this program, so there's WebClient.DownloadFileAsync which is relatively easy to implement if you are familiar with any of the visual languages(visual c++, c#, vb.net)

Edited by thelegendaryblah
Link to comment
Share on other sites

How are you going to handle mod updates that either break the game or are corrupt or broken in some way? I suggest update alerts with an option to install or not, along with backups and revert function.

that is a good idea, i will implement that as an option that is enabled by default

on a side note: the spaceport is currently down, development had to stop for now, i hope it get back online soon, i also heard news of a spaceport 2.0 that is coming soon, that kinda makes me sad since i would have to redo all the interfaces for the HTML code

Link to comment
Share on other sites

-snip-

i use .net to write this program, so there's WebClient.DownloadFileAsync which is relatively easy to implement if you are familiar with any of the visual languages(visual c++, c#, vb.net)

oh cool. Yea, done a bit of C# myself (although specialise more in Java, php, etc)

Another quick question.

I'm assuming this relies on the GameData install method? (i.e. mod folders being put in /GameData/ )

What happens with mods like the Kerbal Squad Texture Reduction were you need to throw a particular file in a different location, then run it, then overwrite some of Squads default files?

Link to comment
Share on other sites

-snip

nice, i always loved to hate java (man how much i hate JVM!), took 3 java classes in college and stoppped right there (they were called CS1A, CS1B and CS1C in my college). i never got over the performance issues before java implemented JIT

for your question, i have to break it down into 2 parts to explain it

What happens with mods like the Kerbal Squad Texture Reduction were you need to throw a particular file in a different location

i take it you mean the .bat file that is supposed to be ran. OMNI cannot handle anything fancy like that, nor could it handle other similar things such as the KSP multiplayer server (the client is fine though), i just dont see any way in implementing things like that into the program. maybe it is something i could work on in the (probably distant) future

overwrite some of Squads default files?

if a mod overwrites any existing file, the existing file is backed up, the mod loading stack does the mod loading dynamically.

if a mod that is supposed to overwrite a file was removed, the "overwritten" file would be returned from its backup location, this works for multiple mods as well (for example, a lot of mods uses the toolbars plugin .dll for its GUI)

EDIT: it is worth noting that unfortunately this method of mod loading takes up more space than just doing it by hand since it would be inevitable for duplicate files to show up, but i guess no one really cares nowadays about storage anyway

Edited by thelegendaryblah
Link to comment
Share on other sites

nice, i always loved to hate java (man how much i hate JVM!), took 3 java classes in college and stoppped right there (they were called CS1A, CS1B and CS1C in my college). i never got over the performance issues before java implemented JIT

Haha yea, java can be a b***h xD

Although the one thing java did for me that C# didn't was teach me how OOP works properly xD

(everyone in my C# class did psudo-oop or just straight coding, rather then actual proper oop hahaha)

I stick with web development primarily lol

if a mod overwrites any existing file, the existing file is backed up, the mod loading stack does the mod loading dynamically.

if a mod that is supposed to overwrite a file was removed, the "overwritten" file would be returned from its backup location, this works for multiple mods as well (for example, a lot of mods uses the toolbars plugin .dll for its GUI)

EDIT: it is worth noting that unfortunately this method of mod loading takes up more space than just doing it by hand since it would be inevitable for duplicate files to show up, but i guess no one really cares nowadays about storage anyway

Space is a concern for some people, but not too many nowadays.

ok, cool, that should work :)

thanks for the info ^^

Link to comment
Share on other sites

working on a new control type that should be better than the plain old listview or treeview

the one on the left (i hope) is clearly better/more intuitive

fVWmtyu.png6iC1WAC.png

this is all work in progress so everything is probably subject to change/modification

i currently am thinking of implementing a way to allow mods posted in the forums to be downloaded as well (since the spaceport is currently such as mess), but that will have to be sorted out and probably wont be a feature for my initial release, i could probably implement auto update for mods downloaded from the forums as well, by checking the author's thread for any updates, we will see

man it is very hard to aviod feature creep, on your first release, lets hope my program come out alright

Link to comment
Share on other sites

that is a good idea, i will implement that as an option that is enabled by default

on a side note: the spaceport is currently down, development had to stop for now, i hope it get back online soon, i also heard news of a spaceport 2.0 that is coming soon, that kinda makes me sad since i would have to redo all the interfaces for the HTML code

I wouldn't worry about Spaceport 2.0. The person that was making that is longer with Squad (sadly). Good luck with the project!

Link to comment
Share on other sites

im currently polishing the program (refactoring some junk codes and working more on the look of the interfaces) as well as setting up my web server for download/autoupdate settings

i will probably do some work on my patcher later in the afternoon. should be done by tonight and it will be released tonight (or maybe midnight next morning) as an open beta period for a week in this section of the forum (addon development), if everything is running ok and no serious bugs are found, then i will release it offically over at the tools and applications section.

man i am feeling lucky, havent ran into any roadblocks and a lot of code from my old program (omni tool 1.0 source) are migrating very well into OMNI 2.0. only problem i had to deal with was my algorithm involving sorting out "poorly foldered" mods, but that was solved easily when i went "screw it" and just rewritten that whole part from scratch

EDIT:

and i think if you can do it you should

i will probably do it on a future release, right now i just want to concentrate on getting my predefined set of goals completed

Edited by thelegendaryblah
Link to comment
Share on other sites

here is the one thing u need to add to it. have where u can select the parts of a mod t install. me i use alot of mods but i dont use every port of most o f them so its nice to get to select down to the parts.

u could put like a tree with checkmarks and only those filses u select will be installed rest is ignored

Link to comment
Share on other sites

  • 1 month later...
This thread is quite old. Please consider starting a new thread rather than reviving this one.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...