Skip to content

The client today

Changing. Follow: #136, #137, #341, #344, #521, #337

mcrs has its own client, written in Rust on Bevy and wgpu. You can fly around a world with it and look at the terrain, the sky and the mobs, but you cannot play survival with it yet. This page is for a player or an observer who wants to know what the client does today, what it does not do, and what its long view costs in frame time and memory.

AreaStateWorksMissing
Client and renderingPartialTerrain, sky, clouds, light, mobs, the F3 overlay, chat and block breaking in creative. Render distance 96 columns by default.At 96 columns the GPU frame is 3.7 ms, above the 1.0 ms target, and the process holds 12 GB. Measured only on an Apple M4 Max with macOS. The web build hangs. No sound, particles or weather. WIP#337WIP#344WIP#129
Feature State
Terrain with the block models and light of the game Works, and the light includes coloured block light
Sky, clouds and the fog of the environment Works
Mobs Works for the five mob types the server has. The client draws far mobs as flat images, which How the client renders explains
F3 overlay with frame and stage times Works
Chat with command suggestions Works
Breaking blocks in creative mode, and showing the block you aim at Works
Joining the mcrs server or an embedded one Works. A vanilla client of the same snapshot can also join the mcrs server in offline mode
Feature State
Sound WIP#136. The client is silent
Particles WIP#137
Weather (rain, snow, lightning) WIP#341. Today rain only dims the sun and the moon
Inventory and container screens WIP#521 covers the player inventory, and the screens are WIP#129, WIP#130 and WIP#131. The client draws an inventory screen only when you start it with MCRS_SCREEN=inventory, and you cannot play with that screen
A web build WIP#344. The build draws the sky in Chrome, but start-up blocks the page for 87 s and the build never reaches a steady frame
Binary downloads None yet. Releases are planned, and at this date no issue tracks them

Every number in PERF.md comes from one machine, an Apple M4 Max with macOS and Metal, and the author has checked no other platform. Linux and Windows are not confirmed. CI on Ubuntu does not run the crates that need wgpu, so a green CI tells you nothing about those crates on Linux.

The client asks for 96 columns of view by default, where a column is a stack of 16x16x16 sections. That is three times the vanilla maximum of 32. The table gives three costs of this view, all taken in one scenario: an M4 Max with macOS, a 2560x1440 window, the save two-relight with 38,025 columns and 295,511 sections resident, a static view, and MCRS_HOT=1 to hold the CPU cores at speed.

What Value Where
Engine CPU frame 1.12 ms median, 1.33 ms worst second PERF.md, Hardening
GPU frame 3.7 ms with the occlusion test on, 6.0 ms with it off (MCRS_OCCLUSION=0). The note in PERF.md calls 3.7 ms over its ceiling PERF.md, Hardening
Memory of the process 12 GB PERF.md, Render distance

At 96 columns the GPU limits the frame and the CPU does not. Flying at top speed costs more than standing still. In the same scenario the engine frame then takes a 1.56 ms median and 5.0 ms for the worst second. The 12 GB figure comes from the Render distance section, which was written before the occlusion work, so a newer build may differ. The memory at 96 columns is not bounded yet.1

If your GPU or RAM is smaller than this machine’s, lower MCRS_VIEW, the number of columns the client asks for. The Render distance table of PERF.md reads 0.71 ms of engine time at 12 columns, on an older build. There are no numbers for other machines.

There is no binary download, so you build the client from source. The steps are short and live in the repository, so this page does not repeat them. Follow the README Quick start. The client takes a world folder and starts its own server for it. It reads textures and models from the official game jar, because the repository ships no Mojang art.

The server and its world rules are on Worlds and saves. For all numbers and their method, see PERF.md.

  1. WIP#337 Tracks a bound on the client’s memory at 96 columns. ↩

Sources and verification

Verified: 26.4-snapshot-7, 3540f457b, 2026-11-10

Tracking: #136, #137, #341, #344, #521, #337