GameMaker: Compacting Studio project files

If you have ever inspected directories of newly created projects for GameMaker: Studio, you may have noticed that even the seemingly empty project does "weight" a bit. 4 megabytes, to be precise (or 2 and half if zipped). Now you could say that it's not a lot nowadays, but it does stack, and those extra megabytes now and then could have came useful somewhere else (especially if keeping multiple backups of same project or periodically sending it over to someone). And, overall, it's a bit more than you'd logically expect from something that doesn't do anything (yet).
Reason of this is that upon creation your project looks roughly like this:

That is, most of space is occupied by Configs folder. It, in turn, mostly contains data and placeholder images for entire variety of platforms that GameMaker: Studio supports.
A thing is that far not many of those are actually needed in most situations, since splash screens and icons are commonly replaced with game-specific ones, and items left unmodified are commonly not used at all.
This post goes a bit into "optimizing" GameMaker: Studio projects a bit to reduce filesize drastically.

To say about "most of space". Technically a newly created project (with one room) looks like this:


(image generated via WinDirStat)

As seen on legend, differently coloured blocks are different types of images including PNG, BMP, JPEG and icons. A narrow magenta strip is GMX files, which include settings and rooms. Though your actual project files are not even seen on this image. They initially occupy 0.1% of project size.

Now on actual optimization. For most situations, debugging purposes only require an image that can be recognized as present, if an image at all. So I've went and created single-coloured versions of media present in Configs folder in according formats and sizes, while keeping the general colour scheme. But that's still some extra space, since most image editors have their own small flaws in format implementations. But, fortunately, there are tools like TinyPNG and JPEGmini, which allow to significantly optimize filesize of imagery while keeping the quality intact. Filesize reduction is especially noticeable on such simple images like coloured rectangles used here. In result folder size went from 3.9MB to just... 84.KKB. That's 98% size reduction. As can be seen on new image, it's still technically taking up 95% of project space, but it's no longer much of a deal.

And if you are to export project to GMZ, whole config folder adds just... 16KB of size. That means that GameMaker: Studio projects and examples can be just a little bit larger than their 8.0 and 8.1 "colleagues".

Obviously, you can also download a ZIP with Configs folder featured in this post:

Download ZIP

Usage

  • Download the above archive with Configs folder
  • Navigate to your project folder. This can be done via menu "Help - Open Project in Explorer" or equivalent shortcut, Ctrl+Alt+P.
  • If you have imported images/icons/splash screens via Global Game Settings, make a backup of Configs folder.
  • Extract downloaded archive contents into Configs folder, overwriting files.
  • Replace changed icons, if necessary.
  • That's it! Enjoy.

Update (July 29, 2013)

Recent GameMaker: Studio update (v 1.1.1076, July 23, 2013) has partially addressed issue with project sizes, shrinking them down to 1.9MB (1.1MB if zipped). This is already a good move, though advantages of using technique described in this article remain intact.

Update 2 (January 27, 2014)

Updated archive to include newly added icons in Config folder. Also altered icon colors to reflect new YoYoGames/GameMaker: Studio logo color scheme.

Related posts:

2 thoughts on “GameMaker: Compacting Studio project files

    • Fixed, although this shouldn’t be an issue anymore – GMS1 had been excluding unchanged configuration files from GMZs for a while now.

Leave a Reply to Vadim Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.