Pezna Story Engine

Hello everyone, this is the first project I’m posting on this forum.

My partner and I have been developing a story creator/engine to ease development and implementation of a story for and in games.

As you can see from the screenshot above, you are able to create a story in the form of a flowchart.
When I was working on a game (which is currently on hold), I searched for a way to easily create a story and use it within my game, but I could not find any such software. As a result, Pezna Story Engine was born.

With this, you don’t need to waste time hard-coding your story into your game, you can easily use the flowchart system to write out your story. You are capable of having variables within the game that you can utilize with condition statements to branch into another scene or line.

The engine itself is already in a stage where it can be shipped off, but there are many features that we would like to add to it first. Although the engine is “complete”, in a sense, the desktop software (GUI that is displayed in the screenshot) that will be used to create the story is incomplete. That is the only thing preventing a release of the beta demo version.

Current features:
-Conditions
-Goto statements
-Organized into scenes
-Choices for input from user
–Choices may direct the flow of the story, alter a variable’s value, or both.
-Libgdx runtime complete
-When displaying Typewriter effect with variable speed

Many more features are planned for it, but if you can give me some feedback on what you would like to see in it, that’s be great.

Added some new features:

  • New command: alter variable values
  • Refined story syntax: choices can now conditions attached to them, determining whether they are shown or not
  • Variable values can be used in text by enclosing the variable names in percent signs. Eg: %var1%

Interesting! But how difficult is it to implement the actual storyboard into a game? Do you provide a way to easily insert speech? Or does the programmer have to create a parser to use the data?

It’s very easy. I’ve already created the library that reads the data and does everything for you.

You simply tell it what the filename of the story is and it reads and parses everything. The entire story can be run with only next() and nextLine().

I’ve added another picture to the original post. I felt like the first image didn’t do it justice.
Currently, the boxes can’t be resized, but I think that’s something that will be included when it’s released.
Zooming may be a possibility in the future, but it will be a struggle calculating the correct font size to use when zoomed.
Right now, my concern is simply making sure everything works and is as useful to everyone’s needs as possible.
Currently, the runtime that we have is very flexible, and you can jump to any scene or line that you wish.

I’ve once been working on something similar: http://sourceforge.net/projects/situflow

besides having dialog trees bases solely on the choices, the flow engine kept two variables, which also did influence the choice of a the next situation if a flow.

E.g. if you made a dialog partner angry in an earlier step of the dialog, the flow could chose a different result even for the same answer, than if you have established a friendly relationship earlier.

It’s not 100% bulletproof, but it worked quite nicely.

Just downloaded that. It was very confusing and had no idea what I was doing.
Are you still working on it or have you stopped?

I’ve stopped working on it several years ago. On one hand it seemed good enough for my needs, on the other hand I relaized how bad I am at writing such dialog or situation flows, and lost interest once the basics were implemented. Also, most of my projects are just proof of concept works. Once I see the idea is working, I lose interest.

It’s not very self-explanatory, indeed. The initial situation is created by program start. If you click anywhere, you get a conditions box for followup situation. If you click an empty space again, a new situation box appears.

To open a new branch from a situation, click the title bar, and then some empty space. You’ll get a new condition box, from which you can go into a new branch.

A situation comes with 5 possible responses, and each response can alter two condition variables. The conditions boxes allow to enter conditions for this branch - the response number to triger this branch (-1 to allow all) and bounds for the two condition variables.

Edit:

Maybe, to get a better idea, you can downloa the janitor orc example from here:

http://sourceforge.net/projects/situflow/files/Situflow%200.18/

Then start the application, chose “Import XML” from the file menu, and load the example. To try it, select “Run Simulator” from the edit menu. A new window will open where you can test the situation flow. Some branches are short, some are a bit deeper.

I just ran the simulation. Nice.
For Pezna Story Engine there is currently only JSON export and import. Although it wouldn’t be too hard to include XML.

Added some new features:

  • New command: alter variable values
  • Refined story syntax: choices can now conditions attached to them, determining whether they are shown or not
  • Variable values can be used in text by enclosing the variable names in percent signs. Eg: %var1%