EVENT Category
The EVENT category contains the node tree entry points and engine event detectors. These are the nodes that start execution or trigger it in response to something that happens in the scene.
Three groups
Entry Points
Nodes with no In socket. They are the root of the tree — the compiler generates a separate Python method for each one.
| Node | When it executes |
|---|---|
| On Start | Once when the component is created |
| On Update | Every frame |
Event detectors
Nodes with an In socket that branch execution based on whether an event occurred:
| Node | Type | Detected event |
|---|---|---|
| On Key Press | Branch (True/False) | Key pressed / held / released |
| On Collision | Branch (Hit/None) | Collision with another object |
| On Mouse Move | Branch (Moving/Still) | Cursor movement |
| On Timer | Branch (Elapsed/Waiting) | Internal countdown |
| On Property Change | Branch (Changed/Same) | BGE property value change |
Message bus
A pair of nodes for communication between objects without direct references:
| Node | Role |
|---|---|
| On Message | Receiver — waits for a message with a subject |
| Node Broadcast | Sender — sends the message to all receivers |
When to use each
One-time startup → On Start
Every frame → On Update
Keyboard input → On Key Press
Physical collision → On Collision
Mouse movement → On Mouse Move
Internal periodic event → On Timer
React to BGE property → On Property Change
Cross-object communication → On Message + Node Broadcast
Multiple entry points in the same tree
A tree can have both On Start and On Update (and multiple of each). The compiler generates a separate method for each:
def start(self):
# → nodes connected to On Start
def update(self):
# → nodes connected to On Update
All other nodes (detectors, FLOW, AI…) must be connected to one of these entry points to execute.
On Timer vs Delay (FLOW)
| On Timer | Delay (FLOW) |
|---|---|
| Own entry point | Requires OnUpdate as root |
Countdown with deltaTime() |
Absolute clock getClockTime() |
| Exposes Progress socket (0→1) | No progress |
| Repeat = True by default | Repeat = False by default |
On Message vs native sendMessage()
Node Broadcast + On Message use globalDict — they work between RNC Python components. Range's native sendMessage() uses the Logic Bricks system and is not compatible with this bus.