GameMaker file formats (and how to open them)

This is a blog post outlining the various formats that emerged over the two decades of GameMaker history (there being few dozen of them now) and instructions on how to open them in various GameMaker versions.

Glossary

  • GM5..GM8.1: Game Maker 5.x .. Game Maker 8.1, released in years before 2011.
  • GMS1: GameMaker: Studio, released in 2012 and updated until 2018.
  • GMS2: GameMaker Studio 2 (now GameMaker 2022), released in 2016 and updated to this day.
  • LateralGM: An open-source editor for projects made in GameMaker versions up to GMS1.
    Aside of not being able to compile/run the project, LateralGM is a fairly feature-complete editor.
  • GMEdit: An open-source editor for projects made in GMS1 and GMS2.
    It has a lot of features for viewing and editing code and not a lot in terms of editing non-code resources. It can ask GM to run the game for you (but you'll still need GM installed).
  • Viewing: Opening a file for purposes of looking at it - without being able to run the code, but also without having to install GameMaker.

Legacy versions (≤8.1)

GMD, GM6, GMK, GM81

What it is: Project files for:

  • GMD: Game Maker 5 or earlier
  • GM6: Game Maker 6
  • GMK: Game Maker 7 or 8
    (GM8 GMKs cannot be easily told apart from GM7 GMKs)
  • GM81: Game Maker 8.1

How to open in:

  • GM8.1 or earlier: menu:File➜Open
    Files can be converted for use in earlier versions using LateralGM (Open, then Save As).
  • GameMaker: Studio: starting screen➜Import➜Import File
    (choose the file type in dropdown inside the file picker dialog)
    This will create a GMS1 project for the file.
  • GameMaker Studio 2: GMS2 cannot open legacy project files natively, but you can:

    • Convert them to GMS1 format using GMS1, then import them to GMS2.
    • Convert them to GMS1 format using LateralGM (Open, then Save As and pick GMX on the right), then import them to GMS2.
  • Viewing: LateralGM.

GB1 ... GB9

What it is: A backup file for a GM≤8.1 project.

Depending on the "maximum number of backups" specified in Preferences, there can be up to 9 of these next to the project file.

The file extension doesn't indicate the version - instead the number indicates which backup it is (GB1 being the most recent one made).

How to open: same rules as above - if you are not sure what version the backup is from, open it in LateralGM and re-save as a specific one.

GEX

What it is: An extension package for Game Maker 8.1 or earlier.

How to open in:

  • GM8.1 or earlier: menu:Resources➜Select Extension Packages➜Install
  • GameMaker: Studio: Right-click on Extensions folder in a project's resource tree, pick Import extension, switch type to "Legacy Extension".
  • GameMaker Studio 2: You'd have to import the extension to GMS1 first, export it (right-click in resource tree, pick Export extension), and then import it in GMS2, but old DLLs rarely work due to to GM moving from 32-bit to 64-bit executables.
  • Viewing: Extension Maker

LIB

What is is: A drag-and-drop (visual programming) action library for GameMaker:Studio or earlier.

How to open in:

  • GM8.1 or earlier: Copy to the lib folder inside the installation folder (can be %APPDATA%/GameMaker, depending on version), restart GameMaker.
    Libraries appear as tabs on the right in the object editor.
  • GameMaker: Studio: Same thing, except it's consistently %APPDATA%/GameMaker-Studio/lib.
  • GameMaker Studio 2: visual programming received a complete overhaul in GMS2 and old-format libraries cannot be automatically converted to new format.
    When importing a project, DnD blocks are converted to their code equivalents.
  • Viewing: "Library Maker" from Extension Maker package.

GMSPR

What it is: A sprite file exported by GM≤8.1.

It has some similarities to PNG (including ZLIB compression) but includes GM-specific metadata (like collision mask information).

GM:S still had the ability to import these, but removed the option to export them.

How to open:

  • GM8.1 or earlier: "Load sprite" in sprite editor window.
  • GameMaker: Studio: (same thing)
  • Otherwise: GMSprView (or do it yourself)

GameMaker: Studio

GMX

What it is: A GameMaker: Studio file. XML-based.

The second extension indicates the type (*.project.gmx is a project, *.object.gmx is an object).

Opening non-project files has little use as they lack context.

How to open in:

  • GM8.1 or earlier: You can use LateralGM to convert a project to legacy format (Open, then Save As and pick version on the right), but this is unlikely to work without fixing it up by hand.
  • GameMaker: Studio: File➜Open or Open on the starting screen.
  • GameMaker Studio 2: File➜Import or Import on the starting screen.
  • Viewing: GMEdit or LateralGM.

GMZ

What it is: A compressed GameMaker: Studio project.

Technically just a 7-zip archive with your project files in it.

How to open in:

  • GM8.1 or earlier: Extract using 7-zip, then same steps as for GMX.
  • GameMaker: Studio: File➜Import or Import on the starting screen.
  • GameMaker Studio 2: File➜Import or Import on the starting screen.
  • Viewing: Extract using 7-zip, then open in GMEdit or LateralGM.

GMEZ

What it is: A compressed GameMaker: Studio asset/extension package.

Technically also just a 7-zip archive, but with a few added metadata files.

How to open in:

  • GM8.1 or earlier: You could use a tool I made to convert a GMS DLL-extension into a set of scripts (and convert the rest as part of a project), but results may vary.
  • GameMaker: Studio: Right-click on Extensions folder in a project's resource tree, then pick Import extension.
  • GameMaker Studio 2: menu:Tools➜Import Local Package, or drag-and-drop the file into the workspace (not the resource tree!)
  • Viewing: Extract using 7-zip, then open in GMEdit or LateralGM.

GameMaker Studio 2

YYP

What it is: A GameMaker Studio 2 project. A big pile of (mostly-to-spec) JSON.

If there's a "modelName": "GMProject" inside, it's a GMS≤2.2.5 project.
Otherwise it's a newer (≥2.3) project.

How to open in:

  • GM8.1 or earlier: You can try using steps above after converting a GMS2 project to GMS1, but the odds of you getting it to work without substantial rewriting are pretty low.
  • GameMaker: Studio: A tool I made can convert GMS≤2.2.5 projects back to GMS1 format (with some limitations).
    Doing so for 2.3 projects
  • GameMaker Studio 2: menu:File➜Open or "Open" on the starting screen.
  • Viewing: GMEdit.

YY

What it is: A single GMS2 resource file. A smaller pile of (mostly-to-spec) JSON.

"modelName": indicates what it is for GMS≤2.2.5, "resourceType": does for GMS≥2.3.

Similar to non-project GMX files, there's little use in opening a separate resource but most editors with JSON syntax highlighting will do.

YYZ

What it is: A compressed GMS2 project. In other words, a ZIP archive with your project files in it.

How to open in:

  • GM8.1 or earlier: Unzip, then steps for YYP
  • GameMaker: Studio: Unzip, then steps for YYP
  • GameMaker Studio 2: menu:File➜Import Project or "Import" on the starting screen.
  • Viewing: GMEdit.

YYMP

What it is: A compressed GMS≤2.2.5 asset/extension package. This is also a ZIP archive with a little metadata.

How to open in:

  • GM8.1 or earlier: Add to a GMS2 project steps for YYP
  • GameMaker: Studio: Add to a GMS2 project steps for YYP
  • GameMaker Studio 2: menu:Tools➜Import Local Package, or drag-and-drop the file into the workspace (not the resource tree!)

YYMPS

What it is: A compressed GMS≥2.3 asset/extension package.

Since the YY format changed in 2.3, these use a new file extension.

Still, you can open it as a ZIP archive too.

How to open in:

  • GM8.1 or earlier: Add to a GMS2 project steps for YYP
  • GameMaker: Studio: Add to a GMS2 project steps for YYP
  • GameMaker Studio 2: menu:Tools➜Import Local Package, or drag-and-drop the file into the workspace (not the resource tree!)

Other things

D3D/GMMOD

What it is: A simple model format that existed from GM6 to GM:S (a post about structure).

How to open:

WIN, UNX, IOS, DROID, ...

What it is: An asset file for a compiled GMS1/GMS2 game.
It can contain textures, audio files, metadata, bytecode (if appropriate), and so on.
If there's one in a game directory and the contents start with FORM(4 bytes for size)GEN8, chances are that it's a GM game.

How to open: see on GameMaker game decompilation - your best bet is UndertaleModTool, but there are countless GameMaker versions so results may vary.

audiogroup#.dat

What it is: When grouping sounds into audio groups in GMS1/GMS2, the audio files will be combined together into an "audiogroup" file. The game then loads these files as necessary, which can speed up the initial load time.

How to open: No one made a tool for this yet, but if you make one, let me know!

YYDEBUG

What it is: Debug symbols for a GMS1/GMS2 game.
Usually found in a temporary folder, rarely elsewhere.
You can rescue some code from these if you've recently ran your game and then deleted something (but didn't close the IDE yet).

How to open: YYDebugView (blog post)


And is that all?

Related posts:

Leave a 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.