Skip to content

Add Undertale - #63

Merged
Mason363 merged 19 commits into
mainfrom
claude/numplay-undertale-game-howdik
Oct 16, 2026
Merged

Mason363 merged 19 commits into
mainfrom
claude/numplay-undertale-game-howdik

Conversation

@Mason363

@Mason363 Mason363 commented Oct 16, 2026 •

Copy link
Copy Markdown
Owner

Undertale as a standalone app, from the Ruins to the neutral ending. README and release notes updated.

…walking, doors, text)

A new big game, built from public material: the Undertale Wiki's maps of every area (each room one
pixel for one), its sprites, and the free demo's own sprite files from undertale.com. tools/fetch.py
gathers them, tools/pack.py cuts the Ruins' 46 rooms into 20-pixel tiles with a collision map each.
The renderer draws the game's 320 x 240 in bands; Frisk walks the rooms and their doors.
…uins' monsters, menus and saves

The battle at the original's size halved: its box, buttons, FIGHT's target and bar, damage, speech bubbles,
the SOUL and bullets. The Ruins' monsters with their stats, texts, ACTs and attacks as the Undertale Wiki
records them: the Dummy, Froggit, Whimsun, Moldsmal, Loox, Vegetoid, Migosp, Napstablook and Toriel, and
Flowey's first meeting. The intro, title, naming (with the game's replies to special names), the C menu
(ITEM, STAT, CELL), SAVE, GAME OVER; saves copied into undertale_saves.py.
Every room of the Ruins, joined as in the game: dark doorways and chutes
become doors (tools/rooms.py LINKS), the objects the wiki's map paints in
are taken out for the game to draw (rocks, spikes, Froggits, Napstablook,
SAVE stars), leaf piles are walked on, the house's rooms have their floors.

Toriel's puzzles and lessons, the phone and her calls, the Monster Candy,
the cracked floors and the rooms under them, the rocks (the one that talks
back too), the leaf puzzle, the mouse hole, Napstablook, the Spider Bake
Sale, the Froggits' hall and its yellow names, the one switch and its six
rooms, the four rotating rooms, the balcony and the Toy Knife, Toriel's
tree, her house, the bed and the pie, the basement, her fight, Flowey's
judgement and the end of what is made so far.

Events are protothreads on GCC's labels as values now: a wait inside a
switch used to end its event. Rocks can be pushed; a fade can stay black
(sleeping). tests/check.py plays the menus, every battle, the saves and
the whole Ruins (tests/ruins.path) on the host build.
Undertale.nwa is built and released with the other big games, tested on
the emulator and on a computer in CI, and has its own README, its place
in the big games, the gallery, the credits and How to play.
The forest road with Sans and Papyrus, and every one of Papyrus's puzzles:
the invisible electricity maze, the ball game, the word search, the X and O
tiles (the second with its switch in a tree, the third on ice), the
multicolor tiles and the Gauntlet. Doggo, Lesser Dog, Dogamy and
Dogaressa, Greater Dog, Snowdrake, Ice Cap, Gyftrot, Jerry, Chilldrake and
Glyde, each spared their own way. Snowdin Town with its shop, inn,
Grillby's, library and Papyrus's house, the Papyrus fight with the blue
SOUL (he captures you instead of killing you), the date and his phone
number, and the Dimensional Box.

