This document lists all available debug keybinds for testing and development in Drill Down.
To enable debug mode and access all debug controls:
-
Desktop: Run the game with the debug flag:
gradle desktop:run --args="debug"Or use the provided
RUN_GAME.batfile which automatically passes the debug flag. -
Requirements:
- The game version must be set to
"debug"for debug controls to activate - Debug keybinds are only available when
Quarry.Q.version.equals("debug")
- The game version must be set to
- Free Building: Structures cost nothing to place
- Unlock All Technologies: Build any structure regardless of tech tree progression
- Affects Build Menu: Updates UI to show all available buildings
- Use Case: Test complete building chains without resource constraints
- Implementation: Skips resource deduction in
placeStructure()when enabled
- One-Time Bulk Fill: Click on structures to fill them instantly
- Fills Different Types:
- Storage: 100 units of all non-fluid, non-abstract items
- Substation (Power): 100 million power units
- Tank (Fluids): 100 million units of water
- Auto-Disable: Automatically turns off after one use
- Use Case: Populate production chains for testing without manual resource management
- Quick Fluid Testing: Click on fluid structures to fill them instantly
- Fills Different Types:
- BrickChannel: 500 units of Molten Copper
- FluidTubeStructure: 1000 units of Water
- Toggle: Press again to disable
- Use Case: Test fluid systems and pipe networks quickly
- Select Liquid Type: Press number keys 0-5 to select a specific liquid type
- Available Liquids:
- 0: Water
- 1: Refined Oil
- 2: Crude Oil
- 3: Intermediate Oil (to Column)
- 4: Intermediate Oil (to Refinery)
- 5: Molten Copper
- Fill Structures: After selecting a liquid, click on tanks or pipes to fill them
- Fill Amounts:
- Pipes (FluidTubeStructure): 1,000 units
- Tanks: 100,000,000 units
- Auto-Reset: Must press number key again for each fill (prevents accidental fills)
- Toast Feedback: Shows selected liquid name and fill confirmation
- Use Case: Test specific liquid types in production chains without manual resource gathering
- Visual Debug Overlay: Displays debug information on screen
- Shows:
- Collision bounds
- Dirty region rectangles
- Vein debug information
- Internal state visualization
- Affects UI: Also toggles UI debug mode via
ui.toggleDebug() - Use Case: Visualize game structure, collision detection, and rendering state
- Hide/Show UI: Toggles all on-screen interface elements
- Affects: All UI panels, build menus, status displays
- Use Case: Clean screenshots or unobstructed view of structures
- Force Redraw: Marks the entire current layer as needing re-rendering
- Technical: Sets layer
dirtyBoundsto full layer size with max priority - Scope: Only affects current layer
- Use Case: Fix visual glitches or force graphics refresh for current layer
- Force All Chunks to Redraw: Marks every chunk in current layer as dirty
- More Thorough: Iterates through all chunks and sets dirty flag
- Scope: Entire current layer
- Use Case: Comprehensive graphics refresh for debugging rendering issues
- Create New Depth Level: Adds a new layer below the current one
- Multi-Layer Support: Enables vertical expansion of the map
- Use Case: Test multi-layer mechanics and drilling deeper gameplay
- Speed Progression: Cycles through preset speeds
- Sequence: 1x → 2x → 4x → 10x → 25x → 1x (loops)
- Each Press: Advances to next speed in cycle
- Use Case: Speed up testing or slow down to observe specific behavior in detail
- Reset Speed: Immediately sets game speed back to 1x (normal)
- Opposite of P: Direct reset instead of cycling
- Use Case: Quick return to normal speed from fast-forward
- Single Frame Step: Advances game logic by exactly one frame
- Pause State: Game remains paused, only one frame advances
- Use Case: Frame-by-frame debugging for analyzing specific behavior step-by-step
- Clear All Fog: Removes FOG_OF_WAR metadata from every tile in current layer
- Reveals Map: Makes entire map visible
- Scope: Current layer only
- Use Case: Test gameplay with full visibility or debug fog-of-war logic
- Enable Fog Rendering: Activates special fog-of-war visualization mode
- Status: Developmental flag (sets to true, no toggle)
- Use Case: Test or debug fog-of-war rendering
- Recompute All Resources: Forces full recalculation of current inventory
- Syncs State: Updates internal resource tracking system
- Scope: All resources in game
- Use Case: Fix resource count discrepancies or debug resource calculation bugs
- Video Recording: Enables automatic screenshot capture for video creation
- Capture Interval: Takes screenshots every 5 seconds
- Output: High-resolution framebuffer rendering (full layer size)
- Use Case: Record gameplay footage for demonstrations, trailers, or documentation
- High-Res Screenshot: Takes single high-resolution screenshot of current layer
- Quality: Uses dedicated framebuffer for clean rendering without artifacts
- Use Case: Capture clean screenshots without UI for documentation or sharing
- Press G to enable GOD_MODE
- Press X to fill storages with resources
- Press F multiple times to fill fluid structures, or use 0-5 to select specific liquids
- Use P to speed up testing
- Press D to enable DRAW_DEBUG
- Press R or T to force redraw
- Press F1 to hide UI for clearer view
- Press H repeatedly to step through frames one at a time
- Press D to visualize debug information
- Observe specific behavior in detail
- P: Cycle speeds for fast testing (25x) or slow observation (1x)
- O: Quick reset to normal speed
- H: Single frame for precise analysis
These are the static boolean flags used by debug controls:
| Flag | Default | Purpose |
|---|---|---|
GOD_MODE |
false | Free building, unlock all techs |
DRAW_DEBUG |
false | Visual debug overlay |
FLUIDMODE |
false | Quick fluid testing |
FILLMODE |
false | Bulk fill structures |
RECORDMODE |
false | Video recording mode |
SCREENSHOT |
false | Single screenshot mode |
FOGMODE |
false | Fog-of-war visualization |
SINGLE_FRAME |
false | Step one frame |
UI_VISIBLE |
true | UI display state |
SMOOTH_CAMERA |
false | Camera smoothing |
All debug keybinds are gated by:
if (Quarry.Q.version.equals("debug")) {
// Debug keybinds available
}- Debug keydown handler:
Game.javalines 3920-3985 - Debug flags:
Game.javalines 1486-1495 - Desktop launcher:
DesktopLauncher.javalines 75-101
The RUN_GAME.bat file automatically passes the debug argument, which enables debug mode through:
RUN_GAME.batpassesdebugargument to jarDesktopLauncher.main()receives argumentDesktopLaunchersetsversion = "debug"when detectedQuarryinstance is created with debug versionGame.keyDown()checks for"debug"version and enables keybinds
Debug commands not working?
- Ensure game is running in debug mode (
RUN_GAME.batorgradle desktop:run --args="debug") - Verify the game version shows as "debug" in the title bar or logs
- Rebuild with
gradle desktop:buildafter code changes
Keybind not responding?
- Check if another UI element has focus (click on game area first)
- Verify you're using the correct key (not numpad)
- Some keybinds execute once and auto-disable (X, V, H, K, L)
Reference guide created for developer convenience in testing and debugging Drill Down.