Permanent PowerupProgression

Acquiring an item or ability permanently increases a player capability that persists through death and save/load.

A Super Mario mushroom: grab it to grow big and stay big; a hit shrinks you back but you keep going — the power persists until it's lost.

How permanent powerup works in Godot

A permanent powerup is persistent state that survives death and save/load — categorically different from a consumable. It's a flag or stat in GameState, never reset.

Dictionaryprimitive

Hold permanent abilities and capacity boosts as flags/values that the respawn and load paths never touch.

var permanent := { "double_jump": true, "max_hp": 8 }
# respawn() restores hp but leaves this untouched

Resourceprimitive

Wrap permanent progress in a GameState resource so it saves as one object — the powerups travel with the save file.

class_name SaveState extends Resource
@export var permanent := {}
# ResourceSaver.save(state, "user://save.tres")

Signalsprimitive

Emit powerup_gained so abilities and gated doors react immediately — and stay reacted-to after a reload.

signal powerup_gained(id)
func grant(id):
    permanent[id] = true; powerup_gained.emit(id)

In short: Persistent boolean or stat modifier in GameState; does not reset on death; separate from consumable items

Retro games that use permanent powerup

36 catalogued game(s) use this mechanic, spanning 1986–1996.

Related progression mechanics

▶ Explore Permanent Powerup interactively — see every game + the Godot system