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
– weapons
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
– targeting
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
– Roll/Evade
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
less vulnerable.
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
We use cookies on our website to give you the most relevant experience by remembering your preferences and repeat visits. By clicking “Accept”, you consent to the use of ALL the cookies.
This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary cookies are absolutely essential for the website to function properly. These cookies ensure basic functionalities and security features of the website, anonymously.
Cookie
Duration
Description
cookielawinfo-checkbox-analytics
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Analytics".
cookielawinfo-checkbox-functional
11 months
The cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Functional".
cookielawinfo-checkbox-necessary
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary".
cookielawinfo-checkbox-others
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Other.
cookielawinfo-checkbox-performance
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Performance".
viewed_cookie_policy
11 months
The cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data.
Functional cookies help to perform certain functionalities like sharing the content of the website on social media platforms, collect feedbacks, and other third-party features.
Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.
Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics the number of visitors, bounce rate, traffic source, etc.
Advertisement cookies are used to provide visitors with relevant ads and marketing campaigns. These cookies track visitors across websites and collect information to provide customized ads.