Indie Journal: Week 8

I had no game.

Yes, I had a prototype. I had systems that (roughly) worked and interacted with each other, I had the basis for a game, but no level, no start and end. I realised I couldn't build it in time, at least, not what I had been planning for.

I had the basis for the game, and I could adapt that into anything - it wasn't made to be a Metroidvania from the start. In fact, it wasn't made to be anything specific. Therefore, I could build something. I just had a week to do it. The issue was that I couldn't build a level in time, so I got thinking - what can I do? Systems. I have everything I need to build a game, but not enough time to build a level. So, I'll use a system to create gameplay.

Wave Spawning.

Instead of creating a large level with progression and unlocks throughout it, it would be much quicker to create a small level and have enemies spawn in waves against the player. I could implement that, a shop keep, the start and end screens and then, I would technically have a game. I would be able to make it as long as I want, if I created the Wave Spawner correctly.

The Wave Spawner was actually split into two parts. The first was the controller, which holds all the wave information and told all of the other half, the 'spawners' to create enemies. I created a Blueprint Structure that would hold the information for each wave, such as amount of each enemy, time until the wave starts, health and damage multipliers, etc. This structure would then be an array in the default variables of the Wave Spawner, where each index of the structure would act as a wave. Using this, I could create as many waves as I want in no time at all.

At the beginning of the game, when the waves are set to begin (in the case of my game, when the first sword is picked up by the player), the Wave Spawner would set a timer (and create UI for said timer), and after the timer had ended, it would take the index  of the Wave Array and get the information for said wave. Using this information, for every enemy of each type, it checked all available 'spawners' and checked if they were 'in use'. If the spawner in question wasn't in use, it would tell the spawner to create an enemy and set itself to 'In use' for a second. This meant the only real limitation is how many wave spawners there were.

After creating this system, I needed to work on the rest of the game. I went to create the UI for the main menu (in a seperate level), the UI for dying/winnning, and various other UI elements such as a visual representation of the Soul Capping system. I also added some particle effects to some areas, to help with clarity.

The final thing I needed to make was the Shopkeep - I created the basic UI system and, while not the most efficient, I created a short blueprint to check if the player had enough points for an upgrade, removing the points and then granting the upgrade. If I were to have made this with more time, I would've made a function that could be reusable to provide these upgrades.  However, what I had created worked fine for now. The systems I created within the last week were rushed and not the most efficient. They worked, but they wouldn't be acceptable for a studio game.

However, I was done. I cleaned up what I could, and called my game finished. It was on to finish this written work that I am currently doing.

Comments

Popular posts from this blog

Indie Journal: Critical Evaluation

Indie Journal: Week 6

3D Journal: Critical Evaluation