cd /news/generative-ai/ascend-turn-a-small-walk-into-a-real… · home › topics › generative-ai › article
[ARTICLE · art-147533] src=dev.to ↗ pub= topic=generative-ai verified=true sentiment=↑ positive

ASCEND: Turn a Small Walk into a Real-World Quest with Local Gemma

A developer built ASCEND, a browser-based outdoor quest game that runs Google's Gemma model locally on the user's device to generate fantasy atmosphere and bounded observation prompts for real-world destinations mapped via OpenStreetMap and Wikidata. The game offers three quest types — reaching a gate, making a discovery, and following a three-stop trail — with XP rewards and unlockable original companions, plus a GPS-free rehearsal mode whose scores never enter the global leaderboard. A real deployment test revealed unavailable Overpass gateways, prompting the addition of an independent Wikidata fallback lookup for urban parks, monuments, and fountains.

by read7 min views2 publishedOct 8, 2026

This is a submission for the Hacktoberfest Open-Source AI Challenge: Week 1 — Touch Grass. A nearby park can feel ordinary. Give it a mysterious gate, a small story, and a leaf-eared companion waiting at the end, and the same walk becomes an adventure.

That is the idea behind ASCEND. The next level is somewhere outside your front door.

ASCEND is a browser-based outdoor quest game. It combines the anticipation of anime progression with the joy of finding things in the real world. You start at E-rank, finish small adventures, collect original companions, unlock trophies, and gradually work toward S-rank.

The game begins with your location and the time you have. It finds nearby parks, gardens, outdoor artwork, viewpoints, and other eligible places in OpenStreetMap, with a separate Wikidata fallback for urban parks, monuments, and fountains. Gemma runs on your device and writes a short fantasy atmosphere for the mapped destination. The story also helps choose a bounded observation prompt for a discovery quest.

There are three ways to explore:

Quest What you do Reward
Reach a gate Walk to one mapped place and check in 100 XP
Make a discovery Arrive, photograph something you notice, and write a few words 150 XP
Follow a trail Check in at three places in order 250 XP

Your first completed quest unlocks Fernfox. Later adventures introduce a moss-covered tortoise, a luminous moth, a moonlit owl, an ember salamander, and an astral fawn. They are original characters with original generated artwork.

Companions are earned through completed quests. Rehearsal rewards stay separate from real-world rankings.

There is no streak punishment. A quiet walk tomorrow is still welcome if you missed today.

Start with Try the rehearsal to explore all three quest types without GPS, camera permissions, or an account. Its places and arrivals are explicitly fictional, and its scores never enter the global leaderboard.

For a real quest, choose Find my next quest, allow location, and select an adventure. Try the local Gemma writer, read or listen to the briefing, then open the pocket guide. At the checkpoint, reopen the app and check in. The pocket guide has large controls for repeating the briefing, pausing, and checking in. Installed device voices can read the briefing. Optional browser recognition supports commands such as “repeat,” “status,” “,” and “check in.” No ElevenLabs is used. When a browser lacks voice support, the same actions are available on screen.

Browser GPS s when the page is hidden or the phone is locked, so ASCEND asks you to reopen at checkpoints. The phone helps launch the adventure and record its ending; the walk happens between those moments.

Source, setup, tests, and deployment configuration Explore the quest engine, Gemma worker, or deployment configuration. The README includes the commands to run it yourself.

The code is MIT-licensed. The generated art has its own attribution instructions, and downloaded model weights retain Gemma’s terms.

The map service uses OpenStreetMap Overpass, with bounded provider fallbacks. A real deployment test exposed unavailable Overpass gateways, so I added an independent Wikidata lookup for urban parks, monuments, and fountains. Its bounded query searches the local area before following category relationships, then checks known indoor, dissolved, and future locations. Broad residential-garden and amusement-park categories are excluded.

Searches are cached and shared across concurrent explorers. Known private and indoor OpenStreetMap tags are filtered out. Access information and the original OpenStreetMap or Wikidata item remain visible because a mapped place is not proof that it is open or reachable by a pedestrian route.

Gemma writes the story; a separate quest engine pins the destinations, objectives, and XP. The model cannot invent a destination or grant rewards. Long, code-like, or unsuitable narratives fall back to a clearly labelled curated briefing.

The small model taught a useful lesson: a complicated formatting prompt could produce code or an overly dramatic story. A short request for two peaceful fairy-tale sentences worked better. I kept the output guard even after improving the prompt.

The app uses Gemma 3 270M, Transformers.js, and ONNX Runtime in a worker. WebGPU is used when available; a separately pinned compatible model revision supports WASM on CPU. The first use downloads hundreds of megabytes, so the app explains that before .

A genuine browser inference produced this line:

The Lantern Garden whispered secrets as the sun warmed the mossy leaves, a gentle breeze rustled the silver petals of the flowers.

On the tested browser, generation took 5.1 seconds. The first model download plus generation took 98.5 seconds. Those are measurements from one machine, not a promise for every phone. The full prompt, output, revision, and timings are recorded in the inference report.

The CPU fallback was tested with WebGPU disabled: 33.1 seconds for generation and 170.4 seconds including the first download, on the same computer. Its separate report records actual WASM inference.

Large model downloads also exposed interrupted CDN transfers during testing. The now fetches pinned artifacts in verified 8 MiB ranges, retries interrupted chunks, and rejects mismatched revisions. This made both real GPU and CPU runs complete.

The model’s narration is fictional. The report confirms that generating it left the checkpoint coordinates unchanged.

The frontend and Express API run on Render. The release configuration uses a free web service and free Postgres in Singapore. Reward updates use database transactions, including protection against duplicate simultaneous check-ins. Explorer state and world rankings are stored in Render Postgres.

GPS check-ins require a recent fix, acceptable accuracy, and proximity to the checkpoint. Previously completed destinations disappear from suggestions for 24 hours. Trail checkpoints must be completed in order.

World rankings are opt-in and publish an alias with aggregate game statistics. They do not expose destinations or photos. Camera images and the latest 30 journal memories remain in the device’s IndexedDB; the server receives photo metadata rather than pixels. A private session export lets you restore access to your explorer.

Render’s free service can take about a minute to wake, and its free Postgres expires after 30 days. The README documents those limits and the need to export or migrate before expiry. This entry uses free services and no paid AI API.

The browser suite uses simulated GPS and a synthetic camera feed. Voice-command actions were tested with a synthesized transcript. Audible local speech and live microphone transcription still need testing on a physical phone. I have not claimed an outdoor field trial, and browser-reported GPS remains spoofable: these rankings support friendly play.

A location-aware game can easily become another stream of private information sent to a remote model. Open weights let ASCEND generate its story on the explorer’s device. The prompt does not need a hosted AI endpoint, a per-story charge, or an AI API key.

OpenStreetMap and Wikidata supply inspectable destinations. Transformers.js and ONNX Runtime make browser inference practical. The quest engine is readable, so someone can change reward rules, add companions, swap a model, or host their own version.

Local inference does not make the whole app offline: new map lookups and shared rankings still need a connection. It does let the creative part run locally after the model is downloaded, on a capable device. That is a useful boundary for a game built around stepping outside.

ASCEND’s new repository, gameplay, API, databases, interface, artwork, and tests were built during this Week 1 window. Local-model compatibility work draws on my earlier Stillroot experiments. The anime progression and location-collecting inspirations are acknowledged; no Solo Leveling or Pokémon game assets are used.

Codex assisted with implementation, testing, and this write-up. The cover and companion illustrations were generated for this project; their prompts and provenance are documented.

Your next gate might be a garden you have walked past a hundred times. Bring a little curiosity. Fernfox will meet you there.

── more in #generative-ai 4 stories · sorted by recency
── more on @ascend 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
→ Live at https://your-agent.zahid.host ✓
Get free account → Pricing
from €0/mo · no card required
LIVE [news/ascend-turn-a-small-…] indexed:0 read:7min 2026-10-08 · —