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.
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.
Cocos-headers
A popular library used in traditional mods consisting of Cocos2d headers with many of RobTop’s modifications added.
Debugger
A tool used for debugging another application (usually GD) for issues (usually crashes), such as x64dbg 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
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.
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.
Geometry Dash
It’s the game.
Ghidra
A free tool many modders use for reverse engineering.
.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.
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.
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.
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.
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.
Menu
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.
MinHook
A popular library used for hooking in traditional mods.
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..
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
Popup
A layer that visually sits on top of another layer. Usually inherits from the FLAlertLayer
class.
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.
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.
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.
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
x64dbg
A debugger commonly used by Windows modders.