Question: How do you manage the working directory in GameMaker?


In GameMaker, managing the working directory is important because it determines where your game's files are read from and written to during execution. The working directory is typically the location where the game's executable resides. However, you can manipulate the working directory using GameMaker Language (GML).

Here's how you can get and set the working directory in GameMaker:

  1. Getting the Current Working Directory:

You can retrieve the current working directory by using the built-in function working_directory. This variable holds the path to the directory from which your game is running.

var currentDir = working_directory;
  1. Setting the Working Directory:

To set the working directory, you would generally use the game_save_id variable or manipulate file paths directly when reading or writing files.

// Set a new directory to save games game_save_id = "C:\\Users\\Username\\SavedGames\\"; // Save a file in the new game save directory var saveFile = file_text_open_write(game_save_id + "save.txt"); file_text_write_string(saveFile, "Save Data"); file_text_close(saveFile);

However, you cannot change the working_directory itself as it is read-only. If you need to work within a different directory, you should specify full paths or relative paths with your file operations.

When packaging and deploying your game, GameMaker will handle the working directory automatically, ensuring that assets and files are accessed relative to the executable's location.

Always be cautious with file system operations to ensure cross-platform compatibility and consider user permissions, especially when writing files outside of the standard application directories provided by the OS.

Was this content helpful?

White Paper

Free System Design on AWS E-Book

Download this early release of O'Reilly's latest cloud infrastructure e-book: System Design on AWS.

Free System Design on AWS E-Book

Start building today

Dragonfly is fully compatible with the Redis ecosystem and requires no code changes to implement.