DevTools

Browser-like developer tools for Geode.

Press F11 (F10 for MacOS) to open up the dev tools.

Features

  • Inspect the current node tree
  • Inspect individual nodes
  • Easily change attributes like the position and color of nodes
  • Multiple built-in themes

API

Developers can register their own node's properties to show up in DevTools like so:

#include <geode.devtools/include/API.hpp>

class MySprite : public CCSprite {
public:
    enum class RandomEnum {
        Option1,
        Option2,
        Option3
    };

    static void registerDevTools() {
        // The lambda provided will run every frame (given the node is selected)
        // for any node that is typeinfo_cast able into MySprite
        devtools::registerNode<MySprite>([](MySprite* node) {
            devtools::label("My Sprite");
            devtools::property("Some Flag", node->m_someFlag);
            devtools::property("Some Float", node->m_someFloat);
            devtools::property("Some Int", node->m_someInt);
            devtools::property("Some String", node->m_someString);
            devtools::property("Some Color", node->m_someColor);
            devtools::enumerable("Some Enum", node->m_someEnum, {
                { RandomEnum::Option1, "Option 1" },
                { RandomEnum::Option2, "Option 2" },
                { RandomEnum::Option3, "Option 3" }
            });
            devtools::button("Shake It", [&]{
                node->runAction(CCShaky3D::create(
                    0.5f, CCSize(10, 10), 5, false
                ));
            });
        });
    }

private:
    float m_someFloat = 3.14f;
    int m_someInt = 42;
    std::string m_someString = "text";
    ccColor3B m_someColor = {255, 0, 0};
    RandomEnum m_someEnum = RandomEnum::Option1;
    bool m_someFlag = true;
};

$on_mod(Loaded) {
    // makes sure DevTools is loaded before registering
    devtools::waitForDevTools([] {
        // use a static method on the class itself
        // so it can access private members
        MySprite::registerDevTools();
    });
}

v1.11.0

  • Made properties api use drag inputs
  • Fix waitForDevTools on mods that load before DevTools
  • Add screenshot button to nodes (#65)
  • Improve keyboard support on mobile (#62)
  • Add floating button on mobile (#62)
  • Add search bar in node tree (#62)
  • Fix some touch issues in the GD window (#62)

v1.10.0

  • Add node properties api (#63)
  • Fix a crash when removing layouts and layout options (#58)
  • iOS support (#59)

v1.9.0 && v1.9.1

  • Bump to Geode v4.4.0
  • Add support for SimpleAxisLayout
  • Add missing AxisLayoutOptions attributes
  • Add AxisGap for AxisLayout
  • Add Auto Grow Axis to AxisLayout attributes
  • Add Ignore Invisible Children checkbox for layouts
  • Add the ability to remove layouts and layout options
  • Add display for texture name / paths and respective copy buttons
  • Add copy class name button
  • Add Tag attribute
  • Add Color and Vector attributes for CCLayerGradient
  • Add CCMenuItemSpriteExtra attributes
  • Add toggleable cascade color and opacity
  • Add Flip X and Flip Y for CCSprite
  • Add custom theme colors
  • Reorganize and categorize some related attributes
  • Fix flashing Geode Team logo
  • Fix some settings not saving
  • Fix fullscreen toggling sometimes breaking the UI
  • Fix resizing the window causing the GD view to break
  • Add back custom resolutions and window information
  • Hook Geode's getMousePos to be relative to the GD view while DevTools is open

Thanks to Alphalaneous for doing most of the changes in this update!

v1.8.0

  • Support for 2.206
  • Bump to Geode v4.0.0-beta.1
  • Memory viewer overhaul (#46) - thanks @hiimjustin000
  • Fix a crash related to UTF-8 directory names (3edd503)

v1.7.1

  • Added support for Intel Mac
  • Disabled GD hooks that were still enabled on Windows

v1.7.0

  • Support for 2.206
  • Bump to Geode v3.0.0-beta.1
  • Fixes for 64-bit
  • Make the time format for memory dumps better
  • Remove logs for GL extension string
  • Actually save the settings used

v1.6.0

  • Adds Node IDs into the Attributes menu, along with a button to copy them
  • Adds a way to create and modify an AnchorLayout
  • Removes the Show Mod Index option in preparation for the new index
The recommended way to install mods is through the in-game mod loader . You will have to manually install the .geode files you get from this page.

Some mods also require other mods as dependencies ; you will need to find and install them yourself.

Site made by HJfod . Thank you to nekit for the domain!

Geode Team 2025