Files
2025-11-30 09:08:19 +08:00

8.4 KiB

description, allowed_tools
description allowed_tools
Run the Godot game project with optional watch mode and enhanced error display
mcp__godot__run_project
mcp__godot__get_debug_output
AskUserQuestion
Skill

Run the current Godot project using the MCP server with enhanced debugging features.

Process

1. Parse Command Arguments

Check if user provided any flags:

  • --watch or -w: Enable watch mode (auto-restart on file changes)
  • --debug or -d: Show detailed debug output immediately
  • --no-output: Run without showing initial output

Examples:

  • /gd:run - Normal run
  • /gd:run --watch - Run with watch mode
  • /gd:run --debug - Run with immediate debug output

2. Start the Project

Use mcp__godot__run_project with projectPath set to the current working directory.

Display:

🎮 Starting Godot project...
   Project: <current_directory>

3. Get Initial Output

Wait 2 seconds, then use mcp__godot__get_debug_output to fetch initial output.

4. Parse and Display Output

Parse the output for:

  • Errors (lines containing "ERROR", "Error:", or stack traces)
  • Warnings (lines containing "WARNING", "WARN")
  • Info (other output)

Display with enhanced formatting:

If No Errors:

✓ Game started successfully!

Output:
<formatted_output>

Commands:
  /gd:stop      Stop the running game
  /gd:debug     View enhanced debug output
  /gd:restart   Quick restart

Tip: The game is now running. Make changes to your code and use /gd:restart to quickly reload!

If Errors Found:

⚠ Game started with errors:

<formatted_errors>

Commands:
  /gd:debug     View detailed error information
  /gd:stop      Stop the game

Would you like me to help fix these errors? I can explain what's wrong and suggest solutions.

5. Error Highlighting

When displaying errors, highlight key information:

[ERROR] <error_type>
  File: <file_path>:<line_number>
  Message: <error_message>

  💡 Quick Tip: <brief_suggestion>

Examples:

[ERROR] Null Instance
  File: res://scripts/player.gd:45
  Message: Attempt to call function 'take_damage' in base 'null instance' on a null instance

  💡 Quick Tip: Add null check before calling methods: if node != null: node.method()
[WARNING] Resource Not Found
  File: res://scenes/level.tscn
  Message: Cannot load resource at path: 'res://sprites/missing.png'

  💡 Quick Tip: Check that the file exists and the path is correct (case-sensitive)

6. Watch Mode (if --watch flag provided)

If watch mode is enabled:

  1. Display:
📁 Watch mode enabled
   Monitoring for file changes in:
   - *.gd (GDScript files)
   - *.tscn (Scene files)
   - *.tres (Resource files)

   The game will auto-restart when you save changes.
   Press Ctrl+C or type 'stop' to exit watch mode.
  1. Set up file watching (conceptual - explain to user):
Note: Watch mode requires manual restart for now.

To enable auto-restart:
1. Make your code changes
2. Use /gd:restart to quickly reload
3. Repeat as needed

Future enhancement: Automatic file watching with instant reload.
  1. Provide workflow tips:
💡 Rapid Iteration Workflow:
   1. Edit your code
   2. Save the file (Ctrl+S / Cmd+S)
   3. Run /gd:restart
   4. See changes immediately!

   This is much faster than closing and reopening the game.

7. Error Count Summary

After initial run, provide summary:

═══════════════════════════════════════
  Status Summary
═══════════════════════════════════════
  🔴 Errors: <count>
  🟡 Warnings: <count>
  🔵 Info messages: <count>

  ⏱ Startup time: <elapsed_time>
═══════════════════════════════════════

8. Offer Help

Based on what was found:

If errors present:

I noticed some errors. Would you like me to:
  1. Explain what these errors mean
  2. Show you how to fix them
  3. Run the debugger for more details

Just ask! For example: "Help me fix the null instance error"

If warnings only:

There are some warnings you might want to address.
Use /gd:debug to see detailed information.

If clean run:

Everything looks good! Your game is running smoothly.

9. Continuous Monitoring (Enhanced)

Offer to monitor for new errors:

Ask user: Question: "Would you like me to monitor for runtime errors?" Header: "Monitoring" Multi-select: false Options:

  • Yes, watch for errors: I'll alert you if new errors occur
  • No, just run: Just start the game without monitoring
  • Debug mode: Show all output in real-time

If "Yes, watch for errors" selected:

👀 Monitoring enabled
   I'll alert you if new errors occur while the game is running.

   You can check anytime with /gd:debug

Then periodically (conceptually - every 30 seconds or when user asks):

  • Check for new errors with get_debug_output
  • If new errors found, alert user:
    ⚠ New error detected!
    
    [ERROR] <brief_description>
    
    Use /gd:debug to see full details
    

10. Integration with Debugging Skill

If errors are found, automatically suggest using the debugging skill:

💬 Need help understanding these errors?

   Try asking:
   - "What does this error mean?"
   - "How do I fix the null instance error?"
   - "Debug the player.gd script"

   I can explain and fix these issues for you!

11. Performance Notes

Display performance indicators if available:

⚡ Performance:
   FPS: <if_available>
   Memory: <if_available>

   Use /gd:profile for detailed performance analysis

12. Quick Actions

At the end, always show quick actions:

Quick Commands:
  /gd:stop          Stop the game
  /gd:restart       Restart quickly
  /gd:debug         Detailed debug view
  /gd:profile       Performance analysis

  💡 Press Tab to see all /gd: commands

Example Full Output

Success Case:

🎮 Starting Godot project...
   Project: /Users/user/games/platformer

✓ Game started successfully!

Output:
  Godot Engine v4.2.1 - https://godotengine.org
  Vulkan API 1.3.0 - Device: Apple M1

  Loading scene: res://scenes/main.tscn
  Player initialized
  Level loaded: Level_1

═══════════════════════════════════════
  Status Summary
═══════════════════════════════════════
  🔴 Errors: 0
  🟡 Warnings: 0
  🔵 Info messages: 4

  ⏱ Startup time: 1.2s
═══════════════════════════════════════

Everything looks good! Your game is running smoothly.

Commands:
  /gd:stop      Stop the running game
  /gd:debug     View debug output
  /gd:restart   Quick restart

Tip: Make changes to your code and use /gd:restart to quickly reload!

Error Case:

🎮 Starting Godot project...
   Project: /Users/user/games/platformer

⚠ Game started with errors:

[ERROR] Null Instance
  File: res://scripts/player.gd:45
  Message: Attempt to call function 'take_damage' in base 'null instance'

  💡 Quick Tip: Add null check: if player != null: player.take_damage(10)

[WARNING] Resource Not Found
  File: res://scenes/level.tscn
  Message: Cannot load resource: 'res://sprites/enemy.png'

  💡 Quick Tip: Verify the file path is correct and the file exists

═══════════════════════════════════════
  Status Summary
═══════════════════════════════════════
  🔴 Errors: 1
  🟡 Warnings: 1
  🔵 Info messages: 3

  ⏱ Startup time: 1.5s
═══════════════════════════════════════

💬 Need help fixing these errors?

   I can explain what went wrong and show you how to fix it.
   Just ask: "Help me fix the null instance error"

Commands:
  /gd:debug     View detailed error information
  /gd:stop      Stop the game

Important Notes

  • Always format output in a user-friendly way
  • Highlight errors in a visually distinct manner
  • Provide actionable suggestions, not just error messages
  • Make it easy to transition to fixing errors (mention debugging skill)
  • Track context for follow-up questions about specific errors