If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Help:Contents/Finding Content/Game Engines/GameMaker: Studio

From The Cutting Room Floor
Jump to navigation Jump to search

This is a sub-page of Help:Contents/Finding Content/Game Engines.

GameMaker: Studio is a game engine developed by YoYo Games, released in May 2012[1]. This engine has its own game data format, which they continued to use in newer versions of the engine, with, obviously, alterations. This page covers extracting GameMaker: Studio 1.4-2022.x game data. GameMaker Studio 2 is rebranded to GameMaker since 2022, but this article will still refer to the software as it's former name.

Game data

Elementary, my dear Cactus.
This needs some investigation.
Discuss ideas and findings on the talk page.
Specifically: Filenames' usage are guessed, based on very little sources. The Opera GX entry is based on IDE output.

Typically, most game data is stored in an IFF/WAD file, which depending on the platform has the following file names:

  • data.win (Windows, UWP) (confirmed with most commercial GM game releases like Undertale, Deltarune, Pizza Tower, etc. as well as fangames)
  • game.win (Nintendo Switch, PlayStation 3, PlayStation 4, PlayStation Vita, PlayStation 5, Xbox One, Xbox Series X/S) (confirmed on Nintendo Switch with Deltarune)
  • game.unx (Linux) (confirmed with the Linux release of Undertale)
  • game.ios (macOS, iOS, tvOS) (macOS confirmed with the Mac packaging of Undertale and Deltarune)
  • game.droid (Android) (confirmed with several GM games put on Google Play)
  • game.3ds (Nintendo 3DS, even though corresponding build tools were never released)
  • game.symbian (Symbian)
  • runner.data (Opera GX)
(Source: krzys-h/UndertaleModTool source code)
Elementary, my dear Cactus.
This needs some investigation.
Discuss ideas and findings on the talk page.
Specifically: The OGX part is guessing.

It is usually in the game directory in Windows, in the Contents/Resources directory of the game app in macOS, in the assets folder in Linux, or in the romfs for Nintendo Switch. The file should have most game assets, such as sprites, rooms, sounds, and code; However, for games compiled with YYC (YoYo Compiler), the game code is in the game's main executable, and the game data may be embedded into the executable (for example, the .exe for Windows games, or the .wasm file for Opera GX games). For HTML5 games (that are not built for Opera GX), the game data is in the game directory, and the code is in the main JS file.

New games made with GameMaker Studio 2 may also have audiogroup*.dat files. These use the same IFF file format, except that there are only embedded audio in them. They are referenced by the main game data file, and are files created by the GMS compiler to store sounds put in audio groups in the game project.

For Studio 1.4 games such as Undertale v1.00, if the game directory only has an executable file, these files, including the actual game runner, are usually archived inside the executable file (by IExpress, Windows' self-extracting executable packager). The packaged files can be viewed and extracted by opening the executable with a tool such as 7-Zip.

IFF file format

The IFF format used to store game data and the bytecode format inside it is documented by various sources, such as:

The source code of decompilation tools such as UndertaleModTool may be also a good reference.

(Source: krzys-h/UndertaleModTool)

Tools

There are many tools that helps extracting GameMaker: Studio game data, such as:

  • UndertaleModTool (Windows-only)
    To use:
    • Download a version from the page, and open UndertaleModTool.exe; (Note that this will associate .win files etc. to the program. You can disable this in File -> Settings later, or by creating dna.txt in the same folder as the executable.)
    • Click File -> Open and choose the game data file you want to view;
    • Start browsing. Double click to open an item in the sidebar, and use scripts or the interface to extract assets.
  • Altar.NET
    See the page for usage. You can also drag-drop any game data file onto the included decompile-data scripts.

Among them, UndertaleModTool supports the most games, is very feature-complete, and is strongly recommended, though note that its support of games compiled with versions of GameMaker Studio after 2.1 is currently incomplete.

(Source: u/krzys_h)

References