mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-14 20:21: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>
57 lines
1.6 KiB
Markdown
57 lines
1.6 KiB
Markdown
# 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
|
|
|
|
```bash
|
|
# 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
|