Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
A generic distributed voxel game engine with an eye towards scalability and flexibility.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
|Failed to load latest commit information.|
Courier - Interacts with players, subscribes to chunks on behalf of the players. Scribe - Access player and world data on disk Cartographer - Generates new chunks Narrator - Handles actual processing of BlockRules, EntityRules, and BlockSetRules Tesella - acts as directory and message broker Hello World Plan: client->Courier logon Courier->Scribe retrieve user info Scribe->Courier user info for client Courier .oO(User needs chunks x_i, y_i, z_i...) Courier->Tesella Who owns chunk x,y,z? Tesella .oO(No one does. Let's spawn a new Narrator or select one from the pool) NewNarrator->Scribe retrieve chunk x,y,z Scribe .oO(I don't have a chunk x,y,z on-disk) Scribe->Cartographer generate chunk x,y,z Cartographer->Scribe chunk x,y,z data Scribe->NewNarrator chunk x,y,z data NewNarrator->Tesella I own chunk x,y,z now Tesella->Courier NewNarrator owns chunk x,y,z now. Courier->NewNarrator Subscribe me to chunk x,y,z NewNarrator->Courier chunk x,y,z data Courier->client chunk x,y,z data ... NewNarrator->Courier block_change x,y,z sx,sy,sz prop=val (iff prop is public) Courier->client block_change x,y,z sx,sy,sz prop=val ... client->Courier attempt_move dx,dy,dz Courier->NewNarrator attempt_move player_entity dx,dy,dz Courier->client move_confirmed player_entity dx,dy,dz Common ZMQ-level connections: All have a REQ connection to Tesella All have a PUB/SUB with Tesella, to keep them updated on They open PUB/SUBs as necessary with other nodes. All nodes have a SUB and REQ binding.