Improved Gameplay Balance
As the game was intended to revolve around a classic 90's style (vertical scrolling), transferring that into a 3d presents a level of difficulty that didn't exist in the older titles. Since hit detection was based off a 2D space, the level of skill required to hit targets, while the screen was consistently scrolling, presented a reasonable challenge. Converting that same gameplay to a 3D world, that requires great precision with the mouse and timing presents that same challenge x 10.
It sometimes is hard as a game dev to understand this perspective from the player, because we often become very good at our own games simply due to the sheer amount of playtesting we have to do. It was not uncommon to see my playtesters struggle playing certain levels, when I myself could pass those levels without much difficulty. Now, having a break from the game for a few months, it became clearer to me their perspective regarding the difficulty of the gameplay. Although it does take some getting used to (like even before), it doesn't take long before you can really feel comfortable.
With that, a number of changes have been made to improve on this.
- The camera has been adjusted to be dynamic in its movement (Easy/Medium difficulty mode). This means, if you stop, so will the camera. If you move downward (backwards), the camera will follow. This has really helped as it allows you to take your time and prevent new groups of enemies from spawning. However, in hard mode, the camera's dynamic movement is toned down substantially and will continually push the action forward like the original idea.
- Enemy damage has been reduced in easy mode.
- The types of valuables that can spawn and their likelihood is greatly increased in easy and medium difficulty modes.
- All the enemy's bullet stats have been adjusted to be more balanced.
- Enemy AI logic has been adjusted to attempt to keep them forward of the player and on screen. Although they can still move off screen and fire, they should do this a lot less than before.
Improved Performance & Visuals
When reviewing the game's code, I had realized there were many areas that could be improved to be more efficient. This has been done on the most intensive pieces in the game; primarily projectiles, player actions, valuables, destructibles, and enemy units.
Projectiles were an important piece to reevaluate, as they are so often spawned and on screen. I was able to make great improvements by:
- Creating projectile pools and activate/deactivating them as needed, so the overhead is fixed and many other functions can be avoided entirely (i.e. spawning and destructing, etc.).
- Batching all the projectile's functions together to improve efficiency in the CPU. Since we have a "pool" of projectiles, it makes it possible and easy to batch together their updating functions. So each frame, the system will be able to update every projectile's movement position and hit detection at the same time, allowing the CPU process these without having to change anything in memory.
In addition to this, much of the code was transferred to C++, making it much quicker to process during runtime. With all these changes, I've noticed a substantial improvement in performance, particularly when there is a lot of things going on, on screen.
Next, there have been a number of visual improvements that have polished up the experience. These include:
- Improved impact, muzzle, and valuable FXs.
- Improved invincible on-screen and player material FXs.
- Improved wounded on-screen FX.
- Improved the cursor and reloading icons. The time left to reload is now much clearer.
- Added visible text to indicate the quantity of a valuable that was collected.
- Improved the axe projectile to hit and fall to the ground, instead of disappearing on impact.
There are a few additional features that I'm hoping to add in (as soon as I get the time) in the future, but I'm not sure when I'll be able to get to those. If there is anything specific that you'd like to see or have any suggestions, please let me know! You can leave a comment here, create a discussion in the game's forum in steam, or join the game's discord to reach out directly to me.
I appreciate your patience and support with the project and look forward to reading your thoughts! Thank you!
Changed files in this update