Games

midori-games-banner midori-games-banner

Midori AI Games

Our games live in the Midori AI monorepo and follow a shared world setting (Stained Glass Odyssey).

Subsections of Games

Stained Glass Odyssey: Endless

autofighter-banner autofighter-banner

Stained Glass Odyssey: Endless

Stained Glass Odyssey: Endless (formerly Endless-Autofighter / Midori AI AutoFighter) is a web-based auto-battler that blends tactical party management, elemental systems, collectible characters, and deep progression systems into a compact, replayable experience. Built with a Svelte frontend and a Python Quart backend, the project supports both lightweight local play and optional LLM-enhanced features for narrative and chat.

Quick snapshot

  • Platform: Web (Svelte frontend, Python Quart backend)
  • Play mode: Auto-battler / roguelite runs
  • Key systems: Elemental damage types, DoT/HoT effects, relics & cards, gacha-style recruits, action-gauge turn order
  • Deployment: Runs with Docker Compose; optional LRM profiles for CPU/GPU

Core Features

Strategic Party Combat

Combat runs automatically, but depth comes from pre-run party composition, relics, and upgrade choices. Party size, element synergies, and relic combinations all materially change how a run plays out.

Elemental Damage Types and Effects

Each damage type (Fire, Lightning, Ice, Wind, Light, Dark, etc.) is implemented as a plugin providing unique DoT/HoT mechanics and signature ultimates. The system supports stacking DoTs, multi-hit ultimates, and effects that interact in emergent ways.

Action Queue & Turn Order

Every combatant uses an action gauge system (10,000 base gauge) to determine turn order. Lower action values act first; action pacing and visible action values help players plan and anticipate important interactions.

Relics, Cards, and Rewards

Wins award gold, relic choices, and cards. Players pick one card (or relic) from curated choices after fights. Relics unlock passive and active synergies and can alter run-level mechanics like rare drop rate (RDR).

Roster & Character Customization

Playable characters are defined as plugin classes in backend/plugins/characters/. Each fighter exposes passives, signature moves, and metadata (about and prompt) for future LRM integration. An in-game editor lets players distribute stat points, choose pronouns, and set a damage type for the Player slot.

Procedural Maps & Rooms

Each floor contains 45 rooms generated by a seeded MapGenerator and must include at least two shops and two rest rooms. Rooms types include battle (normal/boss), rest, shop, and scripted chat scenes (LRM-dependent).

Optional LRM Enhancements

When LRM extras are enabled, the game supports:

  • LRM-powered chat with party members (per-run scoped memory via ChromaDB)
  • Model testing and async model loading
  • Player and foe memory for richer interactions

How to Play (Quick Start)

Prerequisites: Docker & Docker Compose installed.

Download the Repo - https://github.com/Midori-AI-OSS/Midori-AI/tree/master/Endless-Autofighter

Standard run (frontend + backend):

docker compose up --build frontend backend

Open your browser to http://YOUR_SYSTEM_IP:59001.

Deep Dive — Systems & Mechanics

Combat details

  • Foes scale by floor, room pressure, and loop count. Each defeated foe temporarily boosts the run’s rdr by +55% for the remainder of the battle, increasing relic and gold expectations.
  • Boss rooms have increased relic drop odds and unique encounter rules (always spawn exactly one foe).
  • Effect hit rate and resistance interact such that very high effect hit rates can apply multiple DoT stacks by looping in 100% hit chunks.

Damage types and canonical behaviors

  • Fire: Scales with missing HP, applies “Blazing Torment” DoT, ultimate scorches all foes at the cost of self-burn stacking.
  • Lightning: Pops DoTs on hit and applies “Charged Decay” (stun on final tick); ultimate scatters DoTs and grants Aftertaste.
  • Ice: Applies Frozen Wound (reduces actions per turn) and cold wounds with stack caps; big ultimates hit multiple times with scaling.
  • Wind: Repeats hits and applies Gale Erosion (reduces mitigation); ultimates strike many targets repeatedly.
  • Light / Dark: Support and drain mechanics (heals, shields, HP siphon, and field-wide status effects).

Progression and economy

  • Gold, relics, card picks, and upgrade items form the core progression loop. Shops heal a fraction of party HP and sell upgrade items and cards.
  • Pull tickets are extremely rare but can be earned via very low odds; relics and card star ranks can be improved by extremely high rdr values.

Plugin-based architecture

The backend auto-discovers plugin modules (players, foes, relics, cards, adjectives) and wires them through a shared event bus. Plugins expose metadata like about and optional prompt strings to support future ML features.

Playable Roster (high-level)

A large roster lives in backend/plugins/characters/ with defined rarities and special signature traits. Story-only characters like Luna remain encounter-only; others are gacha recruits. See the README and ABOUTGAME.md for the full table of characters and signature abilities.

Contributing

We welcome contributions. If you’d like to help:

  • Check AGENTS.md and .codex/ for contributor guides and implementation notes
  • Run tests before opening a PR
  • Keep imports and coding style consistent with repo conventions (see AGENTS.md)

Assets & Screenshots

Screenshots used in docs live in .codex/screenshots/.


This page was autogenerated from repository docs (README.md & ABOUTGAME.md). If you’d like changes, edit the source documents or open a PR.

Stained Glass Odyssey: Idle

