Skip to content

GeminiWorld

GeminiWorld is a web-based, explorable 2D world where AI-driven minigames reshape the environment in real time via Google’s Gemini API.

Core trick

Sends minigame results to Gemini, which returns structured world changes applied to tile terrain, NPCs, and weather in a Phaser overworld.

Tags

Description

GeminiWorld is a web-based, explorable 2D world where AI-driven minigames reshape the environment in real time via Google’s Gemini API. Players move through a tile-based overworld, enter zones to play minigames, and see terrain, NPCs, weather, and story change based on performance. Core loop: play minigame → Gemini evaluates → world mutates. Minigames are triggered by interactions (e.g., hitting a box) and are personalized per player. Gemini generates unique challenges, adapts difficulty, and keeps each run distinct. Stack: Phaser + React + TypeScript + Vite, deployed on Vercel/Cloudflare Pages. Team (3): World/Shell, Minigame Framework, AI/Gemini Integration. Differentiator: Gemini is the backbone—adaptive difficulty, procedural NPC dialogue, emergent storylines, and Live API (voice/camera) enable deep AI-native gameplay.
muchan23/gemini_world★ 00 forksTypeScriptCreated Feb 21, 2026 · last push Feb 21, 2026

README excerpt

# PlayGo Workspace

This workspace contains two connected frontend apps:

- `world`: A Phaser-based overworld where the player moves through zones.
- `minigame`: A mini-game app launched from the overworld when the player enters a zone.

The current integration uses an embedded `iframe` flow:
- Enter a zone in `world`
- `world` opens `minigame`
- `minigame` sends results back to `world`

## Repository Structure

```text
worktree/
├── world/
│   └── gemini_world/        # Overworld app (React + Phaser + Firebase client)
└── minigame/
    └── gemini_arcade/       # Mini-game app (React + Phaser)
```

## Key Features

- Zone-based game entry from the overworld
- Embedded mini-game modal with postMessage communication
- Return-to-world flow with mini-game result display
- Custom world labels and title (`PlayGo`)
- Static dungeon-like background in the world
- Player icon loaded from generated asset (`public/generated/player-icon.png`)

## Local Development

Run both apps in separate terminals.

### 1) Start mini-game app

```bash
cd minigame/gemini_arcade
npm install
npm run dev -- --port 5274
```

### 2) Configure world app

Create `world/gemini_world/.env`:

```env
VITE_MINIGAME_URL=http://localhost:5274
VITE_GEMINI_API_KEY=YOUR_API_KEY   # optional for generation-related features
```

### 3) Start world app

```bash
cd world/gemini_world
npm install
npm run dev -- --port 5273
```

Open:

- World: `http://localhost:5273`
- Mini-game direct (optional): `http://localhost:5274`

#

Team