Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/titledgames/microwave-man/llms.txt

Use this file to discover all available pages before exploring further.

Microwave Man is built with Godot 4.6 using GDScript and the GL Compatibility renderer, which targets a broad range of devices including mobile hardware. The project follows Godot’s standard scene-and-script architecture, where each gameplay system is a separate scene paired with a GDScript file. Understanding this layout is the fastest way to get oriented before making changes.

File tree

The repository root contains the Godot project file, all scene and script pairs, asset directories, and tooling scripts.
microwave-man/
├── .coderabbit.yaml           # CodeRabbit AI review configuration
├── .editorconfig              # Editor formatting rules
├── .gitattributes
├── .github/
│   └── workflows/
│       └── release.yml        # CI/CD: multi-platform export and GitHub Pages deploy
├── addons/
│   └── discord-rpc-gd/        # Discord RPC GDExtension plugin
├── assets/                    # Sprites, sounds, and other media
├── flathub/                   # Flathub packaging manifest files
├── screenshots/
├── about.gd / about.tscn      # About/credits screen
├── coin.gd / coin.tscn / coin_sfx.tscn
├── discord_rpc_loader.gd      # Autoload: Discord RPC callback runner
├── end.gd / end.tscn          # End-zone trigger
├── endcreen.gd / endcreen.tscn
├── export_presets.cfg         # Godot export configuration (all platforms)
├── game_state.gd              # Autoload: global signal bus
├── hud.gd / hud.tscn          # Heads-up display
├── icon.svg
├── main.gd / main.tscn        # Core gameplay scene
├── main_menu.gd / main_menu.tscn
├── player.gd / player.tscn    # Player character
├── project.godot              # Godot project settings
├── run.sh                     # Local web build and preview script
├── serve.py                   # Local HTTP server for web builds
├── setup.sh                   # Installs Godot and export templates (Linux)
├── tilemap.tscn               # Level tilemap
└── tilemapthingymabober.tres  # Tilemap resource

Renderer and engine settings

The project targets Godot 4.6 with the GL Compatibility renderer. GL Compatibility is a lower-level OpenGL-based backend that runs on a wide range of hardware, including mobile devices and older GPUs, making it a good fit for a 2D arcade game that exports to Android, iOS, and Web. Texture filtering is set to nearest, which preserves pixel art crispness by preventing texture interpolation. The window is non-resizable, keeping the viewport dimensions fixed across all platforms.

Scene and script breakdown

Each scene in the project has a paired GDScript file that handles its logic.
ScriptSceneRole
main_menu.gdmain_menu.tscnTitle screen; shows the game version, initializes Discord RPC, and routes the player to the main game or about screen
main.gdmain.tscnCore gameplay loop: score tracking, game timer, game_over, and new_game orchestration
player.gdplayer.tscnCharacterBody2D controlling player movement, gravity, jumping, and animations
hud.gdhud.tscnCanvasLayer displaying the score label, on-screen messages, and the start button
coin.gdcoin.tscn / coin_sfx.tscnArea2D that detects player overlap, plays a collection animation and sound, then removes itself
end.gdend.tscnArea2D that detects when the player reaches the end zone and transitions to endcreen.tscn
endcreen.gdendcreen.tscnEnd screen offering play again (emits the restart_game signal), main menu, or quit
about.gdabout.tscnAbout and credits screen; also displays the current version

Autoloads

Godot autoloads are singletons loaded before any scene. Microwave Man registers two.

GameState (game_state.gd)

GameState is the global signal bus. It exposes the restart_game signal, which endcreen.gd emits and main.gd listens to in order to reset the level without reloading the full scene tree.

DiscordRPCWrapper (discord_rpc_loader.gd)

DiscordRPCWrapper runs Discord RPC callbacks each frame via _process. It is responsible for keeping the Discord Rich Presence connection alive and dispatching any queued callbacks from the GDExtension layer.

Addons

The addons/discord-rpc-gd/ directory contains a prebuilt GDExtension that wraps the Discord Game SDK. It is registered as an editor plugin in project.godot via res://addons/discord-rpc-gd/plugin.cfg. The DiscordRPCWrapper autoload depends on this extension being present and enabled.

Key gameplay constants

These values are defined in player.gd and control the core feel of the player character.
ConstantValueDescription
SPEED200Horizontal movement speed in pixels per second
JUMP_VELOCITY-350Initial vertical velocity applied on jump (negative = upward in Godot’s coordinate system)
GRAVITY980Downward acceleration applied each frame to simulate gravity
Godot’s Y axis points downward, so a negative JUMP_VELOCITY moves the player upward, and a positive GRAVITY pulls the player back down.

Export targets

export_presets.cfg defines export configurations for all supported platforms: Android, iOS, Linux, macOS, Web, and Windows Desktop. The GitHub Actions workflow in .github/workflows/release.yml builds all of these automatically when a GitHub Release is created.

Building the project

Set up your local environment, run the game, and export to web or desktop.

Contributing

Fork the repo, open a pull request, and understand the code review process.

Build docs developers (and LLMs) love