Why nothing happened
The runtime skips what it does not understand. Here is how to find what it skipped.
8 min readThe runtime is deliberately forgiving: an unknown behaviour, an unknown node or a missing target is skipped rather than crashing the game. That is what lets an old project keep opening in a newer editor — but it also means a mistake often produces silence rather than an error.
So the first move is never to stare at the graph. It is to open the console.
Open the console
- Press F12 and choose the Console tab.
- Press Play.
- Read anything prefixed <span class="mono">[gcs]</span> — that is the game engine talking to you.
What the messages mean
| Message | Cause |
|---|---|
| behaviour "x" threw | A behaviour hit an error. Everything else keeps running. Usually a setting it cannot use — a missing texture, a number where text was expected. |
| node x failed | A logic node errored. Check its target still exists. |
| loop node ... stopped at its limit | A loop ran to its iteration cap. The exit condition never became false. |
The console is silent and it still does not work
Then nothing errored — something simply is not connected. In rough order of likelihood:
- A typo in a tag.
enemyandEnemiesare different tags. Collision rules match exactly, and a rule naming a tag nothing carries is silently never triggered. - A behaviour name is misspelled. Unknown behaviours are skipped, so the entity just sits there. Check the spelling in the inspector.
- Nothing is wired to the event. An event node with an empty output pin runs nothing. Follow the wire with your eye.
- The entity has no physics body. Collisions need bodies on both sides. Static for walls, dynamic for movers.
- It is behind something. See below.
It runs, but I cannot see it
Check the layer of the last thing you added. Backgrounds belong on Background, the game on Main, the score on UI. If a sprite vanished the moment you added scenery, that is why.
The other version: the entity is outside the world bounds, or below the floor. Select it and look at its position in the inspector.
It worked, then stopped
- Something destroyed it. A node acting on
selfafter the entity was removed does nothing. - A Once node in the chain has already fired.
- A variable drifted out of range — a life count below zero, a timer that went negative. Watch it on the HUD with a bindText template while you play.
Print a variable while it runs
The fastest debugging tool here is a text entity on the UI layer with a bindText template listing whatever you are unsure about. It updates live, costs nothing, and tells you in seconds whether a value is what you assumed.
Template: hp {health} spd {speed} wave {wave} lives {lives}
Start from something that works
If a graph has grown confusing, delete the wire rather than the nodes. Reconnect one link at a time and press Play after each. Whichever connection brings the problem back is the one to look at — and this beats reasoning about the whole graph at once.