Keeb's Quest - 003 Primitive scripting for a larger test
Now it was time to test if the "core mechanic" was any fun! My family enjoyed the previous tiny example and the idea of typing branching text to choose a path in the "adventure" seemed pretty solid.
But would it hold up in a larger narrative?
This next demo uses a nearly identical "engine" - it’s actually a little shorter at 140 lines instead of 150. :-)
But I certainly wasn’t going to type out a large example with the hard-coded indexes I’d used before!
So I created an extremely simple "game script" format to author the content.
Using indentation plus an "arrow" (→) syntax to represent branching made it pretty easy to write and read the game script.
Here’s an excerpt taken from the top of the whole game.script file:
;; start
i was in the forest
and i wandered to a
waterfall -> waterfall
cave -> cave
;; waterfall
the cool water thundered down
and i was
brave -> behind_falls
frightened -> field
;; behind_falls
so i stepped closer
and saw that there was a
space behind the falls
so i
searched it -> search
ran away -> field
A 78-line AWK script called script2json.awk converted the game.script to a JSON data structure called game.json.
Here’s a tiny portion of the JSON data (you can see that the AWK script doesn’t bother to indent or otherwise pretty-print the JSON output):
{
"start":{
"paths": [
{"str":"i was in the forest"
, "paths": [
{"str":"and i wandered to a"
, "paths": [
{"str":"waterfall"
,"sect":"waterfall"
},
{"str":"cave"
,"sect":"cave"
}]
}]
}]
},
A little SVG sketch provides the tiniest bit of atmosphere:
Click on the screenshot above or this link to try it out: 003/index.html
The whole thing was pretty much stream-of-conciousness and it makes for a pretty crummy game and a pretty crummy story. But I think it answers the basic question:
Q: "Is this a fun way to play a game?"
A: "No."
I’m a normal 60+ WPM typist and I found it to be a total pain to get through even a small portion of the script. Especially navigating back to areas and chosing a different path.
It’s not fun to type an area the first time, and it’s awful to type something twice.
So no, this wasn’t going to work in its current form. I would need to refine the idea.
