New beta build, lots of fixes once again! https://wiki.arcengames.com/index.php?title=AI_War_2:The_Great_Refactor#Beta_3.744_Pathfinding
One of the most annoying issues lately has been “pathfinder errors,” and it turns out they were a source of memory leaks, as well. And also just some general performance degradation, and over-use of RAM. I’ve done a massive refactor on it, and it now uses literally multiple orders of magnitude less data, which is great for everyone. It’s not super well tested yet, but it seems to work from what I can tell so far.
There’s a new issue where if you try to do the F7 dump prior to the first time you load into a game, and then load into a game, it locks up. No idea what that’s about, but it’s on my list for soon. The number of truly severe issues seems to be dropping, which is good, and at the same time we’re getting into a position where performance is able to be better than ever before.
I also made a new… kind of complicated to understand, but easy to use… data structure called ThreadStaticWrapperedPooledItem. This funky thing lets us use the magic of the ThreadStatic while not having collections and other large portions of data orphaned on threads that are no longer using those items. Over time, I’ll likely convert even more things to using this rather than just directly using ThreadStatic collections. It should be a notable improvement in memory usage, without any extra CPU cost during normal operations. This thing is one of the strangest pieces of code I’ve written, but despite that it is something I’m really pleased with because of just how effective it is.
Tom fixed a whole bunch of other errors in this release, including notifications not showing up properly in the prior version (that was an oops on my part). Lots more excellent bug reporting and narrowing-down of issues from Daniexpert, saving me and others a huge amount of time. Seriously, I’m so grateful to our testers, Daniexpert most of all recently.
Badger is continuing to improve the Elderlings in DLC3 for those testing that, and Zeus has made some very exciting further improvements to the new Orbital AI type in DLC3 (it’s one of the most surreal AI types we’ve ever had, and an instant favorite for me).
Tom also added a number of quality of life improvements to various parts of the UI, which is very cool!
Tomorrow I’m hoping to knock out the strange “ships are showing when they should not be” bug and a number of other things. This pathfinder issue was always going to be a huge time sink, but I’m glad to have it done. And the new ThreadStaticWrapperedPooledItem is a new power tool that I can start strategically using anywhere else where we start seeming to have too many allocations over the course of many game loads.
More to come soon.