mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-14 18:01:09 +02:00
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>
1.6 KiB
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