Bringing in the OutsideQuest
This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass What I Built OutsideQuest is a one-button, 70s-arcade-style desktop game that pushes you away from the screen and into t
This is a submission for the Hacktoberfest Open-Source AI Challenge Week 1: Touch Grass
What I Built
OutsideQuest is a one-button, 70s-arcade-style desktop game that pushes you away from the screen and into the real world.
Press NEW MISSION, and it checks the live weather outside; then a local LLM writes a short, safe photo mission to suit the conditions, like "Find three different shades of green" on a clear day or "Capture a puddle reflection" when it's raining. You go outside, complete it, and press SNAP PHOTO. A local vision model looks at your webcam shot and replies with PASS or FAIL plus a witty reaction to what it actually sees and the weather around you.
Win, and your daily streak climbs. Miss a day, and it resets, which turns "I should go for a walk" into "I can't break the streak."
It's for anyone who spends too much time at a desk: students, developers, remote workers, or anyone who needs a small, playful reason to step outside.
Demo
Code
maryam-rahat
/
OutsideQuest
a one-button outdoor game built with Python, tkinter and Ollama. checks your live local weather, has a local LLM generate a safe photo mission that suits the conditions, then uses a vision model to judge the photo from your webcam. PASS or FAIL with a witty reaction to what it sees, and a daily streak counter tracks your consecutive-day wins.
OutsideQuest
A 70s-arcade-style desktop game that sends you outside on photo missions and has a local AI judge your snap.
Press one button, get a weather-aware mission, go complete it, snap a photo, and watch a vision model react to the real world. Build a daily streak.
Features
- Missions generated by a local LLM, tuned to your live weather
- Webcam photo judged by a local vision model with a PASS or FAIL and a witty reaction
- Persistent daily streak and best score
- Retro CRT UI: amber and phosphor-green text, Atari-style stripes, typewriter output, blinking
INSERT COIN - Resizable window with scaling fonts, fullscreen on
F11
Stack
Python, tkinter, OpenCV, Ollama, Open-Meteo
Requirements
- Python 3.9+
- Ollama running locally
- A webcam
- Internet access for the weather lookup only
Setup
pip install ollama opencv-python
ollama pull llama3.2
ollama pull llava
python mission.py
Controls
| Input | Action |
|---|---|
| NEW MISSION | Fetch weather, generate an objective |
| SNAP PHOTO |
Run it yourself:
pip install ollama opencv-python
ollama pull llama3.2
ollama pull llava
python mission.py
How I Built It
The whole game runs on open-weight models through local inference with Ollama, so there are no API keys and no cloud calls for the AI.
-
Mission generation:
llama3.2gets a random theme (colors, shapes, textures, sky, tiny details) plus the current weather and returns a one-sentence mission. -
Photo judging:
llava, an open multimodal model, receives the webcam frame, the mission and the weather, and answers with PASS or FAIL and a one-line reaction. - Live weather: approximate location from the IP, then current conditions from Open-Meteo, which needs no key.
- Streak: a small JSON file tracks consecutive-day wins and a best score.
- Interface: tkinter with a 70s CRT look: amber and phosphor-green text, Atari-style stripes, typewriter output, and a blinking INSERT COIN. It's resizable, fonts scale with the window, and F11 goes fullscreen.
- Responsiveness: model calls run in worker threads so the UI never freezes while the models think.
The core of the judging step:
def judge(mission, w):
path = capture()
ctx = f"Weather right now: {weather_text(w)}." if w else ""
r = ollama.chat(
model=VISION_MODEL,
messages=[{
"role": "user",
"content": f"Mission: {mission}\n{ctx}\nDoes this photo complete the mission? Start with PASS or FAIL, then one witty sentence reacting to what you see and the weather.",
"images": [path],
}],
)
return r["message"]["content"].strip()
Why Does Open Innovation Matter?
This project sends a camera frame of your surroundings to an AI every time you play. With a closed API, that photo would go to someone else's servers on every mission. With open-weight models running locally, the photo never leaves your machine. The only network calls are the weather lookup.
Open models also made it practical to build:
- No keys, no bills, no rate limits. Anyone can clone the repo, pull two models, and play, with no signup and no per-call cost.
-
Swappable parts. Changing the mission writer or the judge is a one-line edit to
TEXT_MODELorVISION_MODEL, so users can pick a smaller model for a laptop or a stronger one for a GPU. - Works as a daily habit. A streak game has to be free and always available, and local inference means it doesn't depend on a provider's pricing or uptime.
Open innovation made it possible to build something that looks at your real world without handing your world to anyone.
Originally published by Dev.to AI. Aggregated on AIWithGhost for educational purposes — full credit and traffic to the original publisher.
