Skip to content
brunosr3003Public

About

Open-world MMO in Rust with its own engine: authoritative server, custom client and procedurally generated voxel islands.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Tempest

An open-world MMO in Rust: authoritative server, purpose-built macroquad client, and an archipelago of voxel islands generated from a seed.

crates/
  shared/      rules and terrain — what both sides MUST agree on
  server/      authoritative simulation, one process per channel
  client/      3D client (macroquad/miniquad)
  web/         signup, login and channel directory
  panoptico/   observability dashboard (read-only)
  admin_cli/   operations tooling
tools/voxrender/  voxel art → sprite pipeline

What defines this project

The terrain never travels over the network. Client and server generate the same island from the same seed, with the same code in shared::terreno. The server keeps 2 bytes per column (~16 MB/km² against ~416 MB for a full volume); the client builds the volume only around the player. What goes over the wire is position, and nothing else.

Collision is an integer comparison. There is no navigation mesh and no 3D collision: a one-block rise is walkable, two to three need a jump, four is a wall. Going down is free. Trunks, thickets and stumps block; flowers and grass do not.

The client does not predict. It smooths. Every game decision — moving, jumping, attacking, pathfinding — happens on the server, and the client draws the result. See docs/NETWORKING.md.

One truth per question. When two parts of the code answer the same question by different arithmetic, they drift — and the symptom shows up far from the cause. This repository's history is made of that: the way a tree is drawn and the way it collides, jump height and the step rule, the camera and hill avoidance. Each one was a bug with the same shape, and the fix was always the same: a single function, called by both sides.

Running

# database + web (signup, channel list)
cargo run --release --bin web

# a single channel
MMO_ZONA=ilha_inicial BIND_ADDR=0.0.0.0:9200 cargo run --release --bin server

# the client, side by side with the terminal
./scripts/run-client.sh --build

Build details in docs/BUILD.md; running channels in docs/SERVIDORES_E_CANAIS.md.

Most documents under docs/ are written in Portuguese.

Documents

Where What
ARCHITECTURE the pieces and why they are apart
MUNDO island generation, movement, vegetation
NETWORKING protocol, AOI, what goes over the wire
SERVIDORES_E_CANAIS realm, channel, auto-scaling
ECONOMIA / ITENS currency, forge, grade and refinement
GAMEPLAY / NEW_MECHANICS design
PANOPTICO observability dashboard
PIPELINE_ARTE voxel → sprite
COMBATE weapon sets, armor weight, skills
SKILLS the 12 abilities and their level gates
COLETA auto-gathering driven by local density
ECONOMIA_DE_CRAFT materials, recipes, color synthesis
PERSONAGEM rig, animation, mounts
character create what to model: parts, sizes, pivots, palette
COMBATE_POR_ALVO targeted combat and the binary wire
BOSSES field bosses, telegraphed attacks, placement and respawn
VILA_E_PORTO town, port, voxel houses, doorway NPCs
MISSOES Quest Master, the starting island's chain, journal (J)
HISTORIA the endless main quest: chapters per island, level gates, Chronicles of the Tempest
DUNGEONS_E_RAIDS design: dungeons, raids, bosses, cross-realm matchmaking, rewards by band
HUD HUD and main menu in the MIR4 mold: layout, panels, nothing opens by keystroke
RELEASE_MAC Mac signing, notarization, and why xattr was needed
MODO_ECONOMIA power-saving mode: what keeps running behind the black screen

Stack

hecs (ECS) · tokio + binary WebSocket · postcard · glam · sqlx/Postgres · argon2 · axum · macroquad

License

Proprietary — all rights reserved. The code is public as a portfolio only; there is no permission to use, copy, modify, distribute or host it. Third-party material under vendor/ and assets/ keeps its own licenses. See LICENSE.

About

Open-world MMO in Rust with its own engine: authoritative server, custom client and procedurally generated voxel islands.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages