Glorious Alpha Two Testers!
Alpha Two Realms are now unlocked for Phase II testing!
For our initial launch, testing will begin on Friday, December 20, 2024, at 10 AM Pacific and continue uninterrupted until Monday, January 6, 2025, at 10 AM Pacific. After January 6th, we’ll transition to a schedule of five-day-per-week access for the remainder of Phase II.
You can download the game launcher here and we encourage you to join us on our for the most up to date testing news.
Alpha Two Realms are now unlocked for Phase II testing!
For our initial launch, testing will begin on Friday, December 20, 2024, at 10 AM Pacific and continue uninterrupted until Monday, January 6, 2025, at 10 AM Pacific. After January 6th, we’ll transition to a schedule of five-day-per-week access for the remainder of Phase II.
You can download the game launcher here and we encourage you to join us on our for the most up to date testing news.
Possible "ghost AI" memory leak cause from someone who dealt with the same kind of issue before
Dreoh
Member, Alpha Two, Early Alpha Two
I don't know where else I would post this since creating a whole post for this feels a bit excessive, but in the off chance it helps I wanted to post it somewhere it would be seen.
Among other things, I've done modding in Dota2, creating a custom game that required ample game objects to exist at a time. There were plenty of enemies and units on the map at any time, and my co-creator and I were using invisible dummy units (essentially an equivalent of AoC's behavioral trees) to anchor particle effects and other things on in the map.
We encountered a bug where sometimes after a game was open for a long time the particle effects and dummy units wouldn't be deleted when they should be and we couldn't figure out why since we were removing them correctly in code.
It turned out that Dota2 only indexes so many units, and after there are too many units on the map, the references to dummy units and other units could be lost, making them unable to be deleted anymore. Also, sometimes deleting the unit wouldn't completely release the unit from memory, so to get around that particular issue we created a dummy unit recycle system instead of deleting them where we just reset them to the base behavior and added the custom unit values instead of deleting/creating them. We unfortunately didn't have the ability to modify the engine to fix such things.
So I'm curious if Unreal Engine might be giving the same kind of issue to the AoC team.
As the IS team is far more experienced than me, It's very likely they have already considered this or even made such a thing impossible, but as someone who writes code I know that sometimes there are things that no one on a team considers so on the very small chance this information helps I figured I'd give it. If anyone knows where else I should post this instead I'll do so and request this thread closed/deleted.
Among other things, I've done modding in Dota2, creating a custom game that required ample game objects to exist at a time. There were plenty of enemies and units on the map at any time, and my co-creator and I were using invisible dummy units (essentially an equivalent of AoC's behavioral trees) to anchor particle effects and other things on in the map.
We encountered a bug where sometimes after a game was open for a long time the particle effects and dummy units wouldn't be deleted when they should be and we couldn't figure out why since we were removing them correctly in code.
It turned out that Dota2 only indexes so many units, and after there are too many units on the map, the references to dummy units and other units could be lost, making them unable to be deleted anymore. Also, sometimes deleting the unit wouldn't completely release the unit from memory, so to get around that particular issue we created a dummy unit recycle system instead of deleting them where we just reset them to the base behavior and added the custom unit values instead of deleting/creating them. We unfortunately didn't have the ability to modify the engine to fix such things.
So I'm curious if Unreal Engine might be giving the same kind of issue to the AoC team.
As the IS team is far more experienced than me, It's very likely they have already considered this or even made such a thing impossible, but as someone who writes code I know that sometimes there are things that no one on a team considers so on the very small chance this information helps I figured I'd give it. If anyone knows where else I should post this instead I'll do so and request this thread closed/deleted.
7
Comments
As the junkbin wasnt working properly.
Problem is, if the identity/index is truly being lost (as in your case), how does the algorithm actually replace them, without knowing what to replace?
That way you wont have to kill the object via mutiple convoluted logic streams for object meshes and or their collision meshes.
They will simpy kill themself, if the status flag says its dead.
Why manage actors that can manage themself just as well ?
But that also enables attacking the problem from another direction for the default.
Each actors assumes 'death by default' (rather than exists by default), unless told otherwise.
There can be no ghosts then, although objects may fail to appear.
But failing to appear is instantly observable and easy to debug.
If Intrepid is by chance using some default Unreal Engine API somewhere that doesn't handle behavior tree removal completely it'd be similar, but they've said they've been able to and have been modifying the engine to suit their own capabilities so it's something they should be able to fix. If it is the same kind of situation that is.
It's the drawback of using someone else's (even as amazing as it is) engine.
Again, they are capable and likely have better theories, this post is really just kind of an intended helpful shot in the dark. Maybe it'll even help trigger some kind of revelation as sometimes happens when debugging lol.
They have modified it quite substantially.
I am aware, hence why I said "by chance". It's also impossible for them to not use some of the UE API, otherwise they'd just have built their own engine.