summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README137
-rw-r--r--TODO.org11
-rw-r--r--apple-town-fair/game.scm21
-rw-r--r--apple-town-fair/place.scm9
4 files changed, 163 insertions, 15 deletions
diff --git a/README b/README
new file mode 100644
index 0000000..c98ddbc
--- /dev/null
+++ b/README
@@ -0,0 +1,137 @@
+-*- org -*-
+
+#+TITLE Lisp Game Jam 2022
+
+* Idea
+
+A Boku no Natsuyasumi-like about a long weekend in the Massachusetts
+countryside in October, culminating in a town fair.
+
+* Gameplay
+
+The player traverses several different location and interacts with the
+people/objects in them. The player wakes up in the early morning
+(6am) and goes to bed in the late evening (9pm.) Most actions advance
+the game by 1 hour, some will take more. Certain actions are only
+available at certain times or if certain other conditions are met, so
+doing *everything* in the game requires replays and being careful
+about order of operations. However, there is no failure state. The
+game can just be enjoyed as an experience. The exact ending will vary
+based on how many story points the player earns for accomplishing
+certain tasks, but every ending is a good ending.
+
+There are items that can be bought in the game. The player has a
+fixed amount of money and cannot buy everything. What they buy
+influences later events and possible story points.
+
+The game takes place from Friday-Sunday in October. The exact days
+will not be specified. The game concludes at 9pm on Sunday.
+
+Not everything is realistic. There will be some supernatural events
+for fun, such as a ghost encounter.
+
+Boku no Natsuyasumi has several references to WWII. This game should
+have some references to the genocide of Native Americans by European
+settlers. Fall in New England is wonderful, but our cultural
+traditions of apple pies and pumpkin carving are built on top of land
+stolen from natives.
+
+* Locations and what's in them
+
+** Home
+- Where the player starts and ends each day.
+- Animals:
+ - House cat
+- Action: Bake
+ - Condition: when player has apples
+ - Condition: Only on Saturday
+ - Player gets choices about how to make the pie:
+ - Which apples to use (if they bought more than one type)
+ - How much cinnamon
+ - How much nutmeg
+ - How much flour to thicken filling
+- Action: Carve Pumpkin
+ - Condition: when player has Jack o' Lantern pumpkin
+- Action: Go to bed
+ - Condition: Anytime after 7pm.
+- Action: Watch TV
+ - Add some fun slice of life informational nuggets here that change
+ a few times per day.
+ - One of the TV bits should be a baking show that explains how to
+ bake a good pie.
+ - Another TV bit should give some native american history
+ - At least one of the TV events should unlock something cool
+ elsewhere.
+- Action: Inspect garden
+ - The garden is mostly done for the year, but there are carrots that
+ can be picked. On Saturday morning, there has been a frost.
+ Picking the carrots that day yields frost-sweetened carrots
+ instead of the regular carrots of Friday. On Sunday, if they
+ aren't picked, the player will find that the groundhog took them
+ all.
+
+** Trail by the river
+- This trail offers a break from the other, populated locations, and
+ is a necessary step to get to the orchard.
+- Add some interactable elements for classic New England forest finds:
+ - old stone walls
+ - types of trees
+ - ferns
+ - wildlife
+- Action: Forest Bathe
+ - If player has learned about pumpkin contest and has Jack o'
+ Lantern, they will become inspired, improving their carving and
+ increasing their rank in the contest.
+ - Otherwise, just share some interesting observation about the New
+ England forest with the player.
+- Event: Deer encounter
+ - If the player has carrots and shows up between 6am-9am on
+ Saturday, the deer will approach the player.
+ - If the player has frost sweetened carrots, there will be very
+ pleased and will lead the player off the trail to a small defunct,
+ overgrown orchard with an heirloom apple tree of unknown variety.
+
+** Farm stand
+- People/Animals:
+ - Farm stand cashier
+- Store is open from 9am-5pm each day
+ - Buy pumpkins (Sugar or Jack o' Lantern)
+
+** Orchard
+- People:
+ - Orchard store cashier
+ - Dog
+- Store is open from 10am-4pm each day
+ - Buy 1/2 peck of apples (Cortland, Macoun, Honeycrisp)
+ - Buy cider/cider donuts??
+- Event: Ghosts in the orchard
+ - Condition: Friday night on or after 8pm
+ - Just a fun spooky event. Nothing bad happens.
+
+** Town common
+- Interact: Stone marker memorializing when the town was burned down,
+ righfully so, by native Americans.
+- People:
+ - Person on bench (Friday and Saturday)
+- Action: Learn about upcoming town fair and associated contests.
+ - Condition: On Friday or Saturday
+- Event: Sunday, 10am-4pm, Town Fair
+ - Apple pie contest
+ - Player gets first place if:
+ - They found and used the heirloom apples
+ - They used 1tsp of cinnamon
+ - They used 1/4tsp of nutmeg
+ - They added flour to thicken the filling
+ - Quilt raffle
+ - Action: Buy raffle tickets
+ - 0-3 tickets can be purchased. If player has enough money left
+ to buy all 3, then they will win the raffle.
+- Event: Sunday, 5pm-7pm, Pumpkin Walk
+ - Pumpkin carving contest
+ - Players gets 1st place if:
+ - They carved Jack o' Lantern (not Sugar Pumpkin)
+ - They got inspired during forest bathing
+ - Player gets 2nd place if:
+ - They carved Jack o' Latern
+ - They did not get inspired forest bathing
+ - Player gets 3rd place otherwise
diff --git a/TODO.org b/TODO.org
new file mode 100644
index 0000000..b292c37
--- /dev/null
+++ b/TODO.org
@@ -0,0 +1,11 @@
+* TODO
+** DONE [#A] Time/day progression
+** DONE [#A] Game reset
+** DONE [#A] Going to a new place
+** TODO [#A] Interacting with places
+** TODO [#A] Actions available based on game state conditions
+** TODO [#A] Core story events
+** TODO [#B] Ambient environment sound loops for all locations
+** TODO [#B] Backgrounds for all locations
+** TODO [#B] Dialog box background
+** TODO [#C] Endings
diff --git a/apple-town-fair/game.scm b/apple-town-fair/game.scm
index 5ede549..71ee13a 100644
--- a/apple-town-fair/game.scm
+++ b/apple-town-fair/game.scm
@@ -490,29 +490,28 @@ August 1675")
(define-class <choose-action-mode> (<major-mode>))
(define-method (advance-clock-once (mode <choose-action-mode>))
- (advance-clock (parent mode) 1))
+ (advance-clock ($) 1))
(define-method (quit-game (mode <choose-action-mode>))
(exit-catbird))
(define-method (up-selection (mode <choose-action-mode>))
- (up-selection (& (parent mode) menu) 1))
+ (up-selection ($ menu) 1))
(define-method (down-selection (mode <choose-action-mode>))
- (down-selection (& (parent mode) menu) 1))
+ (down-selection ($ menu) 1))
(define-method (confirm-selection (mode <choose-action-mode>))
- (let* ((scene (parent mode))
- (place (& scene place))
- (chosen (selection (& scene menu)))
+ (let* ((place ($ place))
+ (chosen (selection ($ menu)))
(action (find (lambda (a)
(string=? (name a) chosen))
(actions place))))
- (run-script scene
- (hide (& scene menu))
- (perform action scene)
- (hide (& scene dialog))
- (show (& scene menu)))))
+ (scene-script
+ (hide ($ menu))
+ (perform action)
+ (hide ($ dialog))
+ (show ($ menu)))))
(bind-input <choose-action-mode> (key-press 'r) reset-game)
(bind-input <choose-action-mode> (key-press 'escape) quit-game)
diff --git a/apple-town-fair/place.scm b/apple-town-fair/place.scm
index b96130d..01750da 100644
--- a/apple-town-fair/place.scm
+++ b/apple-town-fair/place.scm
@@ -17,6 +17,7 @@
#:use-module (catbird config)
#:use-module (catbird node)
#:use-module (catbird node-2d)
+ #:use-module (catbird scene)
#:use-module (oop goops)
#:export (<action>
condition
@@ -34,11 +35,11 @@
#:init-form (const #t))
(exec #:accessor exec #:init-keyword #:exec))
-(define-method (performable? (action <action>) scene)
- ((condition action) scene))
+(define-method (performable? (action <action>))
+ ((condition action) (current-scene)))
-(define-method (perform (action <action>) scene)
- ((exec action) scene))
+(define-method (perform (action <action>))
+ ((exec action) (current-scene)))
(define-class <place> (<node-2d>)
(title #:accessor title #:init-keyword #:title #:init-value "Unknown")