This initially started as an attempt to move this project to URP, but quickly turned into a clean-up job to get the project ready for beta #screenshotsaturday #medievil #timburton #halloween
New camera, new movement, new targeting, new dissolve system. Gamepad has rumble – Generally the whole controller and feel has been revamped, though the differences aren’t huge as far as the final animation looks – same animations – the code is cleaner, there are less glitches all around and cleaner systems have been setup (for example I replaced my camera with cinemachine, which allows for more stuff with less code down the line)
So here you can see how I made sure that the axe works as I want it, first you can see that there is some targeting going on, which has some tolerance and thus we can target enemies easier
Then when the axe is thrown you can see a variety of lines, these are used to make sure my vectors are all as expected
gray lines mean a connection was checked, but target was far away or not closest
red means that there was an obstacle
green means that this was a valid path
blue line are for initial throws
magenta for returning to hand
Then in part of the video you can see me fighting some of the old enemies, with minimal fixes due to the transfer I am far more happy with how things perform now and I am a better coder, so: yeah, that makes sense
So I released version 0.3.8 last week and I am currently working on 0.3.9, trying to finish the first level and collecting material for the second one. In the meantime a youtuber called JimmyVegas – he does youtube videos on Unity – covered an earlier version of the game with a playthrough which went pretty well considering the level was pretty empty at the time, here it is:
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.
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.
I created the Hell Knight and created some behavior
for him, with a variety of attack animations that allow him to be
vulnerable to your weapons. I also added patrolling that can be enabled
for units and I added shields to skeleton warriors to make them a bit
Also the archers shoot towards your intended path when you are strafing with a bit of randomness to make it more natural.
Still a lot to do of course, let me know if something is particularly bad