initial commit

Christopher P. Brown 2021-08-24 17:17:06 -06:00
commit eb756f8817
43 changed files with 486 additions and 0 deletions

1
.gitignore vendored 100644
View File

@ -0,0 +1 @@
out.html

26
README.md 100644
View File

@ -0,0 +1,26 @@
***Status: Work In Progress / Unreleased***
# Forest Game
this is a place where i am writing a game about a forest. I'm going to try to focus on writing, and not too much on tooling. so hopefully there won't be much here
## Requirements
- m4: https://www.gnu.org/software/m4/m4.html
- just: https://github.com/casey/just
- pandoc: https://pandoc.org/
- entr: https://eradman.com/entrproject/
## Writing
Anything with a `.txt` extension will be built. if you want to create some notes or something not included in the build, give it any kind of other extension, or none
## Macros
there's a macros file. I don't know if it will be much use. but it's there. It will be used when building the text. So you can use `__monstername` if you don't know the name of the monster yet. Define a new definition for it in `macros`--e.g. define(__monstername, `jethro')--and it will appear where you need it.
## Building
there is a justfile: run `just` to see available commands

17
TODO 100644
View File

@ -0,0 +1,17 @@
write the story
keep working on encounters
how to add the dreaming 🤔
keep adding protocols
horns v wings
try adding a dream
> I can still remember who I was before the forest. I can remember this place before the forest was here.
>
> __tree
add shroombs

23
justfile 100644
View File

@ -0,0 +1,23 @@
# show available commands and exit
default:
@just --list --unsorted
# print assembled text to stdout
build:
@find src -name '*.txt' -type f | sort -n | xargs m4 macros
# watch for changes and build out.html
watch:
@find src -type f | entr just html
# create out.html
html:
@just build | pandoc --toc -s -c static/styles/main.css -H static/head.html -f markdown+simple_tables > out.html
# word count
words:
find src -type f | xargs wc -w
# clean up artifacts
clean:
@rm out.html

6
macros 100644
View File

@ -0,0 +1,6 @@
changecom(`/*', `*/')
define(__forest, `Weirding Wood')dnl
define(__witch, `Auntie Ten Fingers')dnl
define(__tree, `Grandfather Tree')dnl
define(__monster, `Leviathan')dnl
define(__perm, `(Permenant Feature)')dnl

8
src/0title.txt 100644
View File

@ -0,0 +1,8 @@
---
title: You Can Drive Out Nature With A Pitchfork But It Always Comes Roaring Back Again
...
## Introduction
This is a role-playing game about exploring an enchanted forest that is waking from a dream.

14
src/1prelude.txt 100644
View File

@ -0,0 +1,14 @@
## Prelude
Your family has lived secluded on the edge of the forest for as long as anyone can remember, which isn't that long in the grand scheme of things. Definitely since before there was a trade route down by the road. And since before there was a village over in the vale.
The villagers down in the vale refer to this forest by your family name, as though you own it. Such a funny thought. You can't own the forest. It's just *the forest*.
The forest has provided you with food and shelter and well-being. When new growth creeps out into your little meadow, you cut it back, selling the leftover timber to the traders. There is small game to hunt. Somtimes the bush brats steal whatever your thoughtlessly happen to leave outdoors over night, sometimes they leave little trinkets, stones, or other small forest treasures on your window sills, all depending on their mood.
But the forest has been sullen lately. Withdrawn. There just hasn't been any new growth. The bush brats don't venture into the meadow any more either.
And now it is late summer. The grass is long and golden, and the leaves are crimson. Before long, you'll have to think about cutting into some of the old growth so you have enough firewood to last the winter.
In the meantime, your uncle has given you some blankets to deliver to __witch deep in the tenebrous wood.

6
src/2map.txt 100644
View File

@ -0,0 +1,6 @@
## Map
Start your adventure in the bottom left corner where the Entrance (E) is.
![Map of the forest](./static/img/map2.png)

13
src/3legend.txt 100644
View File

@ -0,0 +1,13 @@
Legend
Key Description
--- -------------
E Entrance
F [Forest]
A [Fae Forest]
W [Wild Forest]
T [Tree]
C [Coniferous Forest]
B [Blighted Forest]
K [Boneyard]

View File

@ -0,0 +1,7 @@
## Location Descriptions and Encounters
Encounters: Each location below contains a list of encounters. Each time you enter a location, roll 1d6. Count that many spaces down the list and resolve that encounter. Then check it off the list. The next time you enter a location of the same type, do the same, skipping any checked off encounters. Each individual location can have a different encounter every time you return to it.
Permenant features: When you encounter a permenant feature, add that feature to the map, and then check it off the list of encounters. The feature will always be there when you return. Each location can only have one permenant feature.

View File

@ -0,0 +1,22 @@
### Blighted Forest
Rotted leaves and dead branches litter the dried, cracked earth. The ground is bleached white in places as though salted. It is eerily silent.
- Hydra Crabs
Crabs the size of your hand. If you kill one, two more appear to take its place.
- Dead animal
- Giant rat
- Lost faun
- Scorpian
- Giant vulture
- Tar pit
- Smelly Bog

View File

@ -0,0 +1,26 @@
### Coniferous Forest
It's quiet here. Dried pine needles crunch softly underfoot and absorb most sound. It smells sticky, sappy, and piney.
- Woodpeckers
- A large murder of crows stands in a circle around one of their own. They stand still and listen attentively, waiting to pass judgement, as the lone crow in the middle caws incessantly, hopping from one foot to the other now and again as though nervous.
- Bush brats
- Honeybear
- Giant ants
- Giant sloth
- Sylph Village __perm
You wouldn't even know this village was here until you stumbled into it: they make next to no impact on the forest around them. The sylph live simply in natural shelters and lean-tos. Several can be seen fletching arrows, drying fruit, and otherwise living their peaceful sylvan lives. A small but steady stream of bush brats enter the village and are lead to into a sealed cave by one of the sylph. None of them come out.
If you investigate the sealed cave, read [Protocol A].
- Hut __perm
__witch has lived here deep in the heart of the wood for as long as anyone can remember. She claims that when she was a girl, her hut stood at what then was the edge of the forest.

View File

@ -0,0 +1,22 @@
### Fae Forest
The very air seems to shimmer and sparkle in this wood. The colors seem a little brighter. Things here seem a little more surreal and a little more magical.
- [Alces]
- The sun reflects brilliantly off the mirror-like grass. It dazzles and blinds you, and shatters into small silver shards when you step on it, tinkling like broken glass under foot.
- Giant sunflowers tower over head
- In the center of a small clearing there is a black cat with large eyes sitting in a bird cage. Scattered around the cage are the remains of a dozen sprites who look as though they died gruesomely during battle. The cat peers up at you through the bars of its cage and mewls pathetically.
- Sprites
- Sprite village __perm
Families and clans of sprites live together in hollowed out portions of trees. Read [Protocol B]
- Faerie ring __perm
A circle of sturdy toadstools some twelve feet in diameter.

View File

@ -0,0 +1,28 @@
### Forest
This is a friendly wood
- Alces
- Brown wolf
- Bear
- Sylph scout
- Sprite
- Bush brats
- Faun
- Tree cat
- Giant spider
- Mossman
- Circle of Dreams __perm
A small clearing in the woods. Small cairns are piled around the edge of the clearing and in the center is a large stone circle with what appears to be a tall wild hedge ground around and between the stones.

View File

@ -0,0 +1,6 @@
### Boneyard
A haunted dried up swamp. The dorsal spines of some ancient creature jut up out of the cracked earth creating a row of ominous bleached white stone spires that reach up to the sky link boney fingers of a reaching hand. Where rib bones run along the ground, the broken ground is rippling and undulating. The creature's huge skull lies half-buried here, half of its gaping toothy maw exposed, as well as one cavernous hollow eye socket large enough to crawl inside.
At one point, this was the most lush and fertile area of the whole forest. Now a blight spreads from here into the forest, destroying plantlife as it progresses.

View File

@ -0,0 +1,4 @@
### Tree
__tree towers above the others, giving this part of the wood the appearance of a sort of domed canopy. The ground is bare beneath its massive sprawling branches. Its tangled roots are exposed enought that you think you can walk or crawl into the tree.

View File

@ -0,0 +1,24 @@
### Wild Forest
The part of the forest where the faun live is even more untamed and unruly than the rest of the forest.
- Bush brats
- Lost faun
- Giant boar
- Screeching monkeys
- Lost sprite
- Dancing feinting goats
- Grasping vines
- Faun village. An orgy of revelry and merry making. Fauns drink wine from goblets and mead from horns, and run around screaming, laughing, and falling over each other. Read [Protocol C].
- Stream
A babbling forest stream that flows in the Wild Forest

View File

@ -0,0 +1,4 @@
## Characters

View File

@ -0,0 +1,8 @@
### __witch
__witch had already lived several lifetimes by the time she first came to this place with nothing but a single seed clutched in her fist.
She resides in the wood but, unlike its other protectors--the fauns, sprites, sylphs, etc.--is not of it.
She is the progenitor of your family. Each subsequent generation inherits her as "auntie", never knowing how old she actually is.

View File

@ -0,0 +1,4 @@
### __tree
The first tree of this forest. __monster is nibbling at his roots. If __tree withers and dies, so will the forest, and so will __witch, and so will your family.

View File

@ -0,0 +1,8 @@
### __monster
An ancient sea creature that lived here when this whole forest was primordial ocean. When it died, it sank to the ocean floor and the food and nutrients provided by its carcass created abundant life.
Later, when the ocean receded, the forest grew up around in the same space around the beast.
__monster has slept through most of the history of dry land, but stirs now, distrubed by the dryness of its bones and disrupting the balance of the forest.

View File

@ -0,0 +1,4 @@
## Bestiary

View File

@ -0,0 +1,13 @@
### Alces
A behemoth deer-like creature with horns fanning out from its head like hands groping toward the sky. You could sit comfortably nestled in the cup of one of its upturned horns. It has a long nose and a bulging throat.
Mien:
Hungry
Curious
Territorial
Lonely
Aggressive
Groggy

View File

@ -0,0 +1,14 @@
### Bush Brat
A tiny barely humanoid creature that looks like a couple of leaves stiched together with bundles of twigs for arms and legs. They often appear aggressive, slinging darts and stones and tiny arrows, but are mostly just mischievous and playful. They have a small amount of innate magic and enjoy creating small pebble golems to do their bidding.
Mien:
Mischievious
Curious
Helpful
Covetous
Playful
Shy

View File

@ -0,0 +1,13 @@
### Faun
Small woodland creatures with wooly goat legs and hooves and small horns. They are short and stocky and tend to be a little rotund. They are wild and unpredictable, but are usually most interested in revelry and merry-making.
Mien:
Jolly
Drunk
Festive
Jealous
Revelry
Feral

View File

@ -0,0 +1,13 @@
### Mossman
A large shambling creature of twisted roots and green flowering vines, thick around as a tree trunk. They blend immediately and effortlessly into the forest.
Mien
Apathetic
Protective
Curious
Wary
Sleepy
Dismissive

View File

@ -0,0 +1,13 @@
### Sprite
A small winged faerie. Their wings can and, to an extent, their general appearance can be bat-like, moth/butterfly-like, or insect-like.
Mien
Playful
Curious
Aggro
Taunting
Haughty
Generous

View File

@ -0,0 +1,13 @@
### Sylph
The people of the forest. Shorter than a human, lithe and quick. Their skin is a dark brown-green like a polished hardwood, and they are covered with fine moss and small leaves in the same way a human is covered with hair.
Mien
Aloof
Disinterested
Protective
Secretive
Impatient
Haughty

View File

@ -0,0 +1,5 @@
## Protocols
These are all spoilers. Don't read anything in this section until you are instructed to do so.

View File

@ -0,0 +1,14 @@
### Protocol A
![Sylph Caves](./static/img/dungeon.png)
1. Entrance. The tunnels to the north and south are sealed by twisted cords of vines thicker than you leg.
2. Lush cave. Vines and dense plants fill this cave. A young mossman rests here. Interacting with them reveals...
3. Holding room. You find a bunch of bush brats. Their usually lush leaves look kind of wilted and covered with something that looks like strands of thin spidery silk. They resist all attempts at rescue.
4. Long hall. An elderly sylph attends a group of adolescent sylph huddled by a fire, bringing them soup and water. The sylph's mossy, leafy covering is thicker and more wild than younger sylphs, giving him a feral plantlike appearance.
5. Hatching Room. Full of plump silken cocoons. You see one crack open and a sylph crawl out.

View File

@ -0,0 +1,6 @@
### Protocol B
You strike up a conversation with sprite who has the nose, ears, and wings of a fruit bat. When you bring up the fauns, they scoff.
> "That drunken, lazy lot! They'd let this forest fall into ruin and would like that just fine! They think they own the place, but I'd like them to see how fast things would fall apart around here without us. The sprites are the one who hold this forest together!"

View File

@ -0,0 +1,6 @@
### Protocol C
One of the fauns complains loudly to you, standing a little too close.
> "Those sprites? Damned busybodies. Flitting around here and there, always rushing to be somewhere. Think they own the damn forest. Well guess what! This forest doesn't belong to them!"

27
src/Objectives 100644
View File

@ -0,0 +1,27 @@
Bring blankets to __witch: get dream mantle
Broker a truce between the fauns and the sprites
Enter the Forest Dream: your point of entry determines your appearance and aspect in the dream:
- __tree: your skin is bark
- faerie ring: you're a mushroom folk
- stream: you're a fishy aquatic person
- fruit of the dreaming: as yourself
Discover the secret of the Brat-Sylph-Moss
repair the broken dream portals
- __tree: already working?
- faerie ring: needs a toadstool
- stream: needs xxx
- fruit of the dreaming: need permission from the sylph
Sooth the Leviathan, return it to sleep: bring it water from the dreaming?

7
src/Score 100644
View File

@ -0,0 +1,7 @@
Did you deliver the blankets to __witch?
Did you create peace between the sylph and the sprites?
Did you placate Leviathan?
Did you find all four entrances to the Dream?

4
static/head.html 100644
View File

@ -0,0 +1,4 @@
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Averia+Serif+Libre&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Montserrat&display=swap" rel="stylesheet">

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

BIN
static/img/map.png 100644

Binary file not shown.

After

Width:  |  Height:  |  Size: 929 KiB

BIN
static/img/map2.png 100644

Binary file not shown.

After

Width:  |  Height:  |  Size: 855 KiB

BIN
static/img/map2.xcf 100644

Binary file not shown.

View File

@ -0,0 +1,54 @@
html {
font-family: 'Averia Serif Libre', Serif;
font-size: 100%;
}
body {
background: darkslategray;
color: antiquewhite;
font-size: 24px;
max-width: 60ch;
margin: 0 auto;
line-height: 1.75;
}
h1, h2, h3, h4 {
font-family: 'Montserrat', sans-serif;
line-height: 1.3;
margin: 3rem 0 1.38rem;
font-weight: 400;
}
h1 { font-size: 5.653rem; }
h2 { font-size: 3.998rem; }
h3 { font-size: 2.827rem; }
h4 { font-size: 1.999rem; }
h1 {
text-align: right;
}
img {
width: 100%;
}
a, a:visited {
color: aqua;
}
table {
border-collapse: collapse;
border: 1px solid;
}
th, td {
padding: 0.5rem 1rem;
text-align: left;
}
th {
font-size: 1.5em;
font-weight: bolder;
}
tbody tr:nth-child(odd) {
background-color: rgba(0, 0, 0, 0.3);
}