class_name SimEvent extends RefCounted ## Discrete things the authoritative simulation decided. The server drains this ## list every tick and ships it to clients on a reliable channel; clients apply ## them to their replica. Continuous state (positions, hp) goes in snapshots ## instead -- events are only for things a client can never re-derive. enum Type { BULLET_SPAWN, ## uid, pos, vel, radius, life, kind, team, accel, turn BULLET_DESPAWN, ## uid -- early death only; expiry is derived on both sides PLAYER_HIT, ## peer, damage, hp PLAYER_DIED, ## peer PLAYER_RESPAWNED, ## peer, pos ENEMY_HIT, ## id, damage, hp ENEMY_DIED, ## id BOSS_PHASE, ## phase index BOSS_DIED, ESCAPE_STARTED, ## peer ESCAPE_CANCELLED, ## peer ESCAPE_COMPLETED, ## peer -- the instance layer acts on this PORTAL_USED, ## peer -- the instance layer acts on this }