It’s been a preposterously long time since I’ve posted on here, and I think I’m finally at the point where I’m ready to start sharing some things again about this project again. Prepare for massive text dump.
Null Operator has been the vehicle through which I’ve tried to find myself artistically since its inception, and when that process hit a brick wall, so too did the game. What was initially supposed to be a brief break from the project (in part to move my partner-in-crime-and-donuts across the country) became a much longer lapse due to a sequence of technical, design, and ultimately motivational factors.
As it’s the side of things that’s easiest for me to talk about, I’ll start with the technical side of things first. The idea of Null Operator I had been working with back in July was as a sort of 6DOF dear-esther-like experience, but with hazards and a simulation layer. The direction from an environment-standpoint I had been working with, was to have the player be very small (about the size of a basket-ball), moving amongst a massive and ruined environment of some past civilization. As I’ve been prone to do in the past, the spot where I dove in was in creating an environment concept and asset kit.
After doing a bunch of structural research, consulting some architect friends, and sketching out a logic on graph-paper, I ended up producing a modular set of ruined skyscraper pieces. Comprised of about 80 pieces, and using 5 texture atlases, the kit came together really beautifully. I ended up creating number of batching/workflow processes for myself that scaled really well, including a way to making really good looking chunky weathering/destruction on objects without having to do any manual sculpting.
And it’s a big ol’ butt. I ran into a giant issue once I scaled the constructed kit to a full (even short) building. It ran like shit. Despite my efforts to be efficient with making each piece, once everything summed together, even leanly placed, I was easily clearing 1-1.2 million tris on screen (once shadows were accounted for). Even worse, the very skeletal topology of the environment that had made it compelling to me make it a pathological case for culling and level of details. In short, it was way to heavy, and there was no way to ameliorate that.
Perhaps it was the amount of work I had put into it, or perhaps I was simply at a particularly fragile part of my bipolar cycle, but this utterly crashed/crushed me. I played it off fairly nonchalantly in my Unite talk this past fall, but the truth of the matter is that this destroyed every bit of momentum and investment I had in this project. While this may seem like an overreaction, the problem as I came to find when fighting with this was larger than one environment. The issue was the form.
The beauty of a 6DOF game (especially from the perspective of and environment artist), is that the player has the ability to fly basically anywhere they want, press their face up against any object and see it in all of its detailed glory, from any angle they please.
The downside of this is exactly the same. The player camera can be anywhere. There’s no way to ‘cascade’ detail/complexity in a scene. You have a movement modality that truly sings with a large environment, but that prevents on from using most of the ‘standard’ approaches to controlling draw cost. This is compounded by how poorly Unity’s LOD system plays with its lighting system, and frankly how hard the LOD system hits the CPU.
At this point, I didn’t have any notion of what to do. The combination of 6DOF movement and meticulously detailed non-outer-space large environments was clearly not going to work. So I fell away from the project. It straight up died at that point.
In the mean time…
But of course, I didn’t stop working on things. As I mentioned earlier, Null Operator has basically been the receptacle of whatever I’ve been passionate about. Following the collapse of the previous prototype, I continued to dabble with simulation code, largely focusing my visual energies on contract work, and interrogating again “what do I want to make”.
In all honesty, with the prior Null Op prototype, I had never crystallized the idea enough to have a notion of what my central player interaction loop was going to be, beyond floating about. This had been an Achilles heal, as when the aesthetic endeavor had collapsed, there.. really.. wasn’t…. anything else left. This has been a failing of many of past projects, as coming from a visual arts background, I tend to think in terms of image and experience first, and be kinda sorta super hand-wavy about everything else for far too long.
Moreover, it was clearly moving in a direction that I’ve also found myself in (both in personal projects, and in collaborative endeavors), namely creating something that is visually compelling, rhetorically interesting, likely to fun for others, but something I would likely not find myself actually wanting/needing to play/experience myself once completed. While this may be a totally acceptable approach for a film/painting/whathaveyou, I’ve come around more and more that this is really stupid way to make a game. If you’re asking yourself ‘who the fuck makes games they don’t enjoy playing’, I’ll tell you who. Captial-A-Artists make games like this. I made games like this, throughout gradschool. In many ways it verges on the only acceptable way to make a game within the institution of ‘Captial-A-Art’, where concept, rhetoric, and a particular allergy to fun are dominant. I feel as though it’s taken me these past two years to almost shed all of the mal-adaptive habits and artistic approach habits (while keeping what was truly of value from the experience).
So in the mean time, interspersed with what was an absolutely bat-shit Fall, filled mostly with contract work, and work on a prototype for one of RUST’s other games, I’ve been slowly working on a new idea, a new instantiation of things, in a messy, gestural, and incredibly code-focused way. What I have has finally reached the point that I feel comfortable with it inheriting the moniker of its predecessor. It is, at least for now the new Null Operator.
From here on, if you care to continue reading, you’ll be seeing a very new and different Null Operator. Instead of writing one mega-post on this, I’ll be doing a series of them, to introduce the stuff I’ve been stealthily working on the past couple months, hopefully back to a once-a-week rhythm of posting. The over-arching ‘glue’ that binds the project together is still very wip, so there’ll be a lot of systems being demo’d, while I’ll likely remain a bit coy about the overall concept until I’m more comfortable with its delivery.
See you next week.