So, it looks like it's been a little over two years since the last time that I updated this blog. It doesn't feel that long ago, but the calendar tells no lies. I think I'll start with some general updates on what I have been up to since my last post. Or maybe it could be called my list of excuses? Probably either... or both.
- Finished work on the expansion to XCom 2, called War of the Chosen. There were some long hours but nothing on the order of some of the high profile crunch stories that have recently been in the news. At least for me. Was received very well by the community and that's always makes the time you put in worth it. It's already hard enough trying to work on a side project in addition to a full time job, but it doubly tough towards the end of projects. Even if there aren't longer hours, the process of finishing is always seems more exhausting than the normal day to day.
- Started work on my next project at Firaxis (I'll just refer to it as Project Firaxis or PF in these blogs). While others worked on a throwaway prototype, a couple of us started laying the some of the groundwork and structure that would be needed regardless of the finer details the prototype lead to. The biggest change was switching over to build it in UE4. XCom and XCom 2 were built on a modified UE3 engine (pretty common knowledge) but UE3 is getting pretty old and isn't being supported by third parties well or at all anymore. The switch isn't exactly a secret, we're actually hiring for UE4 experience right now in a couple openings (hint, hint, hint).
- Towards the end of '17 I was pulled off PF to work on what would be released as the Tactical Legacy Pack. It was meant to be content heavy so they didn't want many full time engineers supporting it which meant it boiled down to a UI programmer (and there was a lot of new UI) and me (doing everything else). That took over a good chunk of '18 and since it was meant for a super-short turn around we kind of went straight into 'finishing mode'. I continued to contribute the non-prototype portion of PF as much as my Legacy Pack schedule would allow since it was expected I be going back to that project eventually.
- As the Legacy Pack wound down I was asked to fill the spot of Lead Gameplay Engineer on PF. That's a bit of a change from Systems Programming but I've always been slightly more aligned with gameplay systems programming than what one might consider "proper" systems programming. It's been a whole lot of fun and I've felt like I've been able to have been able to shape the overall technical architecture of our game in a solid direction. The not so great part has been that almost from the start we've been having to deliver back-to-back-to-back milestones to our publisher so we've been having to settle for expedited solutions instead of solid ones. Recently we've had the breathing room to start addressing some of the debt those milestones accrued.
All that brings me to what I'm working on these days. For the most part, I haven't really touched the project that I was showing off in my previous journal entries. Even as a systems guy at heart, there are places that I just don't want to have to go like rendering engines, physics, audio systems, animation, etc. For where I was in that project and the things I wanted to do those were starting to be real hurdles (especially my rendering engine). However about the time that I was really starting to feel that way some of the preliminary discussions were taking place for PF, mostly along the lines of could we shepherd along a UE3 build or did we need to jump to UE4. It became pretty clear that we did need to and that PF would be in UE4. Now, I learn best by doing and trying out things so I went ahead and downloaded UE4 at home so that I could have a test bed at home to mess around and learn about UE4 before needing that info at work. Plus it would allow me to focus much more on gameplay systems then the minutiae of supporting systems (no offense animation or graphics programmers that are out there). After a minor stumbling block with the basic download, I pulled the engine source from github and got a buildable project going. Based on my local source control, my first UE4 change was July '17 and I've been making incremental updates since then. It's still hard with a full time job, other obligations and trying to no burn myself out on programming (I hear that's a think that can happen ) so it's doesn't actually look like a project with a year and a half of changes.
With that I present SRPG (Strategy Role Playing Game):
You may say that looks an awfully like the game that I had been building my home-rolled engine and you'd be right. It's still the game that I basically want to be making just in a different engine. I even ported quite a bit of my code (primary dealing with the hexes) over into my UE4 project. The main difference is that instead of being a test bed of a pure component architecture that mine was, it's organized in a way much more similar to what I deal with at work (not exactly of course, but similar) so that systems and patterns that I try out at home are more easily applicable to work. It doesn't hurt that it makes it easier to apply the things I learn at work to my game either. The biggest difference between old project and SRPG is that you'll notice that SRPG actually has something that looks like a UI instead of a bunch of random display strings. Chalk that one up to for UE4 blueprints. All the icons I got from game-icons.net. It also does have a few additional gameplay features like ammo, cooldowns and obstacles that weren't in the OldVersion. I even started a separate todo file for my UE4 project(s). I think I'm getting pretty close in my tactical element that it may be time to start working on a meta element for in between tactical battles. Tactical still needs objectives, mission scripting, map scripting and (probably) a fog of war. And the map needs to be way bigger. And AI. And... And... And... so not done-done but enough that I could add another axis of gameplay.