Autumn Lisp Game Jam 2025

Brainstorming
Login

Brainstorming

Implementation

Love

HTML / Love?

HTML / Fengari

Help text

"I will be your eyes, hands, and ears."

VOLUME 1, VOLUME 10, MUTE, UNMUTE commands. [c15e045577daea74]

CREDITS to show developer names, credits for sound clips we use. Credits also show when you win the game.

Parser

LPeg

Canonicalize various representations of commands in the process of parsing, e.g. GET TAKE PICK UP could all get canonicalized to the string constant :TAKE. Same with objects that may have multiple ways to refer to them. Make a single representative form that can be pattern-matched with a Fennel case expression.

(case parsed-input
  [:TAKE obj] (... do something to pick up obj ...)
  [:EXAMINE obj] (... do something to examine the object ...)
  _ (print "Huh?"))

Audio visualization

Live scrolling stereo spectrogram of L and R stereo audio channels. Like Music from another room. Looks neat and is an experiment in accessibility.

May not be easy/possible with Love2d: Getting rendered audio (e.g. as SoundData) before it is sent to the speakers?.

With Web Audio, can use AnalyserNode.

Text interface

Think about IRC: you have your own text input at the bottom, and while you are typing other people's messages are arriving and scrolling upward above your input line. When you hit Return on your own message, it enters the history and scrolls upward with the others.

That's how I envision the text interface. There's a line at the bottom that waits for your input, but meanwhile real-time sounds are playing. The sound files are annotated with text captions (maybe using Praat), and when that part of the sound plays, the corresponding text enters the message stream, above the line of input the player is editing. Maybe with different colors for sounds versus room descriptions versus player commands.

Town Square
You are in a town square with cobblestones below your feet.
There are exits to the north and east. A wheelbarrow leans
against a tree.
* "—boards today! Bill builds 'em, you buy 'em." (radio)
>look at wheelbarrow
You see nothing special about the wheelbarrow.
* Bong (the bell rings).
* A dog barks.
* "Cheep!" says a bird.
* Bong. Bong.
>play the magic flute

GNU Readline may or may not make this possible. The main readline binding for Lua seems to have a limited subset of the API, though.

linenoise (lightweight alternative to Readline and libedit) has an asynchronous API that is designed for exactly this purpose; the documentation even calls it the "IRC problem". But linenoise may(?) not work on Windows. Also, neither the lua-linenoise nor the ljlinenoise Lua bindings has the asynchronous API.

libedit and luael Lua binding?

Non-blocking stdin input in Fennel and Love

Bell tower

Real-time chimes.

Radio

Two joke stations, one real station that gives you information you need to progress (phone number, safe combination, ...?).

Bad reception on the necessary station, need to carry the radio up a gondola to the top of Snowy Mountain to get good reception. ("This station isn't getting good reception here." "As you approach the mountain, the station is coming in a little stronger.")

E.g. TUNE RADIO command. TUNE RADIO TO 103.5.

>TUNE RADIO
What station do you want to tune the radio to?
1.  90.1 Ear Whacks
2. 103.5 The SLAB
3. 106.7 ???

"You're listening to the Dusty Rock Room, on 103.5 The SLAB." "Coming up next, a little Dusty Springfield. But first, a message from our sponsor." And then never get to the music, it's only funny commercials. "Bill's Surfboards - Bill builds 'em, you buy 'em." "You won't find Bill's boards on a billboard - only on the radio." "From the Himalayas to the Serengeti, Bill's Surfboards have you ready." "Browse our exciting selection of board wax!"

"All wax cylinders, all the time." https://archive.org/details/cylindertransfer https://archive.org/search?query=subject%3A%22wax+cylinder%22 "This next one will knock your socks off." "This next one's gonna make your head explode." "The seventh caller will win tickets to EdFest." "Playing hits of the 1880's, 1890's, and today."

"Just a reminder that there are no hints or progression on this station. Federal regulations prohibit us from providing hints or progression on this station. If you are looking for progress, you'll have to tune to <special frequency>."

Bird chamber

Hallway/room with hundreds of noisy birds. Need to dispel/quiet them somehow.

"A cheerful little bird is sitting here singing. In fact, there's hundreds of them! What a racket!"

The bird noises get echoed to the text transcript, and their noisiness is reflected in how fast the text is scrolling. You can hardly hear yourself type.

After you solve the bird chamber, the single bird that remains becomes an item. It sits on your shoulder and you can hear it whistling on the right side.

A cheerful little bird is sitting here singing.
>take bird
Understanding your meaning, the bird flits up and takes a place on your right shoulder.
>i
You are carrying:
  little bird
>drop bird
The bird descends in a tidy arc and alights on the ground.

Sound effects when moving between rooms

Depending on the floor surface. *trudge trudge trudge*

Yodeling and engine noises while taking the gondola up and down the mountain. Whistling wind at the summit.

Hear sounds from adjacent rooms. Maybe special "sound-only" exits to hear things in rooms you can't actually walk to directly (like being able to hear the bell tower anywhere outside).

Cheat codes

Big head mode. (Stops you from passing through a narrow corridor.)

Directionality

Slightly different descriptions (and sounds!) depending on which way you're facing in a room.

Joke puzzle

A treasure chest with a seemingly intricate puzzle, "line up the gems" or something like that, but put on the +2 Boots of Puzzle Solving, kick the chest, and it pops open.

Audio / music

Keep sound files mono, 44.1 KHz.

https://archive.org/details/animalsounds1

Clock tower machinery.

Special reward music track when you win the game. Plays until you Press any key to exit.

Win Conditions

Let's subvert the Collector trope!

You begin the game in the n−1 floor of the clock tower. At the beginning of the game, a trap door locks shut above your head. Drat! Wait, what did I come down here for again? On the way down the tower, you see a preview of the puzzles you'll need to solve to get into floor n, which is the goal of the game. Once you get the trap door open, you remember: oh yeah! I was supposed to feed the cat! (Your cat that lives with you in the belfry.)

You identified 3 types of mushrooms, out of a possible 7. This qualifies you as a Noob Class Adventurer.

Player motivations

Tower levels (puzzle maps)

Maybe each level when you unlock it emits a noise that feeds into the final music that plays when you unlock the top of the tower again? It might be a bit too complex for this jam but if there are multiple possible outcomes for each level, the final music could be different depending on how you played through it.

Makes me think of the Sound Stone in EarthBound (video).

Zelda-like jingle to let you know when you've solved a puzzle.

Combination lock (code from numbers station)

Get radio Go to Snowy Mountain Tune to numbers station Enter numbers in lock
right
box "Get radio"
arrow ->
box "Go to Snowy" "Mountain"
arrow ->
box "Tune to" "numbers" "station"
arrow ->
box "Enter" "numbers" "in lock"

Instead of the combination lock being for your own door, have it unlock something out in the world (so it makes a little more sense why the combination would be being broadcast). Could be that that's what unlocks the cat food. (Didn't see ae7bb48989 when I wrote this.)

Gravel Pile
There is a useless pile of gravel here, the remains of some past construction project.
In a shady spot there is a plywood box with an incongruous and imposing combination lock on it.
>x box
Stenciled letters read
STRATEGIC CAT FOOD RESERVE
FOR EMERGENCY USE ONLY

>enter code
OR >enter 01342
OR >01342
OR >enter code in/on box
OR >enter code in/on lock
The combination lock opens, revealing the contents of the box: a bag of cat food.

>look
There is a useless pile of gravel here, the remains of some past construction project.
In a shady spot there is a plywood box with an incongruous and imposing combination lock on it.
There is a bag of cat food here.

>get the bag

The lock should make a beep-beep-beep noise when you enter a code.

>feed cat
Feeding the virtual cat makes you feel good IRL.

Door with no handle

You see a door with no handle. Maybe it opens from the inside?
> knock

With your knuckles you wrap out a catchy rhythm. Hey you should remember that one! Unfortunately it doesn't prompt movement from the other side of the door. On second thought, you have been in a bit of a creative dry spell lately.

> knock

You're not feeling very inspired.

You've got to get inspired by the world to come up with a truly unique beat, causing the denizen on the other side of the door to open it

Rushing rapids

The path takes you to some rushing rapids. You are momentarily mesmerized by the complex swirling patterns that the water makes as it climbs over itself to traverse the rocker river bed. And those sounds!
> listen

You pause for a moment to take in the full range of melodies offered by the rushing river. From the gentle undulations of the water at the edge of the river bank, to the mad, swirling chaos in the centre, nature's complex symphony brings tears to your eyes and you feel truly inspired.

> (go back to tower level)

> knock

You really get into it, using both knuckles, your elbows, the soft rustling of clothes, you lose yourself in your performance. Just as you're about to get carried away and use your head to evoke the sound of a snapping tree branch, the door is flung wide open. "Inspired!" yells the voice from inside and you hear a set of drums start to play, picking up where you left off.

The door to this level is now open and drums like the sound of violently rushing water emit from inside.

Maybe we could have two different possible points of inspiration, which produce slightly different messages and responses but both open the door.

Mirror

On this level there is just a mirror. It turns out to be a one-way window and you've got to dance?

On this floor you see a mirror.
> look at self

Looking good! It's always nice to do a fit check on the way out.

> bust a move

Ouch! You should really warm up first before attempting something like that.

Warm up and unlock at least one of the other musical levels before you can dance well enough.

> dance

You get caught up in the music. Whew! That was pretty good. You hear the clanking of dishes through the wall and sheepishly realize the creaking floorboards must have woken someone up. The delicate domestic sounds mingle nicely with the [list other unlocked levels] though.

Padlock

Pet door

You need to get some good smelling food and a cat with a key around its neck comes out (this almost reminds you of why you need to get up to the top). You take the key and use it to unlock the door on this level.

Bird level

You see a sleeping songbird perched out of reach across the stairwell. You can't wake or interact with it yet.

You need to get a cheerful little bird (maybe the one that likes wax cylinders?) and bring it to this level. The cheerful little bird's song wakes and inspires the songbird to chirp out a wonderful melody.

Maybe there's some tricky interaction with the cat level that you need to sort out. A cat and a bird create the potential for an unfortunate interaction. But it's okay—the bird is a hipster bird and the cat is a hep cat, so they get along.

Hint mushroom

Eating the mushroom takes you on a brief spirit quest where a cosmic rutabaga gives you a hint about one of the things you've not done yet.

Once you eat the mushroom, it's gone. If you want to see the other hints you have to play again.

Title

?