Table of Contents
Diminishing Light is on Steam!
I’m excited to announce that Diminishing Light, my Zombie Action Driving game, has a Steam page! Getting this set up was a big milestone for the project.
I used Upwork to find an artist to create the capsule art. After searching for artists with experience in game art, I selected one whose portfolio showed their ability to match the style I’m going for.
Communication was smooth through the Upwork platform, and the artist took my brief description and reference images/video to produce the final capsule art. Overall I had a great experience using Upwork for this.
Here’s a link to the Steam page if you want to wishlist the game: https://store.steampowered.com/app/2716300/Diminishing_Light_Wheeled_Carnage/
What do you think about the Store page?
Optimizations – Implementing Object Pooling
Object pooling is a technique where, instead of destroying and instantiating objects like projectiles and particles over and over, they are deactivated and stored in a pool to be reused later. This avoids expensive instantiate operations and garbage collection.
I implemented object pooling for various gameplay elements in Diminishing Light, including projectiles, zombie enemies, blood particle effects, and more.
Now, when a bullet is fired, for example, instead of destroying it on impact, it gets deactivated and added back to the bullet pool. This improved performance, especially during heavy combat scenes.
Fixing the Projectile Bug
When testing my game, I noticed an annoying bug – bullets would sometimes pass through walls or enemies without registering a hit.
This “tunneling” effect is a common issue in games involving fast-moving projectiles. It occurs when the physics engine fails to detect a collision between a fast projectile and another object during a physics update.
To address this, I wrote a detailed tutorial on my blog explaining various techniques to fix the problem: https://tomfmcdonald.com/bullets-go-through-walls
The key solutions I implemented were:
- Increasing the size of the projectile colliders to make them easier to detect
- Reducing projectile speed to give more time for collision detection
- Adjusting the physics timestep to run simulations more frequently
- Using Continuous Speculative Collision mode for best performance/accuracy balance
With these changes, projectiles collide properly with walls, enemies, and other objects. Fixing this bug greatly improved the overall feel and gameplay.
Designing a Mission System
With core combat and enemies in place, I’m shifting focus to creating fun and repayable mission content. I want missions to provide diverse gameplay and situations beyond just surviving waves of zombies.
Some mission types I’m designing include:
- Go To Destination: Players must navigate to specific locations, under various conditions.
- Pickup Item: Involves collecting items that are either scattered across the map or located in particular places.
- Defeat Enemy: Players must eliminate a certain number of enemies, with potential variations to keep things interesting.
- Survive Waves: The goal here is to survive a number of waves of enemies, with difficulty adjustments made through enemy variety and resource availability.
- Defend Objective: Protect a location, object, or NPC from zombie attacks, potentially incorporating strategy elements in defense setup.
- Rescue Survivors: Players must find and safely escort survivors to a designated safe zone, adding depth with various challenges.
To allow flexibility in mixing and matching objectives, I’m using the composite design pattern. Each objective is its own reusable component that can be combined to create complex multi-part missions:
For example, a mission could combine the GoTo Destination, Time Limit, and Kill Enemies objectives:
- Go To Destination
- Time Limit: 2 minutes
- Kill 10 Enemies
This allows me to create various missions without tons of redundant code. I’m starting with the basic building block objectives first like Go To Destination and Time Limit, and will expand from there.
What’s Next?
For the near future I’ll be continuing to work on fleshing out mission content and start building out the game world.
Let me know if you have any other features you’d like to see added to Diminishing Light!
🚀 Join the Adventure Behind the Scenes! 🚀
Are you ready to dive deeper into the world of “Diminishing Light” and keep informed on the latest developments? Sign up for our exclusive mailing list and get the insider scoop straight to your inbox!
But wait, there’s more ways to connect! Follow my journey on social media:
👾 Follow me on Instagram for a snapshot of our latest thrilling game developments.
🐦 Tweet along with me on Twitter and join the game dev conversation.
📘 Like me on Facebook to be part of our growing community of game enthusiasts.
Don’t forget to share your thoughts and ideas in the comments. Your feedback influences the game development. Let’s create something fun together!