timgarrels / gameprog-detective-server

Server Komponente für "A Detecitve Game" des Gameprog Seminars
https://hpi.de/studium/lehrveranstaltungen/it-systems-engineering-ma/lehrveranstaltung/wise-19-20-2889-game-programming.html
3 stars 0 forks source link

Dynamic Story Point #15

Closed timgarrels closed 4 years ago

timgarrels commented 4 years ago

The current data architecture of the story does not allow dynamic story changing. The user can choose paths, but the paths are the same for all players and do not have any possibility of preconditions.

Say we have a reply "Open the door" and we want this path only to be possible if the player picked up a key earlier (precondition). Thats not possible yet. Same thing with the key pickup: Say we have a reply "Pick up key", that we want to hide, once it's taken. Thats not possible either. Neither the storage of "has picked up key"-boolean nor the dynamic hide of the reply based on that bool.

We have the problem, that our current data structure for the story does draw paths between storypoints and supplies the points and paths with messages/replies, but we can not script anything between them.

We might need a structure that

I wrote a few text base adventures, where I scripted everything. All storyPoints where objects and the options where functions. But as @Paulpanther noted, that is 1. not human readable and 2. not shareable (the current json is)

Any ideas? @Paulpanther @ADimeo @robinwersich

robinwersich commented 4 years ago

I came up with the following structure, which I think is ok concerning readability and allows preconditions, side-effects and dynamic path decisions (I could not find a useful scenario for postconditions).

Story Structure

state representation

story graph

timgarrels commented 4 years ago

@Paulpanther made the remark that we are basically replicating UML. Assuming he meant BPMN hes correct. We probably use BPMN to save our story structure, especially because we then can rely on existing, well tested tools to create, edit and visualize the story. And the process of loading and actually executing the story (data format to run time behavior) would be significantly less work

timgarrels commented 4 years ago

This was omitted as we realized how complex such a task would be.