GD Modding Dictionary

As GD modding is a very specialized field, GD modders use a lot of specialized terminology that can be confusing for a newcomer. This dictionary lists and explains many common (and uncommon) terms used by GD modders, to help new modders better understand this weird world.

Address

The location in the raw program binary where a function or other program data is found.

Assembly

A “human-readable” form of binary code.

Further reading: Wikipedia

Binary

Depending on context, may refer to the program binary of GD, aka GD’s raw machine code found in GeometryDash.exe on Windows, or just binary data aka 1s and 0s in general.

Further reading: Wikipedia

CacaoSDK

An old modding framework that merged with Lilac and formed Geode.

Calling Convention

A source of pain and suffering on Windows. Dictates whether and how function parameters are passed through registers and the stack. Common calling conventions used in GD include thiscall, optcall, and membercall.

CappuccinoSDK

A library consisting of Cocos2d headers with a few RobTop modifications listed, used even before traditional modding got its proper start. A fully outdated and deprecated library.

Related words: Geode, Traditional modding

Cheat Engine

A debugger commonly used by Windows modders.

Homepage

Cocos2d

The game engine used by GD. The version used by GD is Cocos2d-x v2.2.3, however with many propietary modifications by RobTop, meaning that you need to use a specially prepared version that accounts for these changes such as Geode or cocos-headers in order to make mods.

Homepage

Cocos-headers

A popular library used in traditional mods consisting of Cocos2d headers with many of RobTop’s modifications added.

Homepage

Debugger

A tool used for debugging another application (usually GD) for issues (usually crashes), such as x32dbg or Cheat Engine.

Further reading: Wikipedia

Detour

The code you wrote that is run instead of the original function in a hook.

Related words: Trampoline, Hooking

Director

The central manager class in Cocos2d that manages the current scene and the nodes in it.

Further reading: Cocos2d docs

Related words: Node tree, Scene, Node, Menu, Popup, Layer

Extension

A different name for mods that is usually used to refer to Mega Hack extensions.

GD.h

A popular library used in traditional mods that contains many GD functions and classes. Originally started by PoweredByPie, but the most popular version is the fork by HJfod.

Homepage

Related words: Geode, Traditional modding

Geode

A framework meant as a replacement for traditional modding with the aim of standardizing many aspects of modding and fixing mod incompatabilities.

Homepage

Geometry Dash

It’s the game.

Ghidra

A free tool many modders use for reverse engineering.

Homepage

.GMD Files

A file format for storing GD levels, popularized by GDShare. The level data is stored in plain text as its Plist data with a surrounding <d> tag.

.GMD2 Files

Another, more complex file format for storing GD levels, popularized by GDShare. Stored as a ZIP file instead of plain text.

Related words: .GMD Files

Hooking

Hijacking the execution of a function in GD and redirecting it to your own function. The part of a mod that actually does the modifying; the most fundamental modding concept alongside patching.

Further reading: Handbook, Wikipedia

Related words: Detour, Patching, Trampoline

Hook Conflict

A race condition where two mods try to hook the same address at the same time, but the hooking library used doesn’t provide thread safety. The result is usually one of the hooks mysteriously disappearing. A problem often found in mods that statically link MinHook.

Related words: Geode, MinHook, Race Condition

Hyperdash

An old, never-released framework for creating GD mods. An important influencer that seminally shaped how GD modding looks.

IDA Pro

A paid tool many modders use for reverse engineering.

Homepage

Layer

A distinct self-contained piece of UI on screen, for example the main menu, the icon select layer, or the move trigger edit popup. Usually inherits from the CCLayer class. In any scene, there is usually one layer at the bottom of the node tree with potentially popups on top.

Related words: Node tree, Scene, Node, Menu, Popup

Lilac

An old modding framework that merged with Cacao and formed Geode.

Manager

A class that only has a single instance at all times, which is acquired usually through a static getter method in the class itself. Common examples include GameManager, which manages everything in GD; GameLevelManager, which manages levels; and CCDirector, which manages the node tree.

Mega Hack

The most popular GD mod of all time, developed by Absolute. Also functions as one of the most popular mod loaders.

Homepage

Membercall

