Hello!
It's been three weeks since the last devlog. In that time, I've been quite busy and work and have had a shift in my hobbies. That said, I've made more progress on this project, but I do feel that it's stagnating once again. My plans may change for this project, and I'll go over that towards the end of this log.
One of the biggest issues I've run into is of my own creation: scope creep. I have a tendency to overcomplicate scripts. My current example is the DMG (damage) system for the enemies. DMG was calculated with a formula depending on the projectile's velocity at impact and it's weight variable. This simply does not scale well, nor is it practical. I simplified this by giving the enemies a set amount of lives instead of an HP pool. I also simplified the player's HP/DMG system by giving the player lives instead of an HP pool.
The next thing I simplified was the Spawn Manager. Previously, the script relied on Scriptable Object assets to determine how many enemies to spawn in each wave.
Now, instead of using assets, the script now uses formulas to calculate the number of enemies to spawn in a given wave:
This method scales way easier and cleaner than using assets that I need to manually create and insert into a list in the inspector.
In regards to scaling, I also reworked the Weapon Type SO (scriptable object) to auto calculate the weapon instance's cost via a formula depending on the weapon's ATK (FPS - velocity) and fire rate value.
Before this, I had no idea that you could update a variable inside a script inheriting from Scriptable Object. I think this will prove to be quite useful later, when I properly balance out the waves and ammo/weapon costs.
One problem I consistently have had is subpar enemy AI, because I have directed my efforts into improving the Weapon and GUI systems. For the last two-ish weeks, I've been studying ways to rework my enemy's AI, and I've found something remarkably simple: finite state machines.
At it's core, a finite state machine is just a fancy switch statement. By switching a local enum's variable, you can determine what the AI does. For example, when the player it outside of the enemy's detection range, it's state is Idle. When the player comes within range, the enemy's state switches to Chase. When the enemy is close enough to the player, it's state switches again to Attack.
Now, onto my thoughts surrounding the future of this project. I have been ruminating over this for a few weeks, and putting pen to paper will certainly help in my decision process.
I started this project 1.5 years ago, to the day. I started with grand ambitions, and this project was to be my "legacy" in the Nerf hobby community that I've been apart of since 2022. Since then, I graduated high school, worked several jobs, met many new people, started new hobbies, and ended up with full time employment in the skilled trades where I can start to build my future.
My interest in Nerf has been on the decline for quite some time. I live quite far away from the nearest game venues, and haven't had the time to setup something in my town, with it being doubtful that I'll be able to attract enough people to form a small club. My free time has greatly diminished, as I work full time plus plenty of over time, which means making a 200km roundtrip on the weekend unappealing. My interests have shifted as well, which has led me to consider switching the theme of this game from Nerf HvZ to an actual zombie shooter survival game, which this project was loosely based on.
Going back to scope creep, there has been vastly more than acceptable of that since I started this project. I want to simplify as much as I can, so I can ship the game and get to the full release stage, which will allow me to start other projects and learn more. Two things stand in the way of that: artwork and audio. At this time, I will not allocate funds to pay an artist to create a massive set of art or audio for a single project. I have had great success in using free or cheap paid assets, and I intend to continue doing that as it streamlines development and keeps the cost low. If I switch the theme to an actual zombie survival shooter, these hurdles become non-existent. I may also need to change the name of the game, but that'll require more thought.
This is not an easy decision to make, but now that this typed this out, I think I've made up my mind. I'll take a few days to think more before making another post regarding this matter. I do not want to simply abandon the fruits of my labor, and the many hours I've put into this project. That's all I have to say for now.
Thanks for reading.
Create Your Own Website With Webador