SSD / Steam games management app.

Avatar image for nakedeyes
#1 Posted by nakedeyes (13 posts) -

I recently got a sweet 256GB Vertex4 SSD!! But there is no way it was going to hold all ~1.5TB of my steam games ( let alone any other large apps I might want on there ).

So I whipped up a quick C# app to move steam games on and off my SSD ( on the SSD to play, off the SSD onto HDD for storage! ), I wanted to share it.

There are similar apps out there, but they were not so super easy to use, and not all of them make it easy to support moving from a bunch of different directories ( which mine does with its profiles ).

I plan on adding more features ( mostly batch processing, and maybe some tweaks ).

Here it is:

Hope anyone might find use out of this. Let me know what you think. Cheers!

Avatar image for mtcantor
#2 Posted by mtcantor (984 posts) -

Not for nothing, since I see you are a subscriber and probably not a horrible person, but shit like this from random people terrifies me.

Avatar image for nakedeyes
#3 Posted by nakedeyes (13 posts) -

Hehe.. yeah, well.. I guess I understand that.

I just have been having a bunch of fun whipping this up and wanted to share it with someone. It has already proven to be infinitely useful for my quickly ballooning Steam game collection. :)

I think Im a pretty nice dude, but I hear you, cant be too careful out there! ( especially in the world of unsigned hobbiest windows apps :) )

Avatar image for nakedeyes
#4 Posted by nakedeyes (13 posts) -

Also worth noting.. Its all GNU licensed, and you can get at the source code from the google code page, so you can see how simple and safe it is :)

Avatar image for tycobb
#5 Posted by TyCobb (2031 posts) -

Looked at your source..... if it works, it works and that is all that matters.

With that said, I think it would be a lot cleaner to actually try and create some objects to handle your processing and data needs. You're grabbing a string[] of paths and then filling/creating all the controls based on that one string. It would probably be better to create an object to house your file path and then create your necessary properties and helper methods in there.

For instance here is an interface of what I am thinking of. You don't need an interface, but there's no "code" option in GB's text editor. hehe

public interface IDirectoryObject


string Name {get;}

string Path {get;}

long Size {get;} /* you can try caching the value and that may speed some things up depending on how often is called */

void Move(...);

void Copy(...);


A lot of this can feed off of a single constructor parameter of your directory path (not sure why you called it a file path) and just calling some methods off of the System.IO.Directory object. This gives you a nice spot to put in your logic and can clean up form code. It really is a bad idea to base your actions on magic numbered indexes. You can use the button's tag property to actually store your object instance.

Like I said, it works and that is all that matters. Just giving you some tips and you are free to completely ignore it, but since you are in a OOP language, you may as well get some OO in there. =)

Avatar image for nakedeyes
#6 Posted by nakedeyes (13 posts) -

@TyCobb: Thanks for taking the time man! I agree with you, there are alot of things I could do to improve the code. I am a C++ programmer by trade and don't deal with C# or forms or anything, so I kinda was just hacking it together as I went :)

I am planning on making a few interface changes that will hopefully provide a cleaner method of passing around data rather than relying on indexes ( which do work like you say.. just a bit ugly :) ). I will check out that Button Tag property, if I can store a data structure in there, then that sounds most desire able! :)

I am also really wanting to get like maybe a row of checkboxes setup that can go down the list and move a bunch in a batch process, which would be much easier with some nice data structures.

P.S. If you look at the code for the profiles, you will see that I am at least familiar with data structures :) hehe.. just sayin'!

Avatar image for tycobb
#7 Posted by TyCobb (2031 posts) -

No prob. Button.Tag is an object and its sole purpose is to contain arbitrary/context data so it will work like you want it to. I believe the Tag property is on a lot of the .NET controls.

Checkboxes would be a nice addition. If I remember right, I believe the stock Microsoft .NET ListView has support for showing a check box in the ListViewItem.

I forgot to mention though, I wouldn't test this program by moving large amounts of data over to the SSD since you will inherently destroy the lifespan of the SSD. Granted I know a lot of people say it's no longer a concern today considering it goes up with the size of the drive, but if you can avoid it, then why not?

Avatar image for jctango
#8 Posted by JCTango (1500 posts) -

@nakedeyes: jeebus how much did that ssd cost?!

Avatar image for nakedeyes
#9 Posted by nakedeyes (13 posts) -

@JCTango: It was ~360$ on amazon when I got it.. I realize I spent a pretty good premium for one that is just barely faster than other ones that are about 80-100$ cheaper, but I just built an insane new gaming rig and wanted to just have the best ( for the time ).

Avatar image for nakedeyes
#10 Posted by nakedeyes (13 posts) -

@TyCobb: Hey thanks for the .NET tips man! And also for the reminder to keep my SSD access to a minimum :) .. My lady is out of the house next week and I def plan on working on this a bit more!

Avatar image for wastedcolumbo
#11 Posted by wastedcolumbo (78 posts) -

I just got a new PC with an SSD and I was planning on using SteamTool to put certain games on it, my main concerns with this is how do these programs effect mods? If I was to put Skyrim on the SSD and was to download mods from the steam workshop will they be put on my SSD also or be on the steam install directory?

Avatar image for shadowskill11
#12 Posted by ShadowSkill11 (1877 posts) -

I assume it's a GUI to take care of the long strings of Symbolick links?

Avatar image for shivoa
#13 Posted by Shivoa (1528 posts) -

@ShadowSkill11: (Correct me if I'm wrong but) I think it's just a file copy manager so you can create game profiles and make the program copy folders back and forth as you need them, no symlinks (/D - good move) or junction points (/J - bad developer, no cookie!)

Avatar image for envane
#14 Posted by envane (1225 posts) -

i just delete games as i neeed space, float at around 10gb free on my 256gb , every time i need any space theres a lot of stuff i havent played in months that can easily go .. seriously why do you need all your games installed .. .. infact i often used the "installed games' filter to actually manage my steam list at all

:P write me a program to stop buying steam games

Avatar image for shivoa
#15 Posted by Shivoa (1528 posts) -

I cannot help you with the latter problem.

Generally if you have a download cap or you can't deal with the several hours wait it takes to download 10-25GB of data form the internet then moving a game to an archive drive rather than your active (SSD) partition is a decent idea if you know you might play it in a month but right now you don't need it. Of course, you can just use the Steam backup system (or copying folders) to manage this process but some people like to keep Steam thinking the files are where it left them so any patches can be applied on the HDD archive copy (via symlink).

Also, you might want to keep your SDD (if that 256GB indicates an SSD) with more free space than 10GB. Free space is good for the life expectancy of your drive (even if wear via amplification isn't a major issue with modern drives, especially if you have a SandForce driver with that nice compression technology buffering those writes and managing write amplification that way).

This edit will also create new pages on Giant Bomb for:

Beware, you are proposing to add brand new pages to the wiki along with your edits. Make sure this is what you intended. This will likely increase the time it takes for your changes to go live.

Comment and Save

Until you earn 1000 points all your submissions need to be vetted by other Giant Bomb users. This process takes no more than a few hours and we'll send you an email once approved.