Blox 0.36

Blox 0.36 (named Friday Update 6) was a major update to the game, focused on adding missing features from previous versions, such as entities, world swapping and audio.

Changes

 * Implemented a new entity system, which was used to represent off-grid and physically simulated objects in the game world.
 * Implemented a custom physics system based on AABBs, used for physically simulating entities.
 * Blocks could now have separate collision boxes to their visual geometry within the physics system.
 * Added AABB pooling, to reduce memory allocations when dealing with them internally.
 * Added block breaking particles, which would be generated when blocks are destroyed by the player. They were implemented as particles under the new entity system, and so were the first entities to be added to the game.
 * Blocks could now be display-ticked locally to emit effects such as particles or sounds.
 * Fixed a bug where some blocks didn't have a default texture.
 * Implemented a new audio system.
 * Added in-game music, which would play randomly in the background as you built.
 * Tweaked the wording on the credits screen slightly, and renamed it to 'Credits & licenses'.
 * Added audio licenses to the credits screen, which could be browsed for all audio in the game.
 * Added attribution to ClassiCube on the credits screen, for providing the open specifications used to model parts of Blox (e.g. the terrain generator).
 * Implemented a new components system for the GUI, which allowed the easy creation and reuse of common components and widgets.
 * Buttons now had hover effects and would emit a click sound upon activation.
 * Fixed a bug where the text caret would be positioned relative to the top left corner of the text box, rather than the top left corner of the rendered text.
 * World loading was revamped for both the client and the server; now, the processes would happen in their own centralised modules rather than being handled by the main scripts for each.
 * Fixed a bug where numeric seeds were rehashed before use, which created worlds with the incorrect seed.
 * Some GUI views, which previously had permanent backgrounds, would now become transparent when viewed while in game (e.g. donation and rewards screens).
 * Increased the opacity of transparent backgrounds for full screen GUI views, to increase contrast.
 * Added a new Options menu, which was accessible from the main menu or in-game menu.
 * Added a 'Generate new world' option, which would be accessible to VIP servers.
 * Points for the reward tiers could now be earned at a rate of 5 points every 15 minutes.
 * Renamed the Donate button to Rewards, to better reflect it's new purpose.
 * Tweaked the reward tiers to be fewer and fairer.
 * Shortened and tweaked description text on the rewards screen.
 * Reduced the frequency of cave generation in the world, to allow for easier underground building.
 * Changed sky rendering to use fog instead of the skybox to colour the horizon.
 * Added a maximum message length for the chat box, of 80 characters.
 * Trees would now ignore leaves when testing for free space to grow.
 * Fixed a bug where the world boundaries would not line up with custom sized worlds.
 * The main menu animation would now play every time the screen was navigated to.
 * Fixed a bug where plants could be placed unsupported on the sides of blocks.
 * Colour-corrected the game world to offset the bright HDR tone mapper, and make colours more accurate.
 * Switched to a new mesh rendering technique for blocks, to reduce the triangle count.
 * Fluids now render with a downwards offset, and with backface culling disabled.
 * Switched to using game lifecycle events instead of the task scheduler for time-based yielding internally, improving efficiency.

Bugs

 * Attempting to place a block while facing directly upwards can fail.
 * Touching the game world on a touch enabled device would always break the block you were looking at, even when dragging to look around, and placing blocks was impossible.
 * The dynamic thumbstick and jump button overlapped some in game UI.
 * The game loop could occasionally crash on the server, stopping blocks from updating.
 * Blocks flickered out of existence for the first frame of a render update, occasionally allowing players to fall through the world.
 * Ghost air blocks could occasionally form on the client when placing a block.