Minecraft server (26.2, protocol 776) reimplementation in rust (because why not?)
  • Rust 99.8%
  • PowerShell 0.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Adrian Kiezik 4342b76102 perf(worldgen): cut resident chunk memory 5.6x (499 -> 89 KiB/chunk)
At view distance 32 (4225 resident chunks) one player held ~2 GiB. Three
fixes, all output- and speed-neutral (golden/parity suites pass; profile_gen
steady-state unchanged at ~97/~105 ms per chunk generate/full-wire):

- Palette-compress GenChunk's baseline grid per 16-block section
  (Uniform / nibble-packed <=16 states / byte palette / dense fallback)
  instead of a dense 98,304 x u32 Vec: 384 -> 25 KiB per chunk. Reads stay
  O(1) behind the unchanged base_state API; the dense grid now exists only
  transiently during generation.
- Share one static full-bright sky DataLayer: ChunkLight sections become
  LightLayer::{Empty, Bright, Data} so the ~15 identical all-0xFF layers
  per chunk cost nothing. Wire bytes identical: 34 -> 6 KiB per chunk.
- Stop double-storing the section blob: the framed level_chunk packet is
  built eagerly with the wire cache (moved into world::encoding; frame()
  only prepends) and ChunkColumns.blob is a zero-copy Bytes slice into it.
  Also moves frame serialization off the send path onto prefetch workers.

Adds examples/profile_memory.rs + world::store_memory_stats() for per-chunk
byte accounting and the VD32 extrapolation (2058 -> 367 MiB per player).
2026-07-03 16:28:28 +02:00
assets/fonts feat(startup): add centered ASCII banner with repo link 2026-07-01 16:25:49 +02:00
benches perf(worldgen): profiling harness — criterion bench, stage/feature/step timers 2026-07-03 15:29:42 +02:00
data/minecraft/worldgen feat(worldgen): implement P8 feature/decoration engine 2026-07-02 18:40:13 +02:00
docs Merge branch 'worktree-agent-a00888fc005c04327' 2026-07-03 06:21:06 +02:00
examples perf(worldgen): cut resident chunk memory 5.6x (499 -> 89 KiB/chunk) 2026-07-03 16:28:28 +02:00
src perf(worldgen): cut resident chunk memory 5.6x (499 -> 89 KiB/chunk) 2026-07-03 16:28:28 +02:00
tests chore: optimize tests 2026-07-03 01:20:57 +02:00
tools/mca_diff test(worldgen): vanilla .mca fixture runner + expose region reader 2026-07-03 06:17:03 +02:00
.gitignore feat: load vanilla server config files (server.properties, eula, player lists) 2026-06-30 21:33:22 +02:00
Cargo.lock perf(worldgen): profiling harness — criterion bench, stage/feature/step timers 2026-07-03 15:29:42 +02:00
Cargo.toml perf(worldgen): profiling harness — criterion bench, stage/feature/step timers 2026-07-03 15:29:42 +02:00
README.md feat: clean-room MC 26.2 server (protocol 776) 2026-06-30 19:31:12 +02:00

Vela

A clean-room Minecraft Java Edition server reimplementation in Rust. Target: protocol 776 (MC 26.2).

Run

cargo run                      # binds 0.0.0.0:25565
cargo run -- 127.0.0.1:25599   # custom bind

Roadmap

Roadmap of features that need to be implemented for feature parity is available within docs/ROADMAP.md