The engine gains ice to slide on, the blue SOUL's gravity, shops, plank
bridges and side doors in the continuous maps. tests/check.py now plays
the whole of Snowdin and every new battle; the ice puzzle was checked
solvable under the game's own slide rules.
Toriel's lessons and phone calls, Flowey at the Ruins door, the frogs'
advice, Snowdin's library books and Papyrus's notes now say what they did in
the game in shorter words of our own, rather than the game's script. The
choices and the events they lead to are unchanged.
Sprite frames and map tiles now live in LZMA blocks (a sprite's frames
together, a room's tiles in 8 x 8 squares of 2 KB blocks) that blk.c unpacks
into a 60 KB cache in RAM, the least recently used thrown out first. The app
goes from 1.51 MB to 690 KB, which leaves room for Waterfall, Hotland and New
Home. Playing all of Snowdin unpacks 451 blocks, at most 17 in one frame
(entering a room).
Waterfall's west half, cut from the wiki's map: Monster Kid, Sans's booth
and the trip to Grillby's, the echo flowers, the stream's rocks and the tutu,
Papyrus reporting to Undyne from the tall grass, the bridge seeds (pushed
into the water they bloom into flowers to walk on; the bell calls them back;
a secret bridge leads to the quiche), the wishing room and the history
boardwalk, Undyne's spears to the hiding place in the grass, Sans's
telescope, the Nice Cream cart and the punch card, the marsh and its ballet
shoes, the bird over the gap, Onionsan, the piano's song and the artifact,
the statue and the umbrellas, Monster Kid walking along under the umbrella
to the view of the castle, and the bridge, where the game now ends.

Its monsters, each spared its own way: Aaron (out-flexed), Woshua (ask to be
cleaned, catch its green drop), Moldbygg (hug it, then let go) and Shyren
(hum along). What everyone says is in short words of our own.

The engine: objects that are floor (the bloomed seeds), pushed rocks that
may go into water, and the entry nudge now sees the room's own floor.
The packer: black ground counted only near its grass tufts (the marsh).
The tests: a Waterfall walkthrough, its battles fled, fought and spared;
Snowdin now leads on into Waterfall.
The marsh south of the telescope room is now the way on, as on the wiki:
its land is black and its bright blue water is crossed by planks, down the
ladder past Loren, through the ballet shoes' tall grass and up onto the
narrow black path by Onionsan's water. The small bird waits across the gap
of bright water, out of reach from this side. The test path walks the marsh.
Undyne cuts the bridge and Frisk wakes in the garbage dump, on golden
flowers. Then the Trash Zone and the walkway with its cooler of Astronaut
Food, Mad Dummy (a ghost: hits go through it, but its own missiles led back
into it don't, until Napstablook drifts in), the Quiet Area, Blook Acres
with Napstablook's house (lie on the floor with them) and the snail farm's
races, the small bird that carries Frisk back over the gap, Gerson's shop,
the twin waterfalls, the mushroom maze and the hidden way down to Temmie
Village and its Tem Shop, the one shop that buys. The game now ends past the
maze.

New monsters: Mad Dummy and Temmie (talk to her, or feed her Temmie
Flakes); new items from the shops and the dump. What everyone says is in
short words of our own. The tests walk all of it and fight, flee and spare
the new battles.
The rest of Waterfall, as the Undertale Wiki describes it (what's said is
short and in our own words):

- The lantern maze past the mushroom maze (the map draws it with no way
  through for Frisk, so two grass tufts of one wall are left out).
- The dead end: its echo flower, Undyne coming up behind, Monster Kid
  jumping out of the grass in her way, and the hidden path lighting up.
- The echo flowers' path north, and the prophecy's glyphs at its end.
- The chasm's bridge: Monster Kid learns Frisk is a human, trips and
  hangs off the edge as Undyne comes; help them up, let them fall, or
  run off, each with its own ending.
- Undyne on her crag, then her fight: the green SOUL stays put and turns
  its shield with the arrows to block her spears from four sides, and
  her spears come up from the ground. She can't be spared: fled from,
  she chases Frisk by the river and the neon sign (where she waits for
  Papyrus's call), and a catch is another fight.
- Hotland's first room (a new area cut from its map): Undyne falls in
  the heat on the bridge, and a cup from the water cooler gets her up.
  The game now ends there.

Tests: the Waterfall route goes on to Hotland, and Undyne's fight is
fled from in the battle checks. Docs and screenshots updated.
Hotland's first floor, as the Undertale Wiki describes it (what's said is
short and in our own words, the quiz questions too):

- The crossroads before the Lab (the Royal Guards at the elevator, the
  River Person's dock), then Alphys's Lab: the lights come on, Alphys
  meets Frisk, and Mettaton bursts in with his quiz show. After it,
  Alphys upgrades the phone: its CELL now opens the Dimensional Box.
  The fridge holds Instant Noodles.
- Conveyor belts that carry Frisk; the Magma Chamber's steam vents that
  throw Frisk over the lava (west leads on, east down to the Burnt Pan);
  the laser walkway, its lasers sweeping across (orange: keep moving,
  blue: stand still), and a laser's alarm when one catches Frisk.
- The puzzle hub: its vent turns a quarter each time it's used; the two
  shooting puzzles (dark blocks pushed a cell per arrow, two shots: the
  rules worked out to give exactly the wiki's solutions) open the door
  north; Alphys switches off the blue laser before the left one.
- The vents over the lava, and Mettaton's cooking show: the ingredients,
  Alphys's vegan substitute, and the jetpack up the growing counter
  against the clock. The CORE far off, and the elevator up, where the
  game now ends.
- Vulkin, Tsunderplane and Pyrope, each with its ACTs and attacks.

Engine: battles that play their own way are a table now (Flowey's first,
the quiz, the jetpack, the alarm); a shooting puzzle screen
(MODE_SHOOT); belts, vents and lasers in Hotland's rooms; a map-cut
sprite option keeping only some colours. The test driver learns
"vent:x,y" and counts a door within a room as a point reached.

Tests: the Waterfall route now ends at the Lab's crossroads; a Hotland
route goes on to the elevator; the new battles are fled from, fought
and spared. Docs and screenshots updated.
The elevator from the first floor now goes up to the second, as the
Undertale Wiki describes it (what's said is short and in our own words):

- Out of the elevator: Heats Flamesman, who wants his name remembered,
  and Sans's hot dog stand (a Hot Dog...? for 30G).
- The crossroads: the invisible path up to the Art Club's room, and the
  Stained Apron to the south (armor that heals 1 HP every other turn).
- The conveyor belt puzzle: the top belt runs left as fast as Frisk
  walks, past three switches to press one after another; Alphys calls,
  makes Frisk miss the third, and switches the force field off anyway.
- The vent puzzle: each panel landed on turns every vent around, the
  top platform turns them back, and falling off lands on the belts that
  carry Frisk back round; out by the top-left platform's vent, turned.
- The Bad Opinion Zone (a SAVE, the safe, the mouse hole, Alphys on her
  favorite anime's sequel), and the Royal Guards at the bend: clean 02's
  armor, catch its green stars (they fall right over the SOUL) until it
  comes off, whisper to 01, and both can be spared; kill one and the
  other attacks twice as hard. No running from them.
- Mettaton's news report: the lights, the six things to report on, and
  everything is a bomb. Two minutes on the clock: touch each bomb and
  defuse it (Defuse or FIGHT) while it crosses the DEFUSE ZONE, each
  moving its own way. The script rides the belt, the basketball bounces,
  the glass of water darts about; lasers guard the bottom, a vent leads
  up to the present. Alphys switches the big one off either way.
- The CORE again, and the elevator up, where the game now ends.

Engine: a clock drawn over the room (room_draw_top); force fields;
the bombs share one monster with a look and a pattern for each.

Tests: the first floor's route now ends up the elevator; a second-floor
route goes from the hot dog stand to the elevator, sparing the guards and
letting the news report's clock run out after one bomb; the guards are
fought and spared, a bomb defused both ways. Docs and screenshots.
Some pages wrapped to four or five lines, past the bottom of the
three-line box (and a page with a choice has room for two, the
choices taking the third). Their lines are broken at the box's width
(29 letters beside a face, 33 without) and split into more pages where
needed, in the Ruins, Snowdin, Waterfall and Hotland. The words are the
same, a few a little shorter.
The elevator from the second floor now goes up to the third, as the
Undertale Wiki describes it (what's said is short and in our own words):

- Out of the elevator: the spiders' bake sale (a donut or cider for
  9999G) and the scared donut guy.
- The vent islands: every grate blows the way its arrow points, to the
  next island (the routes match the wiki's); Alphys calls about the
  door east, which opens once both shooting puzzles are solved (one
  shot each, the wiki's solutions: left then right; left, up, left,
  left, right). North, the Diamond Boys come out after; south, over the
  belts past the laser drones (ride them without a step: they're
  blue), and Alphys asks Frisk to watch anime with her.
- The spider entrance (a SAVE) and Muffet's lair: its webs slow Frisk
  down, the big one stops Frisk, and Muffet fights. Her SOUL mode keeps
  Frisk's SOUL purple, on three strings; her spiders ride them, her
  croissants come back, her donuts bounce, and at mealtimes her pet
  waits as the strings are pulled down to it. Pay softens her hits,
  Struggle halves the price; she lets Frisk go when her spiders send
  word (turn 17), or after one of their treats.
- Mettaton's musical on his balcony, the trapdoor, and the tile puzzle
  below with its 30 seconds and flames: red tiles are walls, yellow
  ones shock Frisk back, orange smells of oranges (then the blue water's
  piranhas bite), purple soap slides Frisk on and smells of lemons, blue
  next to yellow is electrified. Then Mettaton's fight: no hurting him,
  until ACT Yellow turns the SOUL yellow and its shots drain him.
- The crossroads: the Nice Cream guy (sold out to the Royal Guards if
  they were spared, who stand there with their ice cream), Heats
  Flamesman asking for his name, the elevator R3, and the stairs north
  to the MTT Resort, where the game now ends.

Engine: the purple and yellow SOUL modes; floors that slow Frisk
(room_speed); the shooting puzzles' shots per puzzle.

Tests: the second floor's route now ends up the elevator; a third-floor
route goes to the Resort's stairs (Muffet spared, the tiles solved,
Mettaton's power drained); Muffet spared and Mettaton's yellow button in
battle. Docs and screenshots.
The stairs north of Hotland's crossroads now lead into the MTT Resort,
as the Undertale Wiki and its map describe it (what's said is short and
in our own words):

- Out front: Sans, who asks Frisk to dinner and takes a shortcut into
  the restaurant. At the table he tells of the door in the forest, the
  jokes through it, the old lady on the other side and his promise to
  her; then he leaves. A note points up the alley on the right, where
  Bratty and Catty sell what they find in the dump: Junk Food, the Empty
  Gun, the Cowboy Hat (+5 AT as well) and the Mystery Key.
- The lobby: its SAVE, the fountain and its plaque, the elevator to the
  capital that's out of order (and the guests stuck by it), the
  MTT-Brand Burger Emporium with Burgerpants (Starfait, Glamburger,
  Legendary Hero, Face Steak), and the desk with a room for 200G.
- The restaurant (no table without a booking) and its guests; the
  hotel's hallway: room service at doors 1 and 3 (a Sea Tea, a
  Cinnamon Bunny: 99G each), the room of door 2 and its bed, and a dog
  behind door 4 that trades a Hot Dog for a Hush Puppy.
- North, the door to the CORE, where the game now ends.

Engine: shops can show their keeper over the picture; prices up to
65535G.

Tests: the third floor's route ends in the Resort now; a Resort route
(dinner, a Starfait, a night's sleep, the doors, the CORE's door). Docs
and screenshots.
The door north of the MTT Resort's lobby now leads into the CORE, as the
Undertale Wiki and its map describe it (what's said is short and in our
own words):

- The approach, where two black shapes back away inside, and Alphys
  calls; the lobby, its elevator out of order (it works once the far
  side's reached); the fire pit that isn't on her map; the doorway,
  where Madjick ambushes Frisk.
- The switch that turns off the force field and sends its lasers
  through (Alphys says orange, orange, blue; it's blue, blue, orange);
  the crossroads, east, no, north first: Knight Knight's ambush.
- The laser bridge: Alphys cuts the power, a field on its own battery
  closes behind; at the wall of blue lasers the power keeps coming back
  (it flickers first): walk while it's off, freeze while it's on.
- The Core Branch (a SAVE; Alphys gives up calling): the sage's path
  and its shooting puzzle (up, up, left, down, left, down, left, and
  two shots), the warrior's path and its three set fights and switch,
  or a minute's patience in front of the force field; its signs, a
  Glamburger and 100G in its trash cans, random encounters.
- The End's bridge, the Core End (a SAVE, the elevator back), and
  Mettaton: he owns up to the monsters, the elevator and the maze, and
  to Alphys's plan. His box can't be hurt; when Alphys calls about the
  switch on his back, Turn him round and flip it. Then Mettaton EX's
  show: the ratings (4000 to start, falling while Frisk dawdles) rise
  with Boast (through his turn, unless he lands a hit), Pose (more the
  more hurt Frisk is), Heel Turn (the crowd cheers each hit), his
  brand's food, the Stick, a fight, a hit taken; Junk Food lowers them.
  His legs, bombs and blocks, arms, heart, bots, disco ball, bomb pairs,
  a union break, rewinding rows, his heart's lasers; his arms fall off
  after turn 11, his legs after 17 (ratings count double after). Past
  12000 (10000 legless) the calls come in, and he runs out of power.
- The hallway: Alphys tells Frisk what it takes to go home; the
  elevator up to the castle, where the game now ends.

The CORE's monsters: Final Froggit, Whimsalot, Astigmatism, Madjick,
Knight Knight (their stats, ACTs and spares from the wiki).

Engine: bullets drawn as plain rectangles; a monster can end its battle
at once (bt.result = BR_SCRIPTED).

Tests: the Resort's route ends in the CORE now; a CORE route (Madjick and
Knight Knight spared, the lasers, the power, the sage's puzzle, a
Glamburger, Mettaton's show a hit, Alphys, the elevator). Docs and
screenshots.
The CORE's last elevator now goes up to New Home, as the Undertale Wiki
and its map describe it (what's said is short and in our own words):

- The elevator (and one back down), the grey city's street, the front
  yard and its SAVE.
- Asgore's home: the stairs down chained shut, a note on the chain, a
  key in the kitchen and one in the hallway; the children's room and
  its two presents, the Worn Dagger (+15 AT) and the Heart Locket
  (+15 DF); the room under renovations, his room.
- The basement's two corridors, where the story of Asriel and the
  first human is told as Frisk walks (in eleven short parts), and the
  elevator at its far end (the street's works once it's reached).
- The Last Corridor: Sans, what EXP and LOVE are, and his judgment
  (no EXP: no LOVE gained; his brother; what comes next is Frisk's).
- The throne room's entrance (a SAVE), Asgore watering his flowers,
  the coffins below, and the room before the barrier ("The End").
- The barrier: Asgore asks if Frisk is ready, breaks MERCY with his
  trident and fights (his fire's helix, rain, rings and hands, his
  trident's blue and orange sweeps; talking with no EXP, or Toriel's
  pie, lowers his guard, and it falls on its own after turn 20). Beaten,
  he kneels: kill him, or spare him and hear him out, and Flowey's
  pellets finish him.
- Flowey takes the six SOULs: Omega Flowey, not turn by turn: his eyes'
  shots, flamethrowers, a closing ring of pellets, vines, bombs, finger
  guns; now and then a SOUL fights for him (the light blue's knives,
  the orange's fists, the blue's stars and shoes, the purple's words,
  the green's pans, the yellow's gun) until Frisk reaches the ACT
  button among its attack and calls for help: its attack heals then.
  All six helped, they turn on him, and FIGHT comes down to be reached.
  At 0 HP the SOUL won't give up. Beaten, Flowey is spared or killed.
- Through the barrier, Sans's call after: who rules now (the lady from
  the Ruins if she was spared, else Undyne and Papyrus), Mettaton's
  show, and the king gone; then THE END.

Engine: a battle's MERCY can be broken (only FIGHT, ACT and ITEM); the
end screen takes its words.

Tools: fetch.py gathers New Home's wiki pages too.

Tests: the CORE's route ends in New Home now; a New Home route (the
keys, the presents, the story, Sans, the throne room, Asgore fought and
spared, Omega Flowey, Flowey spared, the end); the test driver stops
reading on at the end. Docs and screenshots.
@Mason363
Mason363 merged commit 203f2a7 into main Oct 16, 2026
1 check passed
@Mason363
Mason363 deleted the claude/numplay-undertale-game-howdik branch October 16, 2026 20:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant