It's been a while since I've done an update. I had a bit a of no-development period (about a week maybe). I was just too busy.
But in the last 3 or 4 days, I've gotten a lot done.
I fixed a bug where bullets were bouncing off enemies when they should just be destroying themselves (apparently the easiest fix was applying a full-friction physics material to my enemies), added two new enemies (functionally at least, they're still placeholder graphics), fixed some issues with item drops, and got the framework for the enemy waves (which was probably the largest amount of work).
Here's a screen shot of my SpawnerManager inspector, which I'll be using to define each wave:
This might not be the prettiest thing, and its designed pretty specifically for this game, but it will do the trick. With it, I can easily enable or disable a spawner for a given wave, as well as set the number of total enemies to spawn for the wave, the idle time after each wave, and the random delay ranges for each spawner.
This way, I can easily introduce new enemies and/or crank up the difficulty on a given wave. It should make play tuning fairly painless.
Basically, my spawner manager will pass the values from each wave to each corresponding spawner at the end of each wave.
Right now, my last wave just has a ridiculously large number of enemies to spawn (like 9 billion), so the game will run forever. My final solution, however will most likely be to create all of the 'play-tuned' waves that should be needed for the average player to complete the game using the inspector, then dynamically add to the list when the last wave is reached, randomly tweaking values to make them more difficult as the waves progress.
As I mentioned, I've also added two new enemies: A 'Slenderbie', inspired by Slender Man, and a Crow.
The Slenderbie is really tall, and can't be jumped over or walked through (unlike the regular zombies). If the player touches him, he is knocked back. This significantly increases the difficulty of the game, as the player can no longer easily get away from zombies (at least until they unlock double or triple jump).
The crow flies in from either side of the screen, basically just patrolling back and forth. When it is within a certain range of the player, it will dive on a parabola. If it touches the player, it will attack him, flying continuously around his head until it is killed. The player can jump over the crow to avoid this, again, adding to the difficulty and tension of the game.
These guys are particularly hard to hit with single-projectile weapons (like a rifle or pistol), especially while they're attacking, and the weapon of choice for dealing with them is a shotgun.
I think I'll add another version of this guy who comes in with a different color. While he's attacking the player, the player can't jump, and has reduced movement speed.
Here's a shot of the crow mid-dive, and flying around the player:
Now I've got to get my upgrade/levelling UI designed and implemented. I've been kind of dreading that, but hopefully it's bark is worse than it's bite. After that's done, I can playtune, ensuring the player has enough money/XP to buy new weapons and abilities as the waves get harder, and that the waves get harder at the right rate.
After that's done, I'll add some achievements and stat tracking. Lastly, as far as coding goes, I've got two main bugs I've got to squash. The first is an issue where, when the cursor is close the player, shots are VERY inaccurate. If the cursor is over the player, projectiles fire in completely random directions. To fix this, I'll have to completely revamp how weapon inaccuracy is determined, which will be a bit of a trick.
Right now I add a random value to the cursor's x and y position to determine the direction of a projectile's velocity. I can keep this method, if I add a modifier to the random value that's equal to the percentage of the cursor's maximum distance from the player (I think this will be the easiest, but maybe not the most practical).
Secondly, I use a trailrenderer on my projectiles. They move very quickly, and I really like the effect the trail renderer gives. Alas, apparently there's a bug in the version of unity I'm using (5.3.2f1) (https://issuetracker.unity3d.com/issues/trailrenderer-flickers-and-does-not-render-at-all-times) where trail renderers that share a material will sometimes flicker, or fail to render at all. I've tried dynamically creating materials at runtime, but that slows things down like crazy, so it won't work.
The page says it's fixed in the newest version, so I'll try updating and keep my fingers crossed. If not, I'll have to come up with another solution (firing a steady stream of particles from the rear of the projectile to achieve a similar effect?)
Let me know if you have any ideas.
Then, last but not least, I need to do a graphics overhaul. The player is the only complete graphic. I need to add 1 or two frames to my zombie, make my slenderbie and crows, weapons and all UI icons. I'll probably find something on OpenGameArt for the background and road.
After that, I'm done!
Once I get the Upgrades and Bugs done, I guess I can get some playtesters. Anyone interested?