Event Engine:

Started by The Crazy Animal, July 14, 2006, 06:17:43 AM

Previous topic - Next topic

0 Members and 3 Guests are viewing this topic.


One of the big things that MMUD was lacking was an event engine all objects were static unless otherwise acted on by a player. This included the experience of the content and plot in this everything needs to be sought by the player. To me the game would be much more engaging if the content sought me out as a player. One of the ways this can be fixed is by allowing dynamic events to take place and be announced to players. Now there are a lot of ways this could happen and I?ll give some examples below:

The pre-announcement of a pending event:
Yarnian Scout Gossips: An Orc War party has been spotted on the road to the town of Yarnia.

A few minutes later:
Mayor of Yarnia Gossips: Brave adventures please come to our aid! Telepath me and we will arrange your transportation to our town.

We can then allow the players to telepath the mayor and receive some dialog and if the event is accepted by the player they would receive an ability designating them as active in this event. The player would then run to the closest pickup area and be transported to Yarnia for the event.

Then as the first players start to arrive on the scene there?s an announcement that the event has started:
Mayor of Yarnia Gossips: The Orc war party has stormed our (directional location) walls!

This tells the players where to go in the area with out needing to seek out the need of searching out NPC.

Depending on the number of players responding and the elapsing of time other events can be triggered giving details on the slaughter of the townsman and other atrocities taking place featuring the known unique NPCs from that area. This provides those unique NPCs an emotional content basis for players to latch onto as the NPCs become more know and actively engage players.

Events can then be started and tracked across a time line using soap opera like theatrics that takes place in game time. This allows us to present Heroes, Witnesses, and the Villains in an active and engaging way that can interplay drive the content that must be sought out by a player. So if no one stops the war party they continue to the next town and the town after that. As the war party continues it gives us opportunities to introduce the locations of areas, lists of characters, and present hints to players that would otherwise take extended play time to find out about.

Now since you we would want more then one event to happen across the realm at the same time this could create a problem if they are all trying using gossip to lay out their short messages. Something like 100 NPCs chattering about their current problems could potentially be very disruptive to player to player conversations so what I would do is make a secondary communication for the majority of this to take place on. So this could be like a TV or Radio channel if you don?t like something that?s on or you?re trying to concentrate on something else you can turn it off or change the channel. If you want to here the news you would tune into the newscaster channel. I would like a better name for it but for use here that?s good enough.

Building an Event Engine:
I talked a little in the post supply and demand about making NPC life material driven.
http://greatermud.com/forums/index.php?topic=693.msg4263#msg4263

To continue elaborating on what I said there events are made up of a trigger and a response that by other means creates the action. In order to have a trigger the event engine must be able to monitor a given set of variables. When those variables reach their specified limits the event is then triggered by means of a script. The specific variables that are needed to be monitored can be any valued aspect in the game. Such as a players bank account or their level or how many monsters exist in a particular room.

Let?s take a look at the example of an Orc war party. This event could be triggered in a number of ways.

1. Using a set room in that Orcish tribe?s territory an Orc warrior is spawned in that room at the rate of 1 per say 10 hours. When there are 15 Orcish warriors in that room it triggers the event to start. A Script then takes over the function of moving these Orcs where they need to be.

2. Using a set room in that Orcish tribes territory Orcish Scouts (NPC Cleaner Agent) drop off found items. When there are 15 sets of a common type of armour a war party is spawned and a script is run to control them.

3. Orcish NPC crafters are set to build items at a given rate. Script driven NPC Orcs Tribesmen or Tribeswomen are made to buy these items and when they have a set amount of gear they are upgraded to Orcish Warriors. Orcish Warriors have a script to tell them to go to a monitored room in their territory and wait. When the specified number of Orcish Warriors reach that room an Orcish War leader is summoned which leads the Orcish War party on the rampage via a script.

4. Farmers of a town are set to harvest a particular crop and drop it in a silo. When the silo has reached a limit the script starts the crop is switched from the monitored one to a secondary one and the Orcish war party is triggered to raid that area. The script for the war party is set to try to get the crop. For each orc that gets some of the crop and takes it to a second monitored room a set number of reinforcement Orcish warriors are spawned and swarm a second nearby town. This is an event linked to a second event.

