Something that has been a major problem in a number of different ways over time has been the combat system. There are a few key things that have been on my mind for a long time here:
Players being able to block areas by targeting a monster that they can’t hit, flagging them for combat so they can’t be pushed
The skull system not working correctly with yellow skulls, it was possible to hit someone and un target them quickly, then when they hit you back they would get yellow skulled
Now, in order to address this I had to completely rip out and rewrite how the server handles flagging people for combat and tracking who hit who. Today I have gone in with a sledge hammer and I think I have managed to rewrite this entire system and get everything we want. Previously combat status was intrinsically linked to the target system, and pve / pvp combat flags were all managed by the same cooldown.
Now combat status is triggered by actually hitting something, and pve / pvp cooldowns are handled completely separately. The one exception to this is monsters, if they are chasing you they will continuously flag you as in combat – this just felt right. With these changes the PVP skull system now also just… actually works, or at least I have been unable to find any case where it doesn’t work testing it with some volunteers ingame. So, here is how combat now works:
Hitting, or being hit by anything will flag you as in-combat
Monsters chasing you will flag you as in-combat
Nice and simple. This fixes the issue with being unable to push players and is nice and easy to understand. Also, as far as PVP goes:
If a player hits someone unprovoked, they receive a white skull. White skulled players cannot enter a safe zone.
If a player has no PVP status and is hit by a white skull player, they can fight back and will receive no skull. As they have no skull, they can still enter safe zones, even if they have defended themselves.
If a player hits a white skulled player who has not hit them first, they will receive a yellow skull that can only be seen by themselves and the player they have hit. Yellow skulled players cannot enter a safe zone.
Simple. The cooldown for pve and pvp combat timers are managed separately, so you can stop fighting players and continue to fight monsters and you will lose your skull even though you are still in combat. The pvp combat timer is reset every time you attack a player, or are attacked by another player. Killing another player gives you a 2 and a half minute pvp combat cooldown, hitting another player just gives you the standard 30 seconds, the same as hitting monsters.
These changes are now live, please report any and all bugs on the discord! Liam
The focus at the moment is really on server-side stability, performance, and engine architecture. As such, it occurred to me we didn’t have an official bug tracker where you can see what bugs I am aware of and their current status. You can find a link at the top of the website!
Also, today a few bug fixes went live as a critical game-breaking issue was found and reported last week. The following are now fixed:
Critical edge-case server issue that could result in “invisible” players
Reconnecting quickly while dying / changing zones could result in the client failing to load into the game completely resulting in a frozen “black screen”
Items with an uneven amount of stat points would never drop the top level of secondary stats available. Monsters have been scamming you all
Death messages should now always appear for everyone
It should now be impossible to time a reconnect perfectly as you die and not actually die
Unread whisper message count now correctly renders over the player sprite
Advancement messages now also show to the player who advanced
Very slight performance improvement to lighting render loop
That’s all for now! As always, if you find any issues and they aren’t in the bug tracker please report them on the discord.
Small update to address a few bugs and make some quality of life tweaks. Nothing major I’m afraid, but I felt this was necessary as there were a couple of nasty live bugs and I’ve been doing a lot of code restructuring on the server so wanted to get this out to make sure I haven’t broken anything further.
Various map tweaks and fixes, the start of the game is now illuminated with torches for example.
Behemoth map extended
New Revenant map added
Pushing players animates correctly again
Possible fix for an edge case bug when switching maps in combat and connecting in from another device
It’s been a little while since the last update – I had quite a lot going on in real life and also I think I needed a little bit of a break from the project so I figured things would be alright for a little while until the gofundme neared the end of it’s run.
I have been spending some time going through the server engine code, reworking it and taking a critical look at how it is working, and today I deployed some architectural changes to the server that have eliminated the primary source of server-side frame skipping (you guys would see it as lag) tied directly to how many people are online, logging in or logging out at a given moment. In addition, I had a brainwave and have made some changes to how the lighting engine works on the client. You should see:
No more lag when hundreds of players log in / out at once (i.e. after a server restart)
No more lag when there are 500+ players online
Much smoother performance in general when you are on a map with a lot of other players
If you had low FPS in abyss and other maps with lots of light sources (lava), you should now have much better performance
I have identified another reasonably heavy architecture change that will speed things up even further, though this is going to take me a while to deliver. This is all of course still running on the original server hardware, I am going to be ordering the new machine tomorrow which will again significantly increase performance.
To celebrate this purchase I have activated 5 days of events. Egon has kindly expanded some of the hunting zones so everyone isn’t quite as squished, I am testing these now and will be releasing them during the week.