MorriCraft/README.md

174 lines
7.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🟦 MorriCraft
![MorriCraft](assets/TitleImage.png)
**MorriCraft** is a high-performance, multiplayer-ready voxel engine built from the ground up using **C++** and **Raylib**. Inspired by classic survival games, it features a custom physics engine, real-time world synchronization, and a deep crafting system.
---
## 🌟 Key Features
### ⚔️ Combat & Survival
- **PvP Combat**: Real-time melee combat with synchronized hit registration, knockback, and audio feedback.
- **Health System**: 8-heart health system with a visual HUD and damage mechanics.
- **Survival Mechanics**: Block-breaking progress and material-specific dig times.
### 👥 Multiplayer & LAN
- **P2P Architecture**: Cross-platform networking stack using standard sockets (Windows/Linux).
- **Instant LAN Hosting**: Host your world with a single click from the pause menu.
- **Skin Personalization**: Built-in skin editor to customize your character's shirt and pants, fully synchronized across the network.
- **Global Chat**: Press `Enter` to communicate with other players in real-time.
### 🔨 Crafting & Inventory
- **20+ Recipes**: Full crafting tree from logs to tools — wooden & stone tier tools, furnace, chest, doors, fences, ladders, and more.
- **Dual Crafting Modes**: 2×2 player inventory grid and 3×3 Workbench with pattern matching.
- **Smart Stacking**: Left-click merges same-type stacks, right-click picks up or places one item at a time.
- **Inventory Tooltips**: Hover over any item to see its name.
### 🌲 World & Visuals
- **Multi-Texture Blocks**: Oak logs render with bark sides and ringed tops/bottoms. Grass has separate top/side/bottom faces.
- **High-Detail Foliage**: Custom leaf textures with natural green tinting.
- **Dynamic Lighting**: Full day/night cycle with atmospheric color shifts.
- **Optimized Rendering**: Texture batching, neighbor-chunk caching, and frustum culling for 60+ FPS.
### ⚙️ Technical
- **Dynamic World Gen**: Multi-octave Perlin noise (FBM) with forests, sand beaches, and ore veins.
- **Cross-Platform**: Standalone binaries for Windows and Linux with zero external DLL dependencies.
- **Auto-Update System**: Built-in version checking and download support.
---
## 🚀 Getting Started
### Prerequisites
- **Linux**: `libpulse-dev`, `glfw` development headers.
- **Windows**: Download the pre-built zip from Releases, or cross-compile with MinGW-w64.
### Build Instructions
#### 🐧 Linux
```bash
mkdir build-linux && cd build-linux
cmake ..
make -j$(nproc)
./MorriCraft
```
#### 🪟 Windows (Cross-compile)
```bash
mkdir build-windows && cd build-windows
cmake -DCMAKE_TOOLCHAIN_FILE=../toolchain-windows.cmake ..
make -j$(nproc)
```
A pre-built `MorriCraft-Windows.zip` is available in the repository root.
---
## 🎮 Controls
| Key | Action |
|-----|--------|
| **WASD** | Movement |
| **Space** | Jump |
| **Mouse** | Look / Aim |
| **Left Click** | Attack / Destroy Block |
| **Right Click** | Place Block / Use Workbench |
| **E** | Open Inventory |
| **Enter** | Open Chat |
| **1-9** | Hotbar Selection |
| **ESC** | Pause / Menu |
---
## 📜 Crafting Recipes
### 2×2 Player Grid
| Input | Output |
|-------|--------|
| 1 Log | 4 Planks |
| 4 Planks (2×2) | 1 Crafting Table |
| 2 Planks (vertical) | 4 Sticks |
### 3×3 Crafting Table
| Recipe | Output | Recipe | Output |
|--------|--------|--------|--------|
| PPP / .S. / .S. | Wooden Pickaxe | CCC / .S. / .S. | Stone Pickaxe |
| PP. / PS. / .S. | Wooden Axe | CC. / CS. / .S. | Stone Axe |
| .P. / .P. / .S. | Wooden Sword | .C. / .C. / .S. | Stone Sword |
| .P. / .S. / .S. | Wooden Shovel | .C. / .S. / .S. | Stone Shovel |
| PP. / .S. / .S. | Wooden Hoe | CC. / .S. / .S. | Stone Hoe |
| CCC / C.C / CCC | Furnace | PPP / P.P / PPP | Chest |
| PP. / PP. / PP. | Door ×3 | PSP / PSP | Fence ×3 |
| S.S / SSS / S.S | Ladder ×3 | ... / ... / CCC | Stone Slab ×6 |
*P = Plank, S = Stick, C = Cobblestone. Mirrored variants supported.*
---
## 📜 Version History
### v2.2.7 - Performance & Assets (Current)
- **Lag Fix**: Reverted render distance to 4 and optimized frustum culling to restore high FPS.
- **New Icons**: Added high-quality textures for the Wooden Shovel, Pickaxe, Sword, and Hoe.
- **Physics**: Refined anti-stuck resolution for smoother jumping and landing.
### v2.2.6 - World Management
- **7:00 AM Spawn**: New worlds now start in the morning for immediate daylight.
- **Naming System**: Cleaner sequential naming (`World`, `World 1`, `World 2`) instead of nested parentheses.
- **Anti-Stuck Physics**: Active collision resolution pushes players out of blocks if they overlap.
- **Build Path**: Windows artifacts are now stored in `build-windows/` for easier deployment.
### v2.2.5 - UX & Inventory Polish
- **Shift-Click**: Holding Shift and clicking picks up entire item stacks instantly.
- **Scrollable Menus**: Added scroll bars and mouse-wheel support for the "Load World" menu.
- **UI Padding**: Increased padding across all panels to ensure text never overlaps borders.
### v2.2.4 - Visual & Update Stability
- **X-Ray Fix**: Neighborhood chunk dirtying ensures internal faces are culled immediately.
- **Smart Updates**: Client only prompts for updates if the remote version is strictly higher.
- **15x15 Pre-Gen**: Expanded spawn area pre-generation (225 chunks) to eliminate horizon drop-offs.
### v2.2.3 - Async Generation & Help
- **Loading Screen**: Added a progress bar for asynchronous world generation/loading.
- **Help Command**: Added `/help` to chat to display all available console commands.
- **Spawn Surface**: Guaranteed surface placement after full chunk pre-generation.
### v2.2.1 - World & Seed Polish
- **Cliff Fix**: Resolved issues where new worlds would spawn with missing chunks.
- **Render Distance**: Increased default render distance to 4 for a more expansive view.
- **Auto-Updater**: Platform-aware updates target Windows vs Linux binaries.
### v2.2.0 - Biome & Generation Update
- **Seed Fix**: Proper avalanche-hash for seeds, making every world truly unique.
- **Biomes**: Added Grassland, Desert, and Rocky biomes with sand beaches at sea level.
- **Commands**: Added `/seed` command to view the world seed in chat.
### v2.1.9 - Crafting Overhaul
- **20+ Recipes**: Added Log→Planks and full wooden/stone tool tier crafting.
- **Smart Inventory**: Left-click stacks same items, right-click picks up or places one.
- **Future Item IDs**: Added furnace, chest, ladder, fence, torch, door, and stone slab types.
### v2.1.8 - Forest Fidelity
- **HQ Leaves**: New high-definition leaf texture with proper green tinting.
- **Tree Fix**: Corrected log rendering to use multi-texture bark/ring mapping.
### v2.1.7 - Log Realism
- **Oak Log Textures**: Dedicated bark (side) and ring (top) textures for logs.
### v2.1.6 - Inventory Insight
- **Item Tooltips**: Mouse-over identification for all inventory items.
### v2.1.2 - Combat & Health
- **PvP Melee**: Ray-traced hit detection with knockback and audio feedback.
- **Heart HUD**: 8-heart health system.
### v2.1.0 - Personalization
- **Skin Editor**: Shirt and pants color customization, synced across network.
- **Humanoid Models**: Multi-cube player avatars replacing placeholder blobs.
### v2.0.0 - Multiplayer
- **P2P Networking**: Cross-platform sockets with direct connect and LAN hosting.
- **Chat System**: Real-time text communication between players.
---
*Developed by the MorriCraft Team. Built with Raylib 5.0.*