Back at it with some updates and thoughts regarding today's hotfix. First and foremost, we hope you have enjoyed the first week of the server so far. The team has invested a lot of personal time into stability and issue correction, but we also understand there are still bugs that can take away from the experience. Thank you for sticking with us!
Yesterday was a bit wild of a day. We had our first "sev 1" issue that required immediate patching and a reboot of the server. Those are always fun given that they either happen at 3am when I'm (Chimpy) dreaming about what it would be like to be Ash the Pokemon Catcher irl or they happen around 1PM when I'm at work role playing a Titan of the Banking industry. Yesterday was a mid day one so I got to debug from my phone in the parking lot of Whole Foods in 90+ degree heat. Hell ya, business! Thankfully the issue was repaired, passed QA (Malant), and moved to production.
One of the biggest challenges with this code base is that it is a multi-tiered application that involves a heavy amount of cache. Cache is a really strong tool that can be a huge boon to performance when used correctly. It can also be a nightmare to debug given data in the database may be correct but the experience in the application may not be. Cache is also fools gold if you are using it to cover up poor architecture solely by reducing hops - something this project had been guilty of in the past and lingers to today. My motto is "bring the pain forward" which means if you fix something, fix the entirety of the transaction. It's also why my my whiteboard at work is confusing to some people... Don't we do checking accounts? What the hell is Channeler?
Deleting characters and remaking with the same name is a great example of this issue and today's hotfix should help along the way. I found a nice reference along the transaction path that may have been pulling data from cache and matching it by "name" and not character ID as one would hope and expect. In the spirit of pulling no punches, this was lazy programming on the part of whoever did it originally. So that has been fixed and there is now a rather specific call to remove from cache when you delete a character. Will this completely solve all of the problems I believe are associated with it? (Eg Seafloor, Regen) I can't say for sure, but it does eliminate a variable which is what we need.
I also took a look at the "grant gold to the noob" code and it was frankly a mess. Cleaned that up and added logging to it so we can better target these events for investigative purposes. Malant needs data to stay alive and this will help.
On the actual changes:
1. Character Utility class was overhauled to include logging and eliminate poorly named variables
2. A component in the Character Item Manager was rewritten to streamline the "grant gold" process
3. The Character Factory was updated to better track (via clear logging) who got gold and, more importantly, who didn't
4. The code that supports Item Repair was cleaned to remove an old analysis process
5. Pets now dismiss when teleporting via a Runemaster or going through the Summmon process. They should no longer be released to the wild to cause terror and death on all who cross their paths.
6. The cache process was updated to better handle character deletion
1 post • Page 1 of 1