#DHSeaDev — Chrome MV3 — Full Page — Puzzle
Underglory
Underglory is a hundred-level maze game in which the thing you are steering is alive. A morning glory grows out of a pot at the bottom of a hand-drawn course and you lead it up to an arch at the top. You never move it directly. You build trellis rails for it to find and climb, you scatter plant food where you want it to hurry, and you prune what you no longer need — because everything you cut is fed back into the tips that are left.
GET IT ON CHROME → PLAY IN YOUR BROWSER
Version 2.3.0 is live on the Chrome Web Store — free, with no account and no tracking. The full privacy policy is in the Privacy section below. Questions: dhseadev@gmail.com
Play it now
Underglory is on the Chrome Web Store, and it is also playable straight in your browser on itch.io. It is the same build, the same hundred courses, and it saves in your browser.
Three tools, and none of them is a cursor
The vine grows on its own, all the time, whether or not you are doing anything. What you get is influence over where its energy goes.
Trellis
Drag a rail anywhere on the paper. A runner can see a support from a distance, finds it, and twines up it. Rails stop at walls, and holding one down again removes it and returns the length to your stock.
Plant food
Click the ground. Everything growing nearby speeds up until the feeding is used up. It is the tool for when the vine is going the right way and you want it to get there sooner.
Prune
Press and hold any stem or leaf. The cut is irreversible, which is why it is a hold and not a click. What you remove is not lost — the freed growth is pushed out to the furthest tip, and every flower you prune is worth points.
Why pruning is the interesting one
Growth in Underglory is a fixed budget shared out among the tips. Vigor is always a share of one whole, so removing a branch does not slow the plant down — it redistributes, by construction. The question is only where the freed share lands, and it lands on the frontier: the surviving node furthest from the cut. Pruning pushes the plant onward rather than regrowing what you just removed.
A course runs at most three vines. Once all three are growing, a prune stops making a fourth and pours into whichever runner is nearest the arch instead, so cutting at capacity buys speed rather than more mouths to feed. This is a deliberate reversal of an earlier build that allowed eight: eight runners on a fixed budget is a thicket, and a thicket cannot be steered through a gap.
Nothing here can be lost
There is no fail state, no timer running out, and no way to kill the plant. If every apex and every bud has been cut away, the oldest surviving wood puts out a new shoot rather than the plant reading as dead. If a runner wedges itself and stops making progress toward the arch, it straightens out and tries again on its own — and if that does not work twice running, it gives that axis up and a held bud somewhere else takes over. Any level can also simply be skipped, from Settings, with no penalty and nothing logged.
The clock only decides how much of the time bonus is left. It never runs out.
Drawn as a specimen sheet
The whole game is one canvas in the register of a botanical plate: ink-weight line on paper ground, hatched walls, cordate leaves, trumpet corollas that open in the morning and close by afternoon, and a sun and moon on one arc overhead. Colour arrives with time rather than from a palette — a stretch of vine takes the season’s hue as it grows, so a flower dates itself, and you can read when that stretch grew from what it blooms.
The soundtrack is synthesised in the browser from oscillators and filters. There are no audio files in the package, which means no licence surface and nothing to load: a slow major-seventh chord progression under a wind bed, sparse pentatonic bells, birds by day and crickets after dark. Every noise source runs through one filtered bus with a hard ceiling on it, because broadband noise is what “hiss” is, and an ambient bed that reads as static is worse than silence.
Questions
Do I control the vine directly?
No, and that is the game. The vine grows continuously on its own. You place trellis rails for it to find and climb, feed the ground where you want it to hurry, and prune what you no longer need — and the growth you cut away is redistributed to the tips that remain, out toward the furthest one. You are gardening it, not driving it.
Can I lose a level or kill the plant?
No. There is no fail state and no time limit. The clock only decides how much of the time bonus is left. If you cut away every growing tip, old wood puts out a fresh shoot; if a runner wedges itself, it works its way out or the plant abandons that axis and grows elsewhere. Any level can be skipped from Settings with no penalty.
Does Underglory need an account or an internet connection?
Neither. It runs entirely offline. There is no account, no sign-in, and no network request anywhere in the code. Your level, your best scores and your achievements are saved in your own browser and nowhere else.
Does Underglory read the pages I visit?
No. It requests one permission, storage, and nothing else. It has no content script, no host permissions, and reads no tab or page URL anywhere in its source. The day and night cycle is driven by the game’s own clock, not by yours.
Privacy
The short version: Underglory asks for one permission, saves your progress in your own browser, and contacts nothing at all. There is no analytics, no account, no telemetry and no network request of any kind.
| What | Answer |
|---|---|
| Data collected | None. Underglory collects and transmits no data about you. |
| Accounts or sign-in | None. No account system, no login, no email field, no password. |
| Network requests | None. There is no outbound call anywhere in the codebase — no API, no CDN, no remote fonts, no remote images, no update ping. The game works with the network switched off. |
| Analytics or telemetry | None. No events, no page views, no crash reporting, no advertising identifiers, no third-party scripts. |
| Permissions requested | One: storage. No host permissions, no tabs, no activeTab. |
| Where your save lives | chrome.storage.local in this browser only. It holds your current level, your best score per level, your achievements, your settings and the plant you were growing. There is no storage.sync, so nothing is copied to another machine or to a Google account. |
| Browsing history and page content | Never read. No content script, no page capture, and no tab or page URL is read or stored anywhere in the source. |
| The share image | When you clear a level you can save or copy a picture of the vine you grew. It is drawn in your browser from the canvas and handed to you as a file or to your clipboard. It is never uploaded, and nothing about it is sent anywhere. |
| Audio | Synthesised in the browser with the Web Audio API. There are no sound files in the package and nothing is streamed. |
| Remote code | None. No eval, no dynamically constructed functions, no remotely hosted scripts, no CDN libraries and no remote fonts. Zero third-party runtime dependencies. |
| Selling or sharing data | There is no data to sell, share or transfer, to anyone, for any purpose. |
| Deleting your data | Removing the extension deletes the save with it. You can also clear its storage from chrome://extensions at any time. |
| Children | The game has no chat, no multiplayer, no user-generated content and no contact of any kind with anyone. Because it collects nothing, it holds no information about anyone regardless of age. |
The permission, and why it exists
| Permission | Why |
|---|---|
storage | Saves your level, best scores, achievements, settings and the plant in progress, so closing the tab does not discard the course you were halfway up. Local to this browser only. |
| Host permissions | None requested. Underglory runs on no website and reads no page. |
tabs | Not requested. An earlier design used the number of open tabs as a growing condition; it was dropped rather than ask for a permission a game does not need. |
What was deliberately not built: a leaderboard. It would need an account, a server and your scores leaving your machine, for a game whose whole register is quiet. Best scores stay in your browser and the only thing you can share is a picture you chose to save.
Questions about any of this: dhseadev@gmail.com
Credits
Built by #DHSeaDev. Growth engine, renderer, synthesised soundtrack, interface and tests are hand-written for this project with no bundler, no framework and zero third-party runtime dependencies. The plant is a morning glory, Ipomoea, drawn from its actual habit: circumnutating tips that search for a support, apical dominance that holds side buds closed until the tip above them is cut, and corollas that open in the morning and are spent within days.
Built by #DHSeaDev — dhseadev@gmail.com
More from DHSeaDev
Underglory came out of the same quiet-game impulse as Kawaii Time Garden. If you want something with more numbers in it, Dota Companion is the opposite end of the range, a Dota 2 match-analysis panel that runs local-first with no account. The full set is on the projects page.
Enjoying Underglory? Rate it on the Chrome Web Store — it helps new players find it.