I have recently completed a few important things on the bullet hell game. The player now has a nicer model, a suit of armor, and the floor is now a dynamically generated tile-map. At the moment I only have the one tile, but I plan to add more tiles to be calculated using a noise function.

The map is generated and stored in chunks of 16×16 tiles. The chunks near the player are fully loaded into the scene for rendering, and then there is a larger radius around those where tiles are generated but not yet loaded into the scene graph. This prevents having to constantly regenerate the same tiles if the player is running around the same area, and later on will allow for loading models in the background to have them ready when they are required.

The rendering engine is informed about chunks loading and unloading using an event delegate system. This event system allows for processing of things to be indirect and limited to a set amount of time each frame. I would prefer risking things popping into the scene over dropping frames when a lot of things are going on.

Below is a video of the chunks being dynamically loaded around the player. The player’s bounding boxes are green, tiles are shown in red. The chunks that are fully loaded are shown in blue, and partially loaded chunks are in yellow.

The fully and partially loaded chunks are stored in hash maps, so while I don’t currently have any plans for multiplayer it could relatively easily be extended to support having multiple regions being loaded in the same way. This is mostly to figure out the logic so that I can extend it to 3d and multiplayer in the next game, but it very well may come in handy in this game later on.

One final note, the system I use for moving and rotating the player is designed to work the same way for enemies as well, so the AIs will use the same input system as the player for controlling entities. As part of this system I also added health, and a corresponding player health bar in the top right. I’m also starting to set up the system for adding bullets as part of that same system, but I will discuss that once it is more flushed out.

As before, the game is open source under the MIT License, and can be found here: https://github.com/Maceris/BulletHell