Event systems
When you're looking to engage the player roaming around in your game, it is best to throw them off guard and challenge them when they least expect it; this ensures that the player is paying attention while playing, and it also serves to keep them on their toes at all times.
The following methods help to achieve this:
Fixed systems: This is where the places and interactions are actually planned in advance by forcing the player to be drawn in to an event at prescribed times/places
Random generation: This involves using random systems to challenge the player within a given time frame or occurrence, giving the player a chance of an event but not a certainty of one
There are merits and demerits with either approach for the player as they interact with your game. Fixed systems are easy to implement but limit replayability (game becomes dull in the second or subsequent runs), whereas random systems can be trickier to get the balance right but it also mean the player will likely keep playing...