An undocumented calling convention used on Windows, which is a merge between thiscall and optcall. Used by the vast majority of functions in GD.

An instance of the CCMenu class that holds interactive elements such as buttons. Required for buttons that inherit from the CCMenuItem class to work, so in practice virtually all buttons in Geometry Dash. This means that every button on screen is the direct child of some menu.

Related words: Node tree, Scene, Node, Layer, Popup

MinHook

A popular library used for hooking in traditional mods.

Homepage

Mod

A program that modifies GD by adding, changing, and removing content using various techniques such as hooking and patching. Traditionally made using libraries such as gd.h and cocos-headers, but may also be made using a framework such as Geode.

Mod Incompatabilities

When two mods become incompatible with each other, for example through a hook conflict or accessing the node tree through absolute indices.

Mod Loader

A mod that loads other mods.

Node

An instance of the CCNode class or its subclass. A singular visual element on screen, for example a button or a label. Has a parent, and may have multiple children. Nodes usually utilize child nodes to form UI components over drawing their own content; for example, a button consists of a child background sprite and a label instead of drawing those in its own logic. A node may have a position, rotation, scale, etc..

Related words: Node tree, Scene, Layer, Menu, Popup

Node Tree

The hierarchy of nodes that determines the order of visual elements on screen. At the top of the node tree sits a scene, which contains child layers that in turn contain other child nodes.

Further reading: Cocos2d docs

Optcall

An undocumented calling convention used on Windows where the first and second parameters are passed through ECX and EDX and the rest through the stack, except for some floating point numbers which are passed through XMM registers. Used by many functions in GD.

Further reading: This post on the GD Programming Discord Server

Patching

Also known as byte patching; the act of directly changing GD’s program code by overwriting bytes in the raw binary. Often used to do things like simple bug fixes and bypassing anticheat. The most fundamental modding concept alongside hooking.

Related words: Binary

.Plist Files

A file format used by GD, invented by Apple, that stores data as XML organized into key-value pairs.

Further reading: Wikipedia

A layer that visually sits on top of another layer. Usually inherits from the FLAlertLayer class.

Related words: Node tree, Scene, Node, Layer, Menu

Race Condition

When two programs try to affect the same thing simultaniously and the result depends on the order in which they finish. Most commonly encountered in the form of hook conflicts.

Further reading: Wikipedia

Register

A fixed-length memory location in a CPU that can store a small amount of data. Usually, for a CPU to operate on data that data has to be stored in a register.

Further reading: Wikipedia

Reverse Engineering

The process of disassembling, decompiling, and understanding how GD works. Usually done using specialized tools such as Ghidra or IDA Pro, but may also be done using debuggers, trial-and-error modding, or just playing GD.

Further reading: Wikipedia

Scene

The node that is at the top of the node tree. There may only be one scene visible at a time, although that scene may technically contain other scenes as children. All visible nodes on screen have the current scene as their ancestor*. Switching between scenes is done through the director and usually involves a transition.

*There is a way in Cocos2d to make visible nodes without adding them to the scene, but this is not used by GD and rarely used in mods.

Related words: Node tree, Popup, Node, Layer, Menu

Stack

A last-in first-out datastructure used for storing program memory. Way too complex of a topic for a simple dictionary.

Further reading: Wikipedia, Stack Overflow

Thiscall

A calling convention used on Windows where the first parameter is passed through ECX and the rest through the stack. Used by most functions in Cocos2d.

Traditional Modding

Mods made and modding done without a dedicated framework like Geode, usually using a combination of gd.h, cocos-headers, and MinHook.

Trampoline

Also known as “the original function”, it is what you call to invoke the behaviour of the function you overwrote in a hook.

Related words: Detour, Hooking

Transition

An animation that is played when switching from one scene to another. In GD, this is nearly always a fade transition. Inherits from the CCTransition class.

Also, what most GD modders do once they become experts.

Related words: Node tree, Scene, Node, Menu, Popup, Layer

Undefined behaviour (UB)

Code where the C++ standard does not say what should happen, and as such the results are completely unpredictable. Your code is most likely full of this.

Further reading: cppreference.com

x32dbg

A debugger commonly used by Windows modders.

Homepage