Not Minecraft Beta 1.0.2 is a project to create a feature-complete open source reimplementation of the first version of Minecraft beta in Rust, complete with many optimizations and generalizations and very strong multiplayer engine that does several forms of client-side prediction.
The multiplayer protocol is currently built on top of web-sockets, although there are plans to introduce and take advantage of the distinct features of QUIC as an alternate transport in the future, as well as to introduce a trust-on-first-use cryptographic identity system, as well as to take advantage of peer-to-peer hole-punching to reduce client-to-client player action latency where possible. Eventually, I have ideas on how to support sharding the world between multiple servers.
The graphics system is built over WebGPU and supports both 3D and 2D rendering, TrueType fonts, and in-place-patchable meshes. There is also a GUI sizing and layout layer built on top of the graphics layer which uses Rust's type system to statically check that the cause/effect flow direction of layout constraints is consistent between directly nested components, and which is actually able to operate with almost no dynamic dispatch or heap allocation, but rather by fusing all GUI logic at compile-time to a monad-like monomorphized blob.
Other systems that have been implemented include a physics engine, hand-optimized memory structures for tracking world data, the Binschema schema-based serialization system which is specially designed to support recursive schemas, and more. It also often uses the pattern of creating a separated integration layer to manage complexity, as proposed in The Mythical Matched Modules.
Check it out so far! The GitLab repo's main branch should usually compile, but for now the project is still undergoing enough architectural iteration that its outwardly apparent functionality may not be monotonically increasing, and implemented game content is intentionally kept low to make refactors less costly.
git repo | (gitlab repo) | act sep/20/2024 |