I don't use events for gameplay in my current game engine, but I might want to add them in the future.
Right now I use markers for everything and have my game loop operate in passes:
- Spawn/despawn
- Determine game state(run simulation, run dialogue, in-game menu, restart scene, etc.)
- Simulation internals: Get input, run physics(entity movement and environment collisions only), run AI systems(mark for spawn/despawn here)
- Render
Every entity maintains a hook into the different subsystems, so they may or may not have physics, AI, or rendering. This gives me broad control over priority, it means entities don't have unnecessary overhead, and it lets me get fine-grained too, as I can always push unique physics, AI, or rendering code into a separately maintained data structure and just reorder which of several similar systems get to go first: "Player AI, then NPC AI, then bullet AI...."
However, where I perceive events coming in handy is in formalizing things I currently do by dumping "magic marker" variables onto the property lists of entities and having the entities test for them. The AI will want to know a variety of things like "Did I get shot? Did I touch a wall? Did switch X get triggered?" and with an event system I can hopefully remove the "set variable/test variable" pairings that currently litter the code to implement those features.