It feels great to be back into a consistent development schedule after so long. Let's take a look at the schedule and see where we're at. When I paused development, we were around a month ahead of the development schedule. Sadly, we are now two months behind schedule, which puts the first release in December 2017. Now, many of the development 'phases' can be completed faster than what I had marked down, and hopefully the release can happen a bit earlier. Now that I'm back, let's look at where we left off: the world/chunk system.
"we're two months behind schedule."
The issues with the last version of Crevis mainly comprised of performance and lack of control over the world generation. There was no method of saving chunks or unloading a chunk, and therefore when a new chunk was created fps would tank. This quite literally broke the game along with the abysmal inventory system. On top of the fact that chunks could not be unloaded, instances were used as blocks. For those that don't know, instances are essentially interactive objects. Most of the blocks in Crevis are static images, making the use of instances quite redundant. The new chunk system boasts the use of tiles, which run much faster than instances. The new chunk system will also allow for complete control of saving and loading chunks, and much more power over how chunks are generated and how biomes are handled.
"The new chunk system boasts the use of tiles, which run much faster than instances."
In the old chunk system, biomes would be confined to a certain chunk. At the start of every chunk, there would be a rigid switch to the next biome, and it felt very unnatural. Now, biomes are confined within a randomly generated length. Generation can also be reproduced with a seed.
Today, I created a single chunk with all of its block data stored to a grid. It randomly selects 0 or 1 for each cell of the grid (0 being no block and 1 being a block). Blocks are represented by green squares. In the gif, the script is ran every step of the game, generating a new set of blocks every tick. Block data can easily be saved and loaded. In the future, instead of just 1 representing a block, IDs of blocks can be used to draw the sprite of the block. All I have to do now is figure out how to load specific chunks when the player moves into them. I hope you enjoyed this fairly lengthy post.
Until next time!
November's monthly task is to finish the inventory rewrite (Crevis) and to begin drafting levels (Nesus).
The author of the blog is Niften, or Sour Apple. He posts daily near the end of the day, usually before 11:00 PM.