As you can see there are lots of ways we could trigger a single type of event that could happen quite frequently in the game. It would be even possible to link more events from a single event. However there is more we can do with this then just count to a limit and play out a soap opera like script we can watch for an item to be removed from a room too.

Now here is something that can really enforce a low level script (low level script is the types of stories a player makes as they play). What can be taken that can have an effect on the game: Dragons eggs comes to mind how better to draw out a dragon from its lair then to steal from its golden nest its most precious brood. Steal an egg and the dragon comes to town. Treasures and rare items taken from their greedy owner?s hands there?s another. Take back a stolen item the thief throws a fit and goes on a rampage. Nab the journal of the wicked kings deeds and hand deliver it to his potentially unruly citizens, tell me of a better way bring an army out of the barracks and send the citizens into a riot. Events triggered by actions like this help reinforce that a players action have an effect on the game. These are the types of things we can do that are not yet clich? nor expected by a player. The ways of enforcing a low level script however don?t need to be super complex to be effective though. They can be as simple as the revealing of players actions back into the game such as: a player is sent to retrieve the evil tax officer?s treasury box from his house. The event engine then responds by generating news about the tax officer?s house being robbed this is both simple and effective to reinforce that the players actions mean something.

The most basic things we need to track are things like items, locations, monsters, players, bank accounts? All of these are things that are already easily known or already stored in the game so this shouldn?t be as hard as making a new system from scratch. The event engine then uses these pre-existing variables in an, if then statements that when passed it triggers a script to control all the other actions.

Simple as:
Get map #, room #
If Item# "150", Quantity = 15
   Then Run script or textblock # 1548
   End {The event engin then moves to the next event}
Else End {The event engin then moves to the next event}

This should take all of 3 fields in a database Id, Trigger, Call Effect

Otherwise we could potentially run the scripts directly from those rooms but that would kind of decentralize everything. Which is the nicest feature of this idea.


I think an easy way to do this would be similar to how it's done in WoW. Have a regional chat area, generally surrounding a city or something similar and have these sorts of messages appear there. That way if you're out adventurning near Yarnia and shit hits the fan, you can move your ass to the aid of the city (and hopefully a hefty reward).

Also, being able to turn off the 'local area chat' would be useful, too.

Very true thats kind of what I was getting at with the bit about the newscaster channel lacking a better name. I guess the ideal set up would be to have a main channel and the sub channels for each area. So you could fine tune into the area you want.

Just a suggestion....

In town, a crier wanders about announcing recent events. Out of town, NPC bards and minstrels wander about singing the news of the past week.

If you happen to be in the room as they pass through you hear bits and pieces... enough that you know they are there. You can take the bits and pieces or ask them directly for details.

"The Town Crier enters the bar from the West"... "Ohyeah, in the town this day a reward is placed upon the head of <username> for the piracy of the King's Golden Toothpick."... "Be it known to all good men that the town of Yamia will hire swords in their time of dire need"...
"The Town Crier leaves to the West."

You might miss several announcements unless you greet him and give him reason to stay in the room.

If you engage them in conversation "what news have you?"
They can list a selection of events. Ask about a particular event and they will fill in the details.

Might even be appropriate to tip them a coin or two lest they create mischief for you... Something annoying but relatively harmless like making your pants fall down around your ankles and trip you. (Spell)

That way it becomes less like the screen bottom ticker on CNN and more like an RPG. 
The list can be made to update at different rates for the town crier and the wandering minstrels so they always have more stories, and older ones, but not the recent news... For that you have to go into town.

It would indeed be possible to miss bits and pieces of important news, but I think that is actually a desirable feature rather than simply have The Divine News announce it. It would require active involvement to be informed.

An event such as entering a tavern or public house, making camp in the wilderness areas, etc could have a moderate percentage chance to summon one of them into your current room... Higher chance in town and very small in the far reaches of the realm.

People who play regularly, would stay better informed... People who script or stay gone for long periods would miss lots of news, BUT...
People who didn't happen to be logged on at the time the even occurred would still have a very good chance of catching anything important at the tavern, or catch up on the past week's major highlights by minstrel in the areas outside of town.



Quote from: Phelonius on January 01, 2007, 07:19:05 PM
Just a suggestion....

In town, a crier wanders about announcing recent events. Out of town, NPC bards and minstrels wander about singing the news of the past week.

If you happen to be in the room as they pass through you hear bits and pieces... enough that you know they are there. You can take the bits and pieces or ask them directly for details.
(snip)

NPC Bards:
http://greatermud.com/forums/index.php?topic=376.0
NPC Complex AI Uses:
http://greatermud.com/forums/index.php?topic=120.0
NPC (wiki stuff)
http://www.greatermud.com/wiki/index.php/Idea:NPCs

We?ve been jumping around of a bunch of related ideas with this type of focus. Due to the size of the game we need to be able to launch events both locally and globally since players can be almost anywhere in the game. So it?s important that we can do both types of system messages when needed. The art in it is really finding a good balance.

Quote from: Phelonius on January 01, 2007, 07:19:05 PM
That way it becomes less like the screen bottom ticker on CNN and more like an RPG.
The list can be made to update at different rates for the town crier and the wandering minstrels so they always have more stories, and older ones, but not the recent news... For that you have to go into town.

Good points. I wouldn?t want it to get to the point where it looks like a CNN ticker but I would like the global messages to appear to be coming from characters in the game. I?d like to mask it well enough that it becomes hard to tell if it?s a live game-op controlling and spawning events or if it?s the game running a batch of scripts. Like I said before though since people spend most of their time scripting and we can?t be sure exactly were they will be. So we still need ways of communicating recent news to them even if it?s not as accurate or verbose as the info you could get the closer you are to an event area.

Quote from: Phelonius on January 01, 2007, 07:19:05 PM
It would indeed be possible to miss bits and pieces of important news, but I think that is actually a desirable feature rather than simply have The Divine News announce it. It would require active involvement to be informed.

Mystery, misdirection, missing facts? These are all things that make people curious and keep people interested. However too much of these things will make people frustrated, lose interest, and or give up. I agree that allowing it to be possible to miss bits of important info is quite desirable but we also need to supply a certain amounts of givens (un-miss-able info) to people so we can get people to look for more info that they might have missed. So in a way we unnoticeably lead them onto the path of a story without them noticing. It?s important to remember the best part of an adventure is not the beginning or the ending but everything that is in between. If we have 8 routes to the town of Yamia and we globally announce an event there. Then we have just created 8 small adventures to get there. If there are 4 small towns you pass through on one of those routes then there are 4 possible spawn points for other adventures that might open up sub-adventures for a player taking up that journey. When we do events just locally we lose some of that ability to direct a player through subtle uses of misdirection when dealing with large expanses of areas.

Quote from: Phelonius on January 01, 2007, 07:19:05 PM
An event such as entering a tavern or public house, making camp in the wilderness areas, etc could have a moderate percentage chance to summon one of them into your current room... Higher chance in town and very small in the far reaches of the realm.

I agree with you totally here. I really want the game to respond to where and how players are playing. In doing that the game then starts to take on a character of its own in its interactions with the players rather then being a stagnant map that a player must navigate on their own accord.

Quote from: Phelonius on January 01, 2007, 07:19:05 PM
People who play regularly, would stay better informed... People who script or stay gone for long periods would miss lots of news, BUT...
People who didn't happen to be logged on at the time the even occurred would still have a very good chance of catching anything important at the tavern, or catch up on the past week's major highlights by minstrel in the areas outside of town.

This is pretty much a given that in a dynamic game that if you don?t pay attention your going to miss things happening. You right on the money with this we definitely need to create opportunities for players that have for what ever reason have been afk or on break to catch up to the realm happenings.

Quote from: Phelonius on January 01, 2007, 07:19:05 PM
Might even be appropriate to tip them a coin or two lest they create mischief for you... Something annoying but relatively harmless like making your pants fall down around your ankles and trip you. (Spell)

I love easter eggs like this you never really know what types of things you?ll get when you crack them open. I would like to see small things like this put in simply because it enhances the character development of the npcs that perform the functions. 


don't forget the buying the town drunk a drink in the tavern,.. what the heck was that movie?
the one with the singing cowboy? he said all towns were exactly the same in the old west? and the town drunk(played by that guy from police academy)
became his sidekick. andy griffith played the town colonel?