Quick answer: GameMaker controller objects duplicating each room restart? Persistent objects re-instantiate without destroying old instances - guard creation with instance_number checks.

Audio controller is persistent. After 10 room restarts, there are 11 of them all responding to the same events.

Guard creation

if instance_number(obj_audio) == 0 {
  instance_create_layer(0, 0, "Controllers", obj_audio);
}

Idempotent creation: only create if none exists.

Or place in a single 'init' room

Persistent controllers live in a one-frame init room that the game enters once. Subsequent rooms can't accidentally re-create them.

Audit persistent flag usage

Object inspector shows the persistent checkbox. Persistent + created-per-room = leak. One or the other.

“Persistent objects break the create-per-room contract. Guard their creation.”

Standardize on a single PersistentControllerSpawner script. Every persistent controller goes through it; the leak pattern stops being possible.