An experiment in building games with AI agents.
Voyager is a Minecraft elytra racing minigame — think Mario Kart, but you're flying with elytra through rings in the sky. Players compete in cups made up of multiple maps, collecting points by flying through rings at high speed.
This entire project is being designed, architected, implemented, and documented by a team of 24 specialized AI agents working together through Claude Code. Every line of code, every architecture decision, every physics formula, and every piece of documentation was produced through human-AI collaboration.
This is a prototype for a new way of building games:
- A human game designer directs the vision
- AI agents handle the specialized work — from elytra physics calculations to database schema design to gaming psychology optimization
- The agents collaborate, review each other's work, and maintain documentation automatically
- Development happens at a pace that would be impossible for a small team alone
We're continuing this approach and want to see how far it can go. Can a team of AI agents, guided by a human, build a polished, competitive Minecraft minigame? That's what we're finding out.
Alpha v0.1 — in progress. The core gameplay loop is complete and functional. We are currently wiring persistence, tests, and deployment for the first closed playtest.
| Feature | Status |
|---|---|
| Elytra physics (server-authoritative, vanilla formulas) | ✅ Done |
| Ring collision detection (sequential, AABB line-segment) | ✅ Done |
| Cup progression (multi-map sequences) | ✅ Done |
| Scoring — ring points + position bonuses | ✅ Done |
| Firework boost mechanic (vanilla formula, per-map config) | ✅ Done |
| HUD — actionbar, BossBar, titles | ✅ Done |
| Phase system — Lobby → Game → End | ✅ Done |
| Async Anvil world loading | ✅ Done |
| Setup plugin (map/cup/ring editor) | ✅ Done |
| Database persistence (player profiles + race results) | 🔧 Alpha v0.1 |
| Live standings scoreboard | 🔧 Alpha v0.1 |
| CloudNet v4 deployment | 🔧 Alpha v0.1 |
| Spectator mode | 📋 Beta v0.2 |
| Persistent leaderboards | 📋 Beta v0.2 |
| Anti-cheat | 📋 Beta v0.2 |
| Replay system | 📋 Release v1.0 |
→ Full Roadmap on GitHub Projects
| Agent | Role |
|---|---|
| Product Manager | Organizes tickets, plans milestones, leads the team |
| Project Manager | Sprint planning, velocity, WIP limits, release checklists |
| Architect | Designs system boundaries, enforces architecture rules |
| Game Psychologist | Ensures every feature maximizes player retention and fun |
| Game Designer | Designs gameplay loops, balancing, and player feedback |
| Game Developer | Implements physics, collision, scoring, and game feel |
| Minestom Expert | Handles all Minestom API code and Paper migration |
| Minecraft Expert | Knows decompiled vanilla formulas for elytra physics |
| Math & Physics | Writes collision algorithms and ensures numerical stability |
| Senior Backend | Writes clean service and repository code |
| Senior ECS | Builds the Entity-Component-System game loop |
| Senior Testing | Ensures test coverage with JUnit 5 |
| Database Expert | Designs Hibernate entities and optimizes queries |
| Java Performance | Tunes JVM, GC, and ensures 20 TPS under load |
| DevOps | CI/CD, Docker, CloudNet deployment |
| Researcher | Deep-dives into docs before anyone writes code |
| Tech Writer | Maintains all documentation and ADRs |
| Scientist | Writes formal research papers on technical decisions |
| Paper Expert | Maintains the setup plugin that stays on Paper |
| Junior Creative | Brings wild ideas and quick prototypes |
| Junior Frontend | Builds scoreboards, BossBars, and sound design |
| Social Media | Community posts, announcements, changelogs |
| Skill Creator | Builds reusable slash-command workflows |
| Agent Architect | Creates and improves the agents themselves |
| Layer | Technology |
|---|---|
| Game Server | Minestom 2026.03.25-1.21.11 (standalone, no vanilla code) |
| Setup Tool | Paper 1.21.5 + FastAsyncWorldEdit |
| Language | Java 25 |
| Build | Gradle 9.4 + ShadowJar 9.4.0 |
| Dependencies | Version catalog defined in settings.gradle.kts |
| Database | MariaDB via Hibernate ORM 7 + HikariCP |
| Deployment | CloudNet v4 (primary), Kubernetes (planned) |
| Commands | Cloud (Incendo) |
| Geometry | Apache Commons Geometry |
voyager/ Greenfield rebuild: api, physics, race, platform, server, setup, fitness
legacy/server/ Standalone Minestom game server (the tree being replaced)
legacy/plugins/game/ Legacy Paper plugin (being replaced by legacy/server/)
legacy/plugins/setup/ Map/cup editor plugin (stays on Paper)
legacy/shared/common/ ECS framework, services, utilities (platform-agnostic)
legacy/shared/conversation-api/ Player prompt system (platform-agnostic)
legacy/shared/database/ Hibernate persistence layer
legacy/shared/spline/ Spline generation (platform-agnostic)
tools/ Map converter and trace recorder, outside the module graph of both trees
docs/ Architecture decisions, research papers, ADRs, design specs
.claude/agents/ The 24 AI agent definitions
.claude/skills/ Reusable slash-command workflows
# Start MariaDB for local development
docker compose -f docker/mariadb/compose.yml up -d
# Build everything
./gradlew build
# Build the standalone server
./gradlew :legacy:server:shadowJar
# Run it (DB required — set VOYAGER_DB_URL, VOYAGER_DB_USER, VOYAGER_DB_PASSWORD or use Docker defaults)
java -jar legacy/server/build/libs/*.jar
# Run tests
./gradlew test| Variable | Default | Description |
|---|---|---|
VOYAGER_DB_URL |
jdbc:mariadb://localhost:3306/voyager-project |
MariaDB connection URL |
VOYAGER_DB_USER |
voyager-project |
Database username |
VOYAGER_DB_PASSWORD |
(required) | Database password |
VOYAGER_DB_POOL_SIZE |
10 |
HikariCP connection pool size |
main is the primary branch. All feature and fix branches are cut from main and merged back via pull request.
Releases are automated via Release Please. Pushing to main opens or updates a release pull request that carries the next version (derived from the commit messages), the bumped version in build.gradle.kts, and the generated CHANGELOG.md entries. Merging that pull request tags the release, cuts the GitHub Release, and attaches the Shadow JAR and a CycloneDX SBOM.
Version increments follow Conventional Commits:
| Commit type | Version bump |
|---|---|
fix: |
patch (e.g. 1.2.3 → 1.2.4) |
feat: |
minor (e.g. 1.2.3 → 1.3.0) |
feat!: or BREAKING CHANGE: |
major (e.g. 1.2.3 → 2.0.0) |
CI runs on GitHub Actions with SHA-pinned actions, a matrix build across Ubuntu, Windows, and macOS, JaCoCo coverage reporting, and Gradle dependency caching.
This is an open experiment. If you're interested in AI-assisted game development, agent team design, or just want to race with elytra — contributions are welcome.
The .claude/agents/ directory contains the full agent team definitions. Each agent has specific domain knowledge, trigger conditions, and working methods. If you use Claude Code, you can leverage the entire team.
All commits must follow Conventional Commits — this drives the automated versioning pipeline.
GNU Affero General Public License v3.0 — see LICENSE.
Voyager loads its worlds through Falco, which is AGPL-3.0, so the combined work is too. Because this is a server people connect to, section 13 applies even where nothing is distributed: anyone interacting with a Voyager server over a network must be offered its source.
Built with AI. Directed by humans. Racing through the sky.