A cozy isometric social MMO for storytellers, roleplayers, and world builders.
DreamLoom is an open-source, self-hostable graphical social world inspired by Furcadia, combining classic isometric MMO charm with modern RPG tools and AI-enhanced creativity.
- Cozy isometric worlds for social interaction and roleplay
- User-created spaces ("dreams") with simple scripting
- Light RPG mechanics (dice, stats) for structured play
- AI-enhanced creativity turning text into generated art
- Self-hostable shards for community autonomy
opendreams/
├── client/
│ └── dreamloom/ # Godot 4 game client
│ ├── scenes/ # Game scenes (main.tscn)
│ ├── scripts/ # GDScript files
│ ├── assets/ # Game assets (tiles, sprites, audio)
│ └── project.godot # Godot project file
│
├── server/ # Rust WebSocket server
│ ├── src/
│ │ └── main.rs # Server implementation
│ ├── Cargo.toml # Rust dependencies
│ └── README.md # Server documentation
│
├── assets/ # Shared asset source files
│ ├── tiles/ # Isometric tile assets
│ ├── sprites/ # Character and object sprites
│ └── audio/ # Sound effects and music
│
└── docs/ # Documentation
├── GDD.md # Game Design Document
├── PROJECT.md # Project information
└── CONTRIBUTING.md # Contribution guidelines
For the Client:
For the Server:
- Rust 1.70+
- Cargo (comes with Rust)
- Navigate to the server directory:
cd server- Build and run the server:
cargo runThe server will start on ws://localhost:8080
You should see:
🌙 DreamLoom Server Starting...
✨ Server listening on: 127.0.0.1:8080
📡 WebSocket endpoint: ws://127.0.0.1:8080
-
Open Godot 4.4 or later
-
Click "Import" and navigate to:
client/dreamloom/project.godot
-
Click "Import & Edit"
-
Press F5 or click the Play button to run the game
-
You should see:
- A connection status indicator (top-left)
- A chat panel (bottom-left)
- A player character you can move with WASD or Arrow keys
- ✅ Isometric movement system (WASD/Arrow keys)
- ✅ WebSocket connection to server
- ✅ Real-time chat system
- ✅ Connection status indicator
- ✅ Camera follows player
- ✅ Proper input handling for isometric coordinates
- ✅ WebSocket server on port 8080
- ✅ Connection handling with unique player IDs
- ✅ Chat message broadcasting
- ✅ Player join/leave notifications
- ✅ Position update broadcasting
- ✅ Async/await with Tokio
Once both server and client are running:
- Type a message in the chat box
- Press Enter to send
- You should see your message appear in the chat history
- If you run multiple clients, they'll all see each other's messages
DreamLoom uses standard isometric projection:
- Tile Size: 64×32 pixels (base)
- Perspective: 2:1 ratio isometric
- Angle: 26.565° (arctan 0.5)
- Movement: Cartesian input converted to isometric coordinates
This is the foundation! The basic architecture is now in place. Next steps include:
- TileMap setup with isometric tiles
- Multiple player rendering
- Character customization
- Dream creation tools
- RPG mechanics (dice, character sheets)
- AI integration for art generation
- Database persistence (PostgreSQL)
- Authentication system
- Game Design Document - Full vision and design
- Project Information - Project details
- Contributing Guide - How to contribute
DreamLoom is open source (AGPL-3.0) and welcomes contributions!
See CONTRIBUTING.md for guidelines.
{"type": "join", "name": "PlayerName"}
{"type": "chat", "text": "Hello!"}
{"type": "move", "to": {"x": 100, "y": 200}}{"type": "system", "text": "System message"}
{"type": "chat", "from": "PlayerName", "text": "Hello!"}
{"type": "position", "avatar_id": "uuid", "pos": {"x": 100, "y": 200}}AGPL-3.0 - See LICENSE for details
Community over commerce. DreamLoom will never have pay-to-win mechanics, lootboxes, or paywalled gameplay features.
The codebase stays open forever, sustained by community contributions, grants, and optional services around the free core.
Dream big. Weave together. Stay cozy. 🌙