Friday Fun #23

Welcome to Friday Fun, the at-the-moment occasional blog where I pop my head up and let everyone know I’m OK and about what I have been working on.

There is No Joy except that which we create.

Duke (adapted from Terminator)

Magical Months

Last time I spoke of a new contract opportunity. Earlier this month, that opportunity has concluded, and I have been putting myself back out there for more work.

And what an amazing opportunity it was! Being me, I jumped right in there and started looking for ways to make the most significant contributions I could. Contribute to what, you might ask? Well, unfortunately I cannot give gory details due to ongoing NDA obligations, but I can say this:

I’ve spent the last 3+ months working as a Senior Engineer in a team of over 15 people, creating DLC for a well-established open world AAA title, using a very large proprietary game engine which the entire team had to learn in a matter of days and weeks.

Let me say that again, more plainly: For the last three months, I have been working as a AAA game developer.

The team I was working with was absolutely amazing. Every individual was extremely talented, and yet everyone also checked their ego at the door. Collaborating with such a team was an uplifting experience!

Every day I woke up invigorated and eager to contribute. As my first gamedev contracting role, and being surrounded by such talent, I was driven to do my very best. It was truly a magical period of time. I was developing games, doing very well at it, and for once I was being paid well for it.

So what happened? Again, I am not at liberty to discuss details, but can say we all did amazing work under very challenging circumstances, right up until the last day of production. There was crazy good energy all around. But then the project was cancelled. It was heartbreaking to see it end. Honestly, it has taken me a couple of weeks to recover from the emotional whiplash of suddenly going from doing my life’s best work to doing nothing of particular value.

Proven

Again, even though it ended before its time, this was an amazing opportunity for my first game development contract – jumping right to a Senior role! I had a lot to prove going in, especially when stacking my resume against those of some of the other team members.

I can hold my head high knowing that I did prove myself. I improved processes and accelerated designers. I explored and applied a game engine familiar to just a few dozen people on the planet, creating working examples of gameplay elements as they were requested by level designers. I plunged unafraid into a custom Behavior Tree system in order to extend the game’s AI. I optimized a build process down from 17 hours to 3 hours with less than a day’s effort on my part after being told by the original authoring team that it would be impossible to accomplish without a huge infrastructure investment.

I did this all while also keeping my mind open and being ready to learn, because I felt did have a lot to learn with this being my first AAA assignment. As a result, I DID learn a lot. I learned much more than I ever knew about AAA production pipelines. Should I ever return to developing Dehoarder 2, I have solutions in mind to problems that I didn’t even know I was going to have. And I really got my feet under me in terms of doing game development within a team and working with specialists of all disciplines.

Occasionally there were long hours required. I was so engaged, though, that I did not mind at all, nor did I ever feel pressured to remain on-task when needs demanded I log off. Our leadership was mindful to rest us after any such periods.

Due to my performance, I have been offered several testimonials from peers, leads, and leadership. I will be under consideration for future contract work from my clients. Hopefully this will make work easier to find in the future.

I have been greatly enriched by my work experience these last three months, and it was easily the best work experience I have had in my entire life. It has left me hungry for the next thing. Maybe the next thing will be even better, even though in this moment I cannot clearly see how that would be possible.

For three glorious months, I worked as a developer on a AAA game. I can now proudly say, I AM a PROFESSIONAL AAA GAME DEVELOPER, and no one can ever take that away from me. Achievement Unlocked.

AAA Developer/Engineer For Hire

So, now that I have demonstrated that I’m capable of doing the work, both in an individual and team contributor capacity, who wants to hire me next? Serious inquirers are invited to contact me, and we can discuss your needs further.

Happening Now: Unreal Bootcamp

Of course, I need something to do until I find work. There is no shortage of potential projects, but the main thing that has bubbled to the top of my list is learning Unreal Engine (and prototyping a new game or two with it). Last week I eased into starting to work with Unreal while taking time to catch up on some personal tasks, and this week I really dove deep into it.

I’d been kicking around this prototype in Unity for a while for a more involved game based on pachinko. It is intended to progressive game with idle features, astronomical numbers, lots of crunch and glitz, and physics-based marble mini games. Since the prototype runs such a gamut of features from graphical FX to physics simulation to specialized math, I thought it would make a great candidate to get ported over as my first Unreal project.

One of the proof-of-concept pieces in the old Unity version of the prototype was a digital scoreboard shader. After getting my simulated pachinko machine launching balls again, This was one of the first use cases I decided to tackle. And thus, the digital scoreboard has become the subject of my first Unreal tutorial video.

One of my next big use cases to tackle is those big numbers. Anyone with a passing technical familiarity of games featuring astronomical numbers knows that the standard data types available for numbers just don’t cut it, with the largest native number types only able to extend to about 10^308 and only accurately representing whole numbers to about 10^19 (This is why numbers in Prepare For Warp top out at the quadrillion (peta-) level.) Under Unity, C# gives us the BigInteger type to handle these cases, but C++ does not have such a standard expandable integer library and I have been unimpressed by most C++ implementations I have looked at, including a TBigInt that Unreal uses under the covers for some cryptographic operations (that one does not automatically expand its range and is not accessible to Blueprints). Unreal’s implementation seems to be one of the few that are efficient, though. Many other implementations I’ve found use inefficient string or BCD (binary coded decimal) storage and algorithms to hold and compute their values (Wow, BCD in 2023? Really?). So, I will be rolling my own Blueprint-accessible BigInteger type. It should be a good C++ knuckle cracker. I know C++ well enough, but have only had cause to use it occasionally (usually in a microcontroller context), so getting in some brush-up time on it will be good.

So I’m going to head back to working on my Unreal Bootcamp, and I will do another of these when I have something worthy of sharing. Until then, have fun, and be good to each other.