Roadmap for Bigger Issues / Features

Started 20 Aug 2019
by gruenesschaf
in Tavern
All of these parts were put off for one reason or another as, unlike the vast majority of issues, they are not a matter of only a couple hours at most but require multiple days, or in some cases even weeks. Inbetween these bigger things some smaller things will be still done as usual.

This post is just meant to give some (technical) insight in a couple things and some reasons why some long standing issues (that may or may not seem easy to fix) weren't handled yet.


Launcher Rewrite [Done]
For multiple reasons a rewrite in a different language is required, will likely have a fall out of a couple issues but the majority of those should be fixed within a couple days.

Server Startup Time Part 1 and Event Titles [Done]
The event titles that were promised long ago weren't implemented until now as the query that would receive that data is responsible for over 30% of the startup time and adding this extra data to it would nearly double the runtime. The change here is to just keep the counts of all kills and update it when a kill happens instead of relying on the kill log. This should also make the herald reflect the actual kill count with each update and remove the small drift that some parts have.

Guard Archer require LOS between each shot [Done]
This one surprisingly takes a lot more effort than one would expect, mostly due to the horribleness of how combat state and ranged weapons are handled for npcs. It's probably the riskiest one of the changes here as, given the horribleness and complexity of the parts involved, the likelihood of this introducing bugs into the ranged weapon handling and potentially even melee swings (even for player) is pretty high.

GC Work Reduction via Cold Storage
With the GC Leaks pretty much fixed we're now moving on to focusing on reducing the GC duration, gen 2 collection specifically.
In part due to lazyness / cleverness but also for simplicities sake and to avoid DDOS due to logins as well as due to the available RAM I early on decided to just load all data on startup, including literally all still existing items, even if they are on characters that haven't been played since forever. As we're using a garbage collected language (.net), at some point the GC has to walk through the entire object graph to see if something is still reachable or if it's garbage, having these by now 10 million item objects each having at least 3 more objects does add some time to each gen 2 collection. I really want to keep loading the data to avoid cases where logins (or any player actions for that matter) can actually cause database traffic, however, we'll switch over to just storing many things as raw bytes allocated in unmanaged memory and only once a person logs in will we create an actual object graph for that data. This will start of with just the items but will be extended to a couple more things if it works out fine.

Dynamic Path Altering Terrain Changes
This includes keep wall destruction / tower razing and probably keep wall siege towers as well as pets pathing through doors. This one is likely to get put on hold a couple times as it really is a rather big project that kind of requires large rewrites of the pathing sub system.

Not messing up the quick bar for hybrids on level up
This one really is stupidly surprising, it requires a rather big change on how skills are stored for characters. At least from the research so far, it looks like the client expects the server to know which skills were sent to the client and in what order and to precisely replace those.
This topic is locked and you can't reply.

Return to Tavern or the latest topics