So, like many programmers, I’m picky about things. This shouldn’t be a surprise.
In working on my game project, I’ve forked the UE4 engine. The thing I changed first was to split the
AGameMode class into a base class and a derived “Epic” class. The reason for this is because
AGameMode has a nasty hardcoded state machine, and a few of the engine classes reach into it and set its state. It’s not great.
So my refactor removed that coupling and moved all the base functionality to
ABaseGameMode, which worked nicely. I could then derive my game mode class from
ABaseGameMode and provide my own state machine, and have fine grain control over where and when things happen (which you don’t have a lot of if you’re forced to use the Epic state machine.)
Fine and good.
But then, I got to the point in my project where I needed Destructible Meshes, so I took what turned out to be 2 months off to build a New Destructible Mesh Editor. That, by necessity, is based on Epic’s master branch, which means at this point it’s based on 4.8/4.9.
So now I’ve got two branches, my
AGameMode branch, and my Destructible Mesh Editor branch, and I need to combine them. The problem is, there’s no stable version to base them both on! 4.8 isn’t released yet, and moving the DME to 4.7 would be madness.
An alternative would be to use the 4.8 preview, but that appears to be quite buggy.
So, my best approach at this point appears to be… waiting. Sigh. Stuck in between version limbo. I hope they finish 4.8 soon.
I’ll be writing a post about the
AGameMode refactor soon. I think it’s a pretty good change to UE4. I’ve got it ready for a Pull Request, but it’s waiting on some discussion with Epic.
UPDATE: I’ve written the first post in the series.