managarten/apps/manavoxel/CLAUDE.md
Till JS 5589765180 feat(manavoxel): scaffold 2D pixel platform MVP (Phase 0)
Add ManaVoxel — a 2D top-down pixel platform for creating and programming
miniature worlds in the browser. This commit includes:

- SvelteKit + PixiJS 8 web app with chunk-based tilemap renderer
- Game engine: camera (scroll/zoom), input (keyboard/mouse/touch), player with
  AABB collision, editor/play mode toggle
- Pixel editor tools: brush, eraser, flood fill, pipette, box fill, line
  (Bresenham), undo/redo stack
- Shared types package: materials, areas, items, network protocol, inventory
- Demo world generator with terrain, buildings, trees
- Material palette UI with 15 materials, keyboard shortcuts
- Comprehensive design documents (Roblox analysis, tech stack options,
  voxel resolution analysis, 2D alternative comparison, full project plan)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 08:57:08 +02:00

1.6 KiB

ManaVoxel Project Guide

Overview

ManaVoxel is a 2D top-down pixel platform where players create detailed miniature worlds, program items with behaviors, and share them — all in the browser.

App Port URL
Web App 5195 http://localhost:5195

Project Structure

apps/manavoxel/
├── apps/
│   └── web/          # SvelteKit + PixiJS client (@manavoxel/web)
├── packages/
│   └── shared/       # Shared types (@manavoxel/shared)
├── package.json
└── CLAUDE.md

Commands

# From monorepo root
pnpm dev:manavoxel:web    # Start web app (port 5195)

# From apps/manavoxel
pnpm dev                  # Start all apps
pnpm dev:web              # Start web only

Technology Stack

Layer Technology
Rendering PixiJS 8 (WebGL)
UI SvelteKit 2, Svelte 5 (runes), Tailwind CSS 4
Local-First Dexie.js via @manacore/local-store
Auth Mana Core Auth (JWT)
i18n svelte-i18n (DE, EN, FR, ES, IT)

Zoom Levels

Level 1 Pixel = Use
Street 10cm Walking, interaction, combat
Interior 5cm Exploring rooms, furniture
Detail 1cm Item/character sprite editing

Core Concepts

  • Areas: Streets (10cm) and interiors (5cm) are separate pixel grids connected by portals
  • Items: Pixel sprites (1cm) with properties (sliders) and behaviors (trigger-actions)
  • Floors: Interiors have multiple floors, connected by stairs
  • Local-First: Everything works offline via Dexie.js, syncs via mana-sync