I wanted to cover a variety of Steel Hunters updates across the board so this piece is covering a lot of ground on a variety of areas; prepare for a large-cone blast of wordspew.
To kick off this topical and tonal hurricane of a Steel Hunters update, lets start with the two biggest morale boosts in months:
I’ve worked with Xalavier on another piece for PC Gamer in the past, but seeing the game in a big area in the spread was just joyous.
I’ve had work on games while I was at Stardock Entertainment and when working briefly on Crowfall… but seeing something I’m directly responsible for like this is just, well, pretty profoundly meaningful to me.
During my sprints it can be hard to calm down and get to sleep, so I tend to play with iOS image and video apps.
This time: a simple, mostly-chronological, progression of Steel Hunters from its tech art/vfx sandbox playground two years ago up to a few weeks ago.
It’s goofy, sure, but it’s such a strong reminder that progress (tremendous progress that I couldn’t have ever fully predicted) is being made. Even when it feels like I’m crawling to the “finish line”. As follows:
I still wish I could have used “Carry On Wayward Son” for the background track.
So far, Steel Hunters has been an enormous personal investment (and clearly not financially), but it’s one I’m making because I believe it demonstrates a sort of quality and style of game design that can make for a really great game experience. But, also, because the game entire production is based on:
So far, I’ve been the only person working on Steel Hunters; and that’s been, to say the very, very least: rough. I’m doing this because I have enough confidence in the quality of the initial publisher demo (which hopefully can be successfully conveyed in the short initial public trailer). And, aside from that, I’ve never had more fun working on a project and been this certain about how great and varied an experience it can be (whether played single-player or, especially, with up to three other players).
I’ve also constantly targeted a level of quality for a “prototype” (probably more akin to a green light demo at this point) that is representative of the game while, at the same time, based on production-ready and quality code and design that it can immediately “hit the ground running” with more people involved. It’d be fairly impossible to make the full game by myself, much less hit the intended play experience without some excellent team members who specialize in areas I can only skate by on.
I specifically wanted to position Steel Hunters as a AA-quality game and aim for as low a budget necessary as possible because I want really want to demonstrate that even a fast-paced third-person shooter (with heavily customizable ways for players to play how they want) can be made without a AAA budget. And all of this would be possible for the list of reasons I mentioned earlier.
I actually had some early (too early) negotiations with some publishers over a year ago that, I think, could have actually become a deal… But I wasn’t psyched with their view of what the game needed (especially given the drastically inflated cost associated with those needs), so I eventually decided to just be patient and spend as much time on whatever I can develop in an attempt to show off a game that resonated with a publisher that really gets the goals we (my COO and I) have.
NOW, all that said, the first trailer is — for real this time — not too far off. Not imminent, but very much in sight. Realistically, I could make a few days’ worth of changes and script a handful of sequences and it’d be pretty solid, but I’ve always wanted the trailer to be solely comprised of unscripted, in-game footage — even if it’s only the highlight reel from the sum total of footage taken. When I initially wanted to release a trailer (a year ago), I realized doing that would be falling into the trap of so many other projects: a trailer that is good but nowhere near representative of the game’s actual current state.
And, really, the trailer is a larger risk because it can’t be as carefully storyboards and scripted to really make the most of its fairly short duration (~1:15m). But, it’d be silly to talk a big game about “how games should be developed and marketed” if I didn’t even follow the same principles myself.
But the trailer has a lot going for it: we integrated a character, of sorts, to convey the intended dry and dark humor I want to infuse the game with while the gameplay itself just shows a lot of mechs and explosions and so forth (to be voiced by a VO actress, Tamara Ryan, whose rough recordings matched the tone and cadence of the character on even an initial dry run). I also was able to get help from one of my favorite bands, The Felix Culpa, to provide the background music for the whole thing. So… I’m optimistic.
The publisher demo is intended to follow on the heels of the trailer. I wanted the two to be simultaneously available, but the prep for the two deliverables is so different that it was just unrealistic
I just cut everything I wrote (which was probably a page and a half or two) because, really, I’ve already talked enough about how intense and rough the development of this project has been. And I’ve learned a lot of great lessons I’d love to relay at some point, but that’s for another post. So, here are the neat things going on:
I wasn’t planning on changing the landscape all that much from its second iteration, but one day I wanted to aim for smoother, more sand-swept landscape with less rigid mesas, some small dunes/waves, and smoother, more open spaces. The prior iterations were nowhere near open enough to ever construct a believable space for where a city may have once been.
So as to not labor on the whole process too much in an overview article, here’s what iteration two looked like:
And here’s the lighting-only and end result of the current third/final iteration of the landscape (I didn’t do exact before/afters, so the lighting-only image has meshes from the second-iteration landscape, which I was using for a scale reference):
On the plus side: anyone with World Machine and GeoGlyph 2.0 can check out the two-pass (one of the biggest mistakes in the second iteration) node graph that generated it on the Joy Machine GitHub Repo.
Here’s a more recent screen shot of the progress on the landscape. Of note is that it’s been a lot of high-level building/mesh layout work to establish the rough feel of each of the map’s disparate areas. You may notice that there’s still a fairly large space that hasn’t been filled out quite yet, but I just figured out what that was going to be a day or two ago:
The current aesthetic for the “AI” buildings (the very out-of-place clean, new, and shiny buildings) is very much a work-in-progress.
For a more grounded perspective, though, here’s the same camera composition some of you have come to know and love (or at least expect):
I have, much to the detriment of my own stress levels and completely-unfulfilled desired time doing design/vfx work, spent about 90% of my time over the last three months working exclusively on gameplay and backend code. So much C++. So much. But a run-down of the major systems currently in-place and just in need of tweaking to feel and function better:
I was hoping to postpone work on the core game simulation backend until after the demo/trailer because it’s a huge part of the project and as non-trivial a system I’ve ever had to design, much less develop, in my… career, I think? But, because luck isn’t a thing that exists sometimes, that had to receive first-pass support now. Literally: now. I’m wrapping up the first-pass implementation today.
The whole goal of the game simulation was to be able to easily integrate independent systems/functionality into any type of object in the game so that the object can handle it as it needs to while the actual implementation of the systems (which can be trivial or can be quite complex) it handles never need to care one iota about how an object may handle them. I was always assuming this would be some kind of event system, but the more I looked through my own design notes and documentation, the traditional concept of an event (more specifically the Unreal Engine 4 concept of an event) didn’t quite fit with what I had in mind: a, let’s say “occurrence” for now, would be activated in the world that needed to be handled by any object which supports that occurrence. But each occurrence, not intended to have knowledge of any of the specific objects that would respond to it, would need to be handled by anything that fell within its “influence range” (which can be unbounded). Aside from the challenge that presented, there was the performance implication that a locationally-relevant occurrence could have on a world filled with any number of objects that may or may not support it.
The first thing I did once I realized all of this was try to find a working terminology for the entire simulation architecture that would clearly separate it from the word “event” — otherwise there’s just room for a whole bunch of confusion throughout development (in practice or purely in conversation). This led to:
As I was searching through all of this, I was talking to my BFF Josh Sutphin(who explicitly said to note that it’s currently undergoing work to make it “not absolute shit”) about what kind of setup I was thinking of. And I said:
I’m thinking of the whole thing as, like, a droplet of water falling into a pond and the ripple effect it causes.
About an hour, I discovered that “Metaphor-Based Metaheuristics” were a thing. As I was looking through the list, I found the “Intelligent Water Drops Algorithm”. A very rough interpretation of the summary and its corresponding paper, while not anywhere near being exactly what I was thinking of, was close enough for me to absolutely dig it. So, my simulation is:
This is possibly the most ridiculous thing I’ve ever come up with, but having implemented 95% of it by now, its practical use is perfect. So that’s neat.
I probably won’t do any more Steel Hunters-specific articles until after the trailer/demo are ready, but this was long overdue.
I’m currently working on Part Three of my two-part series (part one, part two) which is solely as much advice, anecdotes, recommendations, and some more touchy-feely stuff like how to do deal with our weird games industry if you’re someone with a kind of mental illness that I have some familiarity with. So hopefully it’s easy to see why it is taking so long to write.
I’m also working on a very rough overview of C++ programming in Unreal Engine 4 to serve as interim resource for developers working on games and finding the lack of documentation on pretty critical subjects problematic or not fully understanding why C++ in UE4 is the way it is, my best-practices recommendations, a bunch of tips/tricks/snippets/utilities that I’ve developed to make my life easier, as well as a software/extensions (or just the configuration of commonly-used extensions and even Visual Studio itself for best-use with UE4).
I can’t even begin to give a rough idea of when I’ll publish those other than: some day. The whole Steel Hunter thing in addition to contracting that I need to do to, like, live is starting to be a substantial high-wire act to maintain. But I’ll get there!