Modify GML events and create resources — GMS2 picks up changes instantly.
Write GML code, create or delete resources, add room instances — GameMaker Studio 2 reloads the changes automatically while the IDE stays open. No manual restart, no lost editor layout.
Create and manage every major GMS2 resource type directly from VS Code:
- Objects, Scripts, Rooms, Sprites, Shaders, Fonts, Paths, Sequences, Timelines, Notes
- Modify any GML event (50+ event types including Alarms, Draw sub-events, Async, User Events)
- Duplicate objects, add instances to rooms, manage room layers
Connect VS Code to your running GMS2 game over a local TCP connection. Read live data, evaluate GML expressions, modify instance variables, and toggle an in-game HUD overlay — all without leaving VS Code.
Full TextMate grammar for .gml, .yy, and .yyp files. Switch between 9 built-in color themes from the status bar. Interface available in 13 languages.
Create a folder inside objects/, scripts/, rooms/, sprites/, shaders/, fonts/, paths/, sequences/, timelines/, or notes/ — GMSync automatically generates the correct .yy file and registers the resource in .yyp. Works with any file manager or terminal, no commands required.
GMS2 caches its resource structure when a project is opened. Editing an existing .gml file works fine — GMS2 picks it up on save. But adding a new object, script, or event normally requires restarting the project.
GMSync solves this by triggering a native GMS2 resource tree rescan without closing the IDE:
- You create or modify a resource (via command, file manager, or terminal)
- GMSync writes the files atomically (via temp → rename) to prevent partial reads
- GMSync creates and removes a temporary folder inside the project — GMS2 reacts to this filesystem event and rescans its resource tree
- The new resource appears in GMS2's Resource Tree instantly, with no project reload
All writes go through a safe atomic pipeline. On startup, GMSync also cleans up any stale entries left in .yyp from previously deleted resources.
- GameMaker Studio 2 (2022.x or newer)
- VS Code 1.85.0 or newer
- GMS2 setting (required): In GMS2 open
Preferences → General Settingsand enable Automatically reload changed files. This tells GMS2 to pick up code changes from external editors immediately — without restarting the project or the IDE. - For TCP Bridge only: Open your project, go to
Game Options → Windowsand check Disable file system sandbox. Without this, GMS2 blocks the network calls the bridge uses to connect to VS Code.
- Open your GMS2 project folder in VS Code (the folder containing your
.yypfile) - In GMS2 IDE: go to Preferences → General Settings and enable Automatically reload changed files
- Use
Ctrl+Shift+Pand typeGMSync:to see all available commands
The extension activates automatically when a .yyp file is detected in the workspace.
Click the GMSync icon in the VS Code Activity Bar to open the resource tree. It shows all project resources in a 3-level hierarchy:
- Category (Objects, Scripts, Rooms, Sprites, Shaders, …)
- Resource (e.g.
obj_player,scr_utils,Room1)- Events — for objects only: each event is listed as a child node (e.g.
Create,Step,Draw)
- Events — for objects only: each event is listed as a child node (e.g.
- Resource (e.g.
Right-clicking any node opens a context menu with relevant actions:
- Right-click a category → Create resource of that type
- Right-click an object → Modify Event, Duplicate Object
- Right-click a room → Add Instance to Room
- Right-click an event → Modify Event, Write GML File
The tree header buttons give quick access to Refresh, Settings, and Bridge start/stop.
| Command | Description |
|---|---|
GMSync: Create Object |
Create a new GMS2 object |
GMSync: Create Script |
Create a new script |
GMSync: Create Room |
Create a new room |
GMSync: Create Sprite |
Create a new sprite (1×1 transparent placeholder) |
GMSync: Create Shader |
Create a new GLSL shader |
GMSync: Create Font |
Create a new font stub |
GMSync: Create Path |
Create a new path |
GMSync: Create Sequence |
Create a new sequence |
GMSync: Create Timeline |
Create a new timeline |
GMSync: Create Note |
Create a new note |
GMSync: Duplicate Object |
Duplicate an existing object with all its events |
| Command | Description |
|---|---|
GMSync: Modify Event |
Write GML code to any event on any object |
GMSync: Write GML File |
Write directly to a .gml file by relative path |
| Command | Description |
|---|---|
GMSync: Add Instance to Room |
Place an object instance in a room at X/Y |
GMSync: Add Layer to Room |
Add an Instance or Background layer |
GMSync: Remove Layer from Room |
Remove a layer (cleans up instances) |
GMSync: Set Background Colour |
Set the fill colour on a background layer |
GMSync: Set Background Sprite |
Assign or clear a sprite on a background layer |
| Command | Description |
|---|---|
GMSync: Start Bridge |
Start the TCP server (port 6503) |
GMSync: Stop Bridge |
Stop the TCP server |
GMSync: Install Bridge Assets |
Inject the bridge object into your GMS2 project |
GMSync: Uninstall Bridge Assets |
Remove bridge assets from the project |
GMSync: Bridge — Send Command |
Open the command picker to send a command to the running game |
GMSync: Bridge — Show Logs |
Show the bridge log output |
| Command | Description |
|---|---|
GMSync: Open Logs |
Open the extension log output |
GMSync: Reload Project |
Manually reload the project model |
GMSync: Refresh Tree |
Refresh the Activity Bar resource tree |
GMSync: GML Highlight Theme |
Pick a GML syntax color theme |
GMSync: Settings |
Open the settings panel |
The TCP Bridge lets you send commands from VS Code to your running GMS2 game in real time.
Architecture: VS Code runs a TCP server on port 6503. Your game connects as a TCP client when it starts.
- Run
GMSync: Install Bridge Assets— this injects the bridge object__gmsync_bridgeinto your project - Enable Game Options → Windows → Disable file system sandbox
- Run
GMSync: Start Bridgein VS Code - Launch your game — it will connect automatically and reconnect if the game restarts
| Command | Description |
|---|---|
ping |
Check connection (returns pong) |
get_fps |
Get current game FPS |
room_info |
Get current room name and ID |
game_restart |
Restart the game |
gml_eval <expression> |
Evaluate a GML expression (e.g. gml_eval global.hp=100) |
list_instances <object> |
List all instance IDs of an object |
var_instance_list <id> |
List all variables on an instance |
var_instance_set <id> <var> <value> |
Set a variable on an instance |
hud_toggle |
Toggle the in-game Live HUD overlay |
hud_clear |
Clear all variables from the Live HUD |
The Live HUD (Draw GUI overlay) shows modified variables in the top-right corner of the game window for 5 seconds after each change.
GMSync includes 9 built-in color themes for GML syntax highlighting:
| Theme | Description |
|---|---|
| Default | Standard VS Code colors — no overrides |
| Classic | Classic blue scheme |
| Dark Pro | Rich dark GitHub-style |
| Monokai | Bright Monokai style |
| Solarized | Solarized dark |
| One Dark | Atom One Dark |
| Pastel | Soft pastel tones |
| HACKER | Green-on-black terminal mode |
| Retro | Amber CRT retro style |
Switch themes from the status bar (GML: ThemeName) or via GMSync: GML Highlight Theme.
Open GMSync: Settings to configure:
- Interface language — 13 languages: English, Русский, 简体中文, 繁體中文, 日本語, Română, Deutsch, Français, Español, Português, हिन्दी, Italiano, Українська
- GML color theme — same as the Theme Picker
- TCP Bridge works on localhost only (
127.0.0.1:6503) — not suitable for remote connections - File system sandbox must be disabled in Game Options for the Bridge to connect on Windows
- The extension only activates when a
.yypfile is found in the workspace root - On startup, GMSync automatically cleans up stale
.yypentries left by previously deleted resources — this is safe and requires no user action
- Discord — news, bug reports, chat: discord.gg/VE4pVgET
- X (Twitter) — posts and updates: x.com/NeroNocturnus
MIT — see LICENSE
GML syntax grammar based on bscotch/stitch (MIT License, Copyright 2023 Butterscotch Shenanigans).



