Quick answer: GameMaker particle system drawing outside the view? part_system_position is in room space, but if you forgot to enable Auto-Draw, you must call part_system_drawit yourself.

Sparks at the player position render at world (0,0). The particle system’s position is 0 by default and auto-update isn’t enabled.

Set Position Each Frame

part_system_position(ps, player.x, player.y);

Particle systems aren’t parented to instances — their position is a separate value. Update it each Step to follow the emitter.

Auto-Update / Auto-Draw

part_system_automatic_update(ps, true) and part_system_automatic_draw(ps, true). Disable auto-draw if you want particles drawn at a specific layer or after a shader pass.

Layer Order

Particle system draws on the asset layer it was created on. If that layer is below the player layer, particles render behind the character. Create systems on the right layer.

Verifying

Sparks emit at the player’s feet, move with the player, draw on top of background tiles, below UI.

“Particle position is separate from any instance. Update it each step.”

For multiple emitters, store the system handle on the instance and update position in Step — you avoid the global-position trap.