stained-glass-odyssey-idle-banner stained-glass-odyssey-idle-banner

Stained Glass Odyssey: Idle

Stained Glass Odyssey: Idle is a PySide6-based desktop idle game set in the shared Stained Glass Odyssey universe. Build your party of characters, deploy them to onsite and offsite positions, and watch them battle automatically while earning experience and progression rewards—even when you’re not actively playing.

The game features the same beloved characters from Stained Glass Odyssey: Endless, including Luna, Carly, Becca, and many others, each with unique damage types, stats, and abilities. Built with Python 3.13+ and a stained-glass aesthetic UI theme, the game offers a relaxing but strategic idle experience.

Key Features

  • Idle Progression System - Characters gain experience and stats automatically over time
  • Party Management - Organize characters across onsite (active combat), offsite (support), and standby slots
  • Merge Mechanics - Combine duplicate characters to increase their power
  • Shared Universe - Same characters and lore as Stained Glass Odyssey: Endless
  • Multiple Game Modes - Switch between active battles and idle farming
  • Persistent Saves - Progress is saved automatically with JSON-based save files
  • Death Stat Bonuses - Characters that fall in battle return slightly stronger
  • Risk/Reward System - Adjust idle difficulty for better rewards

Character System

Roster

The game features a diverse roster of characters from the Stained Glass Odyssey world, including:

Character Stars Damage Type Role
Luna ⭐⭐⭐⭐⭐⭐⭐ (7★) Generic Summoner with lunar swords
Lady Fire and Ice ⭐⭐⭐⭐⭐⭐ (6★) Fire/Ice Dual-element attacker
Lady Storm ⭐⭐⭐⭐⭐⭐ (6★) Wind/Lightning Storm controller
Carly ⭐⭐⭐⭐⭐ (5★) Light Guardian with protective barriers
Becca ⭐⭐⭐⭐⭐ (5★) Light Offsite support with menagerie bond
Lady Lightning ⭐⭐⭐⭐⭐ (5★) Lightning Chain damage specialist
Lady Wind ⭐⭐⭐⭐⭐ (5★) Wind Multi-hit attacker
…and many more

Damage Types

Each character specializes in a damage type that affects their combat behavior:

  • Fire - Scales with missing HP, applies burning damage over time
  • Lightning - Pops DoTs on hit, applies charged decay with stun effects
  • Ice - Reduces enemy actions, applies frozen wounds with stack caps
  • Wind - Repeats hits, applies erosion that reduces mitigation
  • Light - Healing and protective abilities
  • Dark - HP drain and sacrifice mechanics
  • Generic - Luna’s unique balanced damage type

Stat System

Characters have a comprehensive stat system including:

  • Max HP - Total health pool
  • ATK - Attack power
  • Defense - Damage reduction
  • Crit Rate / Crit Damage - Critical hit mechanics
  • SPD - Action speed determining turn order
  • Effect Hit Rate - Chance to apply status effects
  • Mitigation - Additional damage reduction layer
  • Vitality - HP regeneration rate

Game Modes

Idle Mode

Deploy your party and let them farm automatically:

  • Characters gain experience over time
  • Party HP regenerates when idle
  • Adjustable risk/reward levels for faster progression
  • Shared experience bonus distributes gains across your roster

Battle Mode

Engage in active auto-battles:

  • Watch your party fight enemy waves in real-time
  • Win streaks increase rewards
  • Characters that fall gain permanent stat bonuses on revival
  • Progress through increasingly difficult fights

Party Builder

Manage your roster between battles:

  • Onsite Slots (4) - Active combat participants
  • Offsite Slots (6) - Support characters that share stats
  • Standby Slots (10) - Reserve characters
  • Bar Slots (6) - Quick-access character deployment
  • Shop - Purchase new characters and reroll options
  • Party Level - Upgrade your party’s overall power

Getting Started

Prerequisites

Run the Game

git clone https://github.com/Midori-AI-OSS/Midori-AI.git
cd Midori-AI/Endless-Idler
uv run main.py

The game window will open with the main menu.

Using pip

git clone https://github.com/Midori-AI-OSS/Midori-AI.git
cd Midori-AI/Endless-Idler
pip install -e .
endless-idler

Progression Mechanics

Experience System

  • Idle EXP - Earned passively over time based on deployed characters
  • Battle EXP - Earned from winning fights
  • Shared EXP - Percentage of experience distributed to non-deployed characters
  • EXP Bonus/Penalty - Temporary modifiers from in-game events

Death & Revival

When a character falls in battle:

  1. Their death is recorded in the save file
  2. A small permanent stat bonus (0.01%) is applied to most stats
  3. The character can be redeployed in future battles
  4. Excluded stats: EXP, mitigation, vitality

Tokens & Economy

  • Tokens - Currency for purchasing characters from the shop
  • Character Cost - Default cost to recruit a new character
  • Reroll Cost - Cost to refresh the shop’s character offerings
  • Party Level Up - Invest tokens to increase overall party power

Save System

The game automatically saves progress to:

~/.local/share/Midori AI/Stained Glass Odyssey Idle/save.json

Save data includes:

  • Token balance and party level
  • Character placements (onsite/offsite/standby/bar)
  • Character progress and stats
  • Death counts and initial stats for revival bonuses
  • Idle mode settings (bonus time, shared EXP percentage, risk level)