After version 0.2.8 I wanted to flesh out more of the level, so I started placing rocks, trees and of course enemies.
I also made some changes in order to better accommodate mouse/keyboard play, most notably you now run at full speed when you hold down shift, making the standard speed a bit more manageable for most players.
Now usually I let people know about this in the controls menu, but it seems a lot of people don’t look at those, like ever. So I decided to add a tips interface, at least until I make an actual tutorial for the game, but that’s not for a few months, so:
As I was testing I remembered my notes: make the enemies disappear more
‘gracefully’, I also noticed that enemies weren’t responding as fast as
their number increased.
So first I tackled the ‘dissolve’ effect, since I want to do something similar with the weapons and I had already bought an asset to help me out:
Jack I don’t feel so good
So now the enemies dissolve when they die, from top to bottom, which was pretty easy to setup with ‘Advanced Dissolve’:
Then I tackled the enemy performance issues. Initially I was aiming for
more compact spaces, but going around the map and exploring is part of
the experience, but that means that enemies are in higher numbers. My
first attempt focused on the enemy control script, I disabled it when
the enemies were not visible in a way that would keep them working
correctly when not.
This worked, but it turns out my script
wasn’t the issue, I am using Unity Navmesh for the enemy navigation,
the level is big, the enemies are many and the system has a built in
system to defer calculations to reduce slowdowns, which means that the
enemies weren’t as responsive once I passed a certain threshold.
So I implemented my first idea: divide them into groups/areas and enable/disable based on distance. Their paths are pretty much irrelevant unless you are near them, so having them be alive at all is not needed, this works and lightened the load quite a bit. I’m going to explore more options, but for the moment this is enough, now that I have the enemies in clusters I can set their parameters in clusters as well: for example maybe using a lower quality solve for the Navmesh the further away from the player enemies are.
Anyway, some more adjustments to the stats and general values, clean up and of course dissolving barrels.
Added Death’s Scythe with one attack at the moment, I also made a bunch of other adjustments and fixes to make things more stable.
I tuned the stamina and magic costs and regeneration values. The Scythe is very OP, but drains stamina like fruit juice. I’m planning on adding an animation and effect for when you pick the Scythe, but at the moment it’s just a transition. I had to change a few things around in order to support additional weapons, but I always knew that going in, I just made what was useful at the time.
Oh the Pistol will also let you know you ran out of Magic, spamming the attack buttons won’t drain your stamina and magic. Opening Chests and Gates won’t affect those either.
So during the past few days I have been making a number of improvements to the game according to feedback
First I increased the number of enemies around the map and put in some additional stuff trying to fill in the map, you can see the enemies in circles below. I had to implement a couple of lines of optimizations to avoid doing any calculations for this amount of enemies while out of sight, but it was easy.
So now about half the level has a medium to high distribution of enemies. I also added a tower to the level, which will be your destination. Just an asset from the asset store for now. Added some fires and voila:
Then I wanted to add some settings so that people could have at least a bit of control on performance in-game, before I roll out a complete set of controls. Someone mentioned motion blur was too much and I saw someone play with a low frame-rate and it was really bad. So I added motion blur, bloom and ambient occlusion controls, since those are the heaviest effects.
Finally I created a live cursor, which recognizes enemies and tracks them if you can hit them, at the moment it is just a green particle effect, but the plan is to make her into a fully fledged character. Joan the Pixie will follow Jack around and give him hints, target enemies and have a voice, so that the game isn’t as silent and lonely as it is now.
Next on the agenda?
complete the level
make a navigation map
add more enemies and props
add interactive objects and characters
but first the map. You can download and play it now
More feedback came in from a few sources and repeat reviewers (fans!). One was a video and showed me something I would never do, others were descriptions of issues and others descriptions of possible solutions.
I have gotten into a groove with the project and I am putting in the time in order to get the controls, camera and action release ready, so that I can move on to levels, sound and cinematics. It’s crucial that the game isn’t a total pain to play and even though my initial plan was to focus on the gamepad – in order to limit my scope and by extension my problems – enough people testing the game were using the mouse and keyboard and giving feedback it was impossible to ignore.
I think I have made progress with the character movement and the camera is pretty good, but I still need to work on getting the weapons to enhance the experience.
I fixed a variety of bugs, here is a small list and the culprit:
– landing animation would not play even though distance from ground was triggering
Solution: a checkbox needed to be unticked in the transition settings
– enemies could be pushed around, most noticeable with the Hell Knight
Solution: physics needed to be set to Kinematic. Had a ton of consequences, but the gameplay doesn’t depend on the physics of the enemies so I just limited their ‘physicality’
– some collisions on stairs and bigger map
Solution: initially I just didn’t want anyone to go up the stairs, so I moved their colliders, but then I added jumping and you could go over them, which exposed the large empty terrain, so I fixed them and filled in a chunk of the map to see how it could look
– axe would vanish or stay motionless in the air
Solution: I have spent quite some time with the axe, it relies on coded movement, but also on the physics engine and balancing these 2 is always tricky. I removed most of the dependencies on the physics engine and cleaned up all animation transitions, since it seemed that people were mashing buttons and this caused unexpected triggers of animations and functions, allowing the axe to behave erratically. Streamlined the axe states and made a bunch of stuff distance based
Solution: now that you aren’t targeting with the mouse the behavior of the weapons has changed, one of the things needed to make things more manageable from a player perspective it seems is to avoid having two weapons active at the same time, so instead of having to draw the gun and shoot, you now are either using the gun or the axe and this is how I will implement the rest of the weapons – one at a time. Bloodborne be damned (it was a far fetched concept to begin with).
Controller mapping has changed
Haven’t tackled a full blown solution to this, but you can still lock on a target and the weapons have auto-targeting with some tolerance. My plan is to add in an item that shows which enemy is currently targeted by the system, so that players have a better understanding of what is going on under the hood
I removed the previous system with 4 directions of roll, now you can roll to the left and roll to the right with the controller bumpers or ‘Q’ and ‘E’, don’t know how useful it is.
So has keyboard mapping and mouse
Things I will probably need to add: health display for bigger enemies at least.
Tons of sounds. A tutorial and controls setup page and of course half a dozen more levels.