Keep in mind that, as I said in the previous post, what follows is just an approximation of things that I remember working on around the time of this development version. These logs are more of an indicator at what I’ve accomplished over the last months as opposed to an exact record of what I did each development version, as most of my past devlogs have been. Anyways, lets continue.
Server Blockmaps (And Why They Are Important):
In the Creo engine, a blockmap refers to a data structure which contains a grid of block types, the coordinates of an origin point in the graph, and a layer of the blockmap (background, foreground, or solid). Client side, blockmaps are the conduit used between any block generation function and any block spawning functions. Want to generate a tree from a set of parameters and then queue the tree to be spawned 20 blocks away from the left side of the island? Easy! Just call the tree generation function which returns a blockmap and then plug the blockmap into the block queuing function. Naturally, to maintain some cohesiveness between client and server code bases, the blockmap data structure had to be maintained. Also they are very convenient to use.
World Generation And Thing Spawning:
Naturally, blockmaps and the corresponding functions are at the core of world generation. After the blockmap system was set up, it was simply a matter of porting client code to the server. As I soon hope to do for the client, the server generates columns concurrently to the world’s step method. In addition, after I figured liquid stuff out client side I could work on dynamic block behavior, including sapling growth and spawning of flowers, etc. I’m saving mob spawning for when I am completely done with the mob system.