I am not, by trade, a texturer. I’m a professional programmer. I’m an enthusiastic (if nothing else) writer. I’m a passable 3D low-poly modeller and animator. I’m good enough at gameplay and level design. That’s a combination that has allowed me to get most of the way to making an entire game by myself.
But wrapping those 3D objects and landcapes in textures? That’s always given me gyp. I’ve tried and tried and tried over the years to find a method of texturing that nestles somewhere between my capabilities and my tastes, and it has been quite the journey — the next phase of which I am now embarking upon…
When I first needed textures for those original “RDZ Industries” models I made for Warcraft III, I cheated. I lifted four texture panels from Unreal Tournament and stitched them together into a single atlas, which I proceeded to reuse over and over again. Eventually, a kind soul by name of PINS did a paintover which added some extra bits of detail. That worked back in the modding community, where everything is freely given and freely taken, but it could never last.
Eventually I needed more textures and parts and ended up with the art suite of my total conversion Project Y4. I hesitate to call what I did there “procedural”, because there was no sane algorithm involved — but it was procedural, in the sense that I cobbled it all together using tools in Paint Shop Pro 7. Buttonise and Bevel over rough noise for metal panels, that sort of thing.
The leap to a stand-alone game required something more than those extremely naive techniques could offer. For a start, Project Y4 was set in an industrial facility on a rocky moon precisely because those were all the materials I had — but that limitation also made it dull to look at and explore. I want Exon to have bright grass and trees as well as rocky canyons and dusky asteroids!
My first answer was proper procedural textures. I found an open-source tool called NeoTextureEdit, which offered a pretty node graph for chaining together various noise generators and mathematical operations to produce seamless textures. I got a decent way with these, but they never felt quite right; the always seemed to be missing some spark that my favourite games of yore were able to capture with, what I am led to believe, similar techniques.
Procedural textures also didn’t get me foliage. Yes, the need for grass has been one of my most primal motivators.
Eventually, I stumbled upon my final answer — textures.com. Textures.com is a huge library of photo-based textures that can be used royalty free and, at low resolutions, completely free. It has thousands of offer-the-shelf seamlessly tiling textures that can be dropped directly into landscapes — metal, dirt, rocks, and even, at long last, grass! These effortlessly look better than any of my awkward fumblings with Perlin noise, capturing exactly the kind of dirty look I want for Exon. I have been smearing them liberally across my terrains ever since.
While this change made the environments better, it did leave behind the old “RDZMech” texture atlas — which has stubbornly remained built of those meanderings around Paint Shop Pro 7 from Project Y4. With the enhancement of the living world with realistic textures (albeit squashed down to late-90s resolutions), the mechs and vehicles have been looking rather conspicuous ever since. As is always the case, I’ve felt this problem for years but had been putting off doing anything about it because… well… I wasn’t really sure what the answer was.
If you start to dig around the more esoteric corners of the textures.com library, there is plenty of source material that drifts close to what I need for vehicles. Inside the “Metal” category, for example, is the ominously named “Various“. This contains random pictures of bits of engine, control panels, pipes and wires. “Aircraft Panels” seems a little specific, but there are a few details worth noting in those too. But it is all bits and pieces rather than anything that can work as-is; a screw here, a handle there, the metal case of a phone booth…
My saving grace is that Exon is built around low resolution textures. The textures.com free tier only allows you to download their smallest offerings, but that’s usually 1024×1024 — that’s 4 times the size I need for a terrain texture. Meanwhile, the biggest individual panel in the RDZMech atlas is a paltry 128×128, and anything with real detail is even smaller.
When you photobash at full resolution, all sorts of nasty seams show up. Smushing together textures from massively disparate sources and manually cutting elements out of photographs isn’t easy — colours blend and bleed when you get up close in ways that don’t show when you’re standing back and looking at a whole picture. An area of shade can hide the true end of an object and the start of whatever’s behind it. Lines are not perfectly straight. Corners are a pain in the ass. (And in the game.)
But I don’t actually need to care about that, for one beautiful quirk of this entire process: it all disappears in the downsampling. I can photobash at high resolution, warts and all, then all those rough edges simply disappear in the wash. Whatever resizing algorithm that Paint Shop Pro 7 uses neatly feathers the ragged edges and makes them meld together.
I have actually been slowly building up my supply of extra details for a while, so this project is merely ramping up production. My first extensions were tyre treads and a hubcap for wheeled vehicles like the Loader Dozer and the Truck. Then I started to get a little bit carried away trying to spice up some weapons — you might have noticed the Pistol and bullet ammo in the last demo release (v0.05) are made of different elements than any other items, and I’ve recently redone the Harpoon and the Bologun with those same parts.
Applying those techniques to the primary metal panels that most vehicles are made from instantly upgrades all my models… Which means it’s time to adding even more details for special areas — all composed of pieces of every-day artificial junk, recombined to from sci-fi machinery of indeterminate function. The Epsilon mech’s hands are now a series of small pistons that evoke fingers. Arm and leg joints are marked by a large, circular screw plate from a metal floor panel. Forearms and shins are decorated with the struts from a hydraulic door.
All of these little parts add dirt and character — hopefully in the right balance to provide more coherent visual interest up close without turning each mech into a wall of noise at a distance. Which, of course, means when v0.06 comes out, I’m going to have to re-do all my key art and get a new branded T-shirt again…