A tool to create interactive fiction or add interactive story elements to a game.
- License
- Installation
- Usage
- Syntax
- [
// comments
](#// xyz
) - [
{command}
](#{my command}
) - [
= Passage =
](#= My Passage =
) - [
-> Go To
](#-> My Passage
) <- Jump Back
> Choice
< Close choice
- Incrementation
- Tags
- [
- Example
This project is provided under the MIT license, see LICENSE
This package contains a heavily modified version of the MIT licensed UnitySerializedReferenceUI
Some icons provided by game-icons.net under CC BY 3.0
- Press the
+
sign inside of the Unity Package Manager window - Click on
Add package from git URL
- Paste
https://github.com/Eideren/Screenplay.git
in the text field. - Press Add
You may have to add a reference to Unity.TextMeshPro
in Screenplay/Screenplay.asmdef
through the
inspector if you have compilation issues.
Here is a video which goes over how to use this system https://youtu.be/YnPIp8d5Cmo - see also the example below.
We'll go into more details in this section about how the syntax work,
but there is an help button in the Scenario
inspector which contains a cheat-sheet for these.
This is a comment line, it is ignored by default when the system outputs the scenario on screen.
You can leave yourself notes about what you're writing through these.
This can be placed anywhere on a line, it will execute the command of the same name you set up through unity's inspector, see Usage
Setting that command to a Show On Condition
in the inspector will hide the line or
choice it is on based on variables, game state and such.
Marks the start of a passage, a passage is a point of the script where
you can jump to using the -> My Passage
command.
Execution will not continue into a new passage if you didn't explicitly jump to it with that command, it will stop instead.
You can add as many =
on either side as you need, so ==== My Passage =
is also valid.
Your passage name can contain any special characters as long as you don't split it across lines or
use =
, so === A P8$$8g&-N8m& C0mpr1$1ng un&xp&c7&d+charac7&r$ ===
would be valid.
A Go to, we will continue reading from the first line under = My Passage =
.
Will exit this passage and return to the point where we jumped from, or close the scenario if this is the first passage.
If you want to make sure that the scenario closes, you can write -> End
instead and add an empty == End ==
.
Marks choices, this line and all subsequent >
line on the same incrementation level will be
presented together when reading.
If you increment the lines below that choice, those lines will get to play only when that choice was selected.
> Slay the dragon
You remove your left shoe, hop towards the dragon and start whacking at his hind leg ...
> You can't, today is the National Mac and Cheese Day
Marks the end of a series of choices, not required unless you are doing two different series of choices without text to split them apart:
> Tee
> Coffee
<
> Add sugar
> Add milk
Will first present Tee
and Coffee
, and once either of these have been chosen, the second set of choices will
be presented, Add sugar
and Add milk
.
Without <
all four of them would be presented at the same time.
The system supports spaces and tabs but you must stick to either one throughout the same file, the first incremented line in the file defines which character and how wide each level of incrementation should be.
See > for incrementation uses.
This system supports any of the HTML tags TextMeshPro supports, place <b>
and <\b>
around text to make it bold.
Here's a fairly short example showing how the syntax works. No commands or rich tags are used here, see usage for more.
========= Start =
The great city of Maar stands before you.
Other travelers huddle around the city's gate.
> Go through the gate
-> Gate
> Approach the caravan
-> Merchant
==== Merchant =
You walk up to the large caravan, an old kobold opens the door and seeing you, waves you in.
Oh, hello stranger ! Welcome to Jebra's Emporium !
You step into the caravan while the old kobold scurries behind the counter.
So, what can I do for you ? He points to the items laid out next to him.
There's a lot of miscellaneous items strewn about, you notice a tiny kobold statue sitting on the counter
> Inspect the kobold statue
You stare at the tiny statue, its gaze shifts towards yours, it starts laughing and jumps off the counter.
Oh you ! What are you still doing here Ramji !
The old kobold spouts while the child scurries out.
Go help your brothers out, will you !
Jebra turns back to you and smiles.
Sorry about that !
-> Merchant
> Exit the caravan
You move towards the door.
Come again !
-> Start
==== Gate ==
A guard stands before the gate, his name plate reads "Immigration Officer Marmo".
Oi anything you're carrying I would like to know ?
> Nope sir, I swear on my mum
That's what I like to hear. ... Well, go on then ! I've still got yer scaly friends to deal with.
He gestures behind you to a group of kobolds unloading their caravan.
-> Maar
> Uuh, I'll be right back !
-> Start
== Maar =