quote:That really threw me off, I just read through the last nineteen posts and couldn't find half of the quotes people had of you. Your outbursts are quite plentiful
Original post by Oluseyi
And now, I'll go set an example by deleting all my outbursts.
On a more related note, I have been doing extensive work on graph structures lately (in computer science), and I really think that the process of narative interpolation could be implemented quite smoothly using graphs. The trick lies in storing information in the Links .
To use a basic example, let us imagine a game world of four rooms. From every room, you can move to any other room in the world.
each room contains a StoryNode:
The room where the player character starts may contain some enemies or some NPCs of a friendly sort. Interactions cannot affect StoryNodes that are outside of the room (the NPC's influence space), but the NPCs can affect any connected StoryLink:
So lets say the PC is in room one, there is a townsman in the room with him, in room 2 is a bard, in room 3 is a beast and in room 4 is the inn.
The PC speaks to the townsman and tells him that he is going to kill the beast. The townsman is impressed and gossips about it. the gossip takes the form of a change in the flagset in the StoryLinks to rooms 2, 3 and 4 (however, the beast is the only game entity in room 3, so it's effects there are minimal).
The PC then goes to room 3 and kills the beast, and subsequently goes to the tavern in room 4 to rest.
If the PC took long enough to fight the beast, the bard would travel to room 3 and see it, and then go to room 4 and embelish on the tale. Then the PC would get free housing and food, otherwise, the bard would get there late, and the PC would have to pay the normal amount.
This is a menial example, but what's important is the implication of events.
An Event would be described in the FlagSet for any particular StoryNode in the game, and it's repercussions would not affect other nodes directly, but rather any connections that exist. The completion of a connection must be conditional, in order for the bard to embelish on the PC's feat enough, he must have travelled to room 4 first, and also have been there for a certain amount of time. It might be wise for the PC to visit (hitherto unmentioned) room 5 which contains a blacksmith who will spend time repairing the PC's equipment. The blacksmith may have previously heard about the PC's intent, and will ask how the fight went.
If the PC never told anyone, and a passerby saw the whole thing, then maybe he would have a similar (but delayed) effect as the original townsman. Or perhaps, if the PC is already famous, people would actually come to watch.
This is all trivial however, the real reason this implementation is useful is that the game only checks through currently active StoryLinks (those connections which contain a non-empty FlagSet). This could be accomplished by having another object contain a list of all non-empty StoryLinks. I don't expect that the game would process this information for every iteration of the game loop, but it may well be done quite often.
George D. Filiotis
Are you in support of the ban of Dihydrogen Monoxide? You should be!
[Edit: Just made sure source doesn't extend wider that page.]
Edited by - Oluseyi on January 30, 2002 7:56:54 PM