58 lines
2.9 KiB
Plaintext
58 lines
2.9 KiB
Plaintext
|
###################################
|
||
|
# Untitled Storybook Game Project #
|
||
|
###################################
|
||
|
|
||
|
This will be a project to create a system whereby "Choose Your Own Adventure" (CYOA) style stories can be easily written.
|
||
|
|
||
|
Each page will read out story elements, and then prompt the user to select a new page based on a decision
|
||
|
they would like to make.
|
||
|
|
||
|
Making certain choices will also award ad-hoc stat bonuses i.e. +1 Knowledge or something, all
|
||
|
stats are presumed to be 0 until points are awarded. This stat system also includes the ability
|
||
|
to make checks when certain choices become available, or once they are selected.
|
||
|
|
||
|
Requirements:
|
||
|
1. A language description and recognizer for creating CYOA-style stories.
|
||
|
2. An interpreter and interface for interacting with these stories.
|
||
|
3. Both story-writing and story-interaction tools need to be cross platform and relatively straightforwards for
|
||
|
a non technical user to operate.
|
||
|
|
||
|
Story language PEG: (with apologies, this is my first PEG)
|
||
|
|
||
|
Story <- BlankLine* Page+ EndOfFile
|
||
|
Page <- Header Body BlankLine*
|
||
|
Header <- Identifier Newline BlankLine*
|
||
|
Identifier <- [A-Z][A-Z0-9_]*
|
||
|
Body <- Footer / TextLine Body
|
||
|
TextLine <- (!Newline .)+ Newline
|
||
|
Footer <- Ending / Goto / Choice+
|
||
|
Goto <- 'GOTO' Spacing Identifier Newline
|
||
|
Ending <- 'THE END' Newline
|
||
|
Choice <- [0-9]+ ')' Spacing (!Redirect .)+ Redirect
|
||
|
Redirect <- StatCheck? Spacing '[' Identifier ']' Spacing StatChange? Newline
|
||
|
StatCheck <- '<' StatName Spacing [0-9]+ ('+' / '-')? '>'
|
||
|
StatChange <- '(' ('+' / '-') [0-9]+ Spacing StatName ')'
|
||
|
StatName <- [A-Za-z]+
|
||
|
EndOfFile <- !.
|
||
|
BlankLine <- Spacing Newline
|
||
|
Spacing <- (' ' / '\t')*
|
||
|
Newline <- '\r\n' / '\r' / '\n'
|
||
|
|
||
|
Work log:
|
||
|
|
||
|
12/13/21
|
||
|
Right now I need to make a decision before any of the work has started on how the user would interact with the system.
|
||
|
I think for a MVP it would be okay to just write a console application, but I think for the long term there needs to
|
||
|
be a decision made on how this will work. I'm leaning towards one of three options.
|
||
|
|
||
|
1) We put the whole thing on the JVM and make it a library or something.
|
||
|
Maybe in the future we can make a frontend for making and playing stories
|
||
|
as a web interface, but we could make the interface pluggable as far as the backend is concerned.
|
||
|
2) I build this non-traditional game in a traditional game engine (Godot probably). This ensures cross-platform
|
||
|
availibility. I'm not 100% sure about my ability to use parsers in Godot, but this looks like a good option.
|
||
|
3) I build this as a reactive web page. I know this sounds like a terrible idea, but there are actually a lot
|
||
|
of cool image and text transition libraries out there. It does mean setting up something like React tho, which
|
||
|
like, just kill me now
|
||
|
|
||
|
Out of the three of these I think the Java thing would be the easiest and I think the Godot thing would be the best.
|