Dev.to AI 🤖 Ai 👁 0 📖 4 min read

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

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 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

GitHub logo 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.2 gets 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_MODEL or VISION_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.

📰 Read the original article on Dev.to AI

Originally published by Dev.to AI. Aggregated on AIWithGhost for educational purposes — full credit and traffic to the original publisher.