Auto Fire is continuing to look better these days. I got rid of the object-based fogging and returned to the old-school concept of putting a 2D plane between the camera and the world. You’d think it would look obvious but with a little fancy math I can scale and position the plane so that users are (more or less) none the wiser. I was able to add some perlin noise and give the fog two colors (defined per map) that makes everything smoother and more pro.
I put more effort into the overworld as you can see above. Those roads are generated now, as well, followed by a smoothing step that places the correct road tiles in the correct locations. There are still a few specific intersections that I neglected to create tiles for (mostly diagonals to other diagonals) but the overworld is now guaranteed passable and locations have roads between them. The roads make the overworld far more simple to navigate and find out-of-the-way locations.
I still have to finish off some of the world connections and then optimize the hell out of the world generation (currently coming in at 15 seconds) but it should be pretty quick and easy to trim all the low-hanging fruit (I don’t cache the passibility of each tile yet when calculating paths for example). Always more to do…
Dang, I guess it’s been a few weeks and mostly I’ve been working on more of the inventory system. I managed to get the Garage working fully and now they appear on the map as places you can load out your gear, repair and refuel.
Working on infrastructure for this long gets a bit taxing, so I wanted to switch over to something more visual for a palette cleanser… so I chose to noodle around with Fog of War (not the most fun thing, but better than weeks of UI noodling).
Nerd Alert inbound!
My Fog of War (that is, how I represent areas of the map you haven’t explored and/or can’t see) is currently implemented tile-by-tile. I implemented it by creating a custom shader that fades out the individual tile models based on a fade value I feed each one. This has a few drawbacks:
The edges are hard and look a bit amateur as a result.
The fade currently goes to black, which is fine for dungeons but not appropriate for all my above-ground venues.
(Large areas of black also look a bit “cheap” on 3D games, although that’s my own personal bias. 2D Roguelikes somehow look just fine with the very same thing, however!)
I can only fade per-mesh, so in order to support height-mapped terrain meshes, I’d have to write some wacky shader to handle it.
I have to put a custom material on every model, and write a shader for any weirdo material tricks that a specific mesh wants to use.
I did some experiments with non-black fade colors, which didn’t add a ton of complexity to the shader but still emphasized hard edges. Also, I had to turn off screen space ambient occlusion (SSAO) to make it fade to the pure color, which is something I use for my terrain features to “pop” a bit more. Not a huge loss, but it only reminds me about how my technique is impacting my rendering and asset management.
In the end, I’d like a fairly “soft” (and in my opinion, more pro-tier) representation of Fog of War. For most 2D Roguelikes, the common technique is to place a huge planar texture between the camera and the world and draw areas of black and transparency over it to obscure undiscovered areas. I had steered clear of this technique because my terrain is 3D and my camera is a perspective projection with a viewing angle of about 35 degrees… this causes the Fog plane to parallax (obscure different areas based on the viewing angle)…
However, this can be solved with math… I can scale and offset the fog of war plane to match a fairly flat map, so I’m going to try it out. Granted, using a plane will fail if the player ever drives up a hill (which is something I support, but only use in a few locations), but I think this technique should do well for all my current combat areas (not the adventure ones) for the short term. Will see if I can get it rigged up tomorrow morning before work. Wish me luck!
The Seattle summer has finally gotten into full swing and it’s harder to stay inside, but in spite of this I’ve pulled together some time to work on Auto Fire’s core player systems… and this involved a lot of time with Photoshop and Word as well as with Unity and Visual Studio.
As a rule, I design in a a very top-down way… Visuals, mockups, and models are very important for me to get my head around the design as well as to communicate it to others for feedback. My objective with Auto Fire was to keep the spirit of the deep car customization from games like Car Wars, but to streamline it for a smoother play experience.
I was a huge fan of Car Wars back in the eight-e’s, but building a car for the game involved a wholllllle lot of pencil lead and eraser nubs…. like, blackened rubber crumbs all over the damn place. Players had to choose their body style, chassis, engine, tires, armor, weapons and equipment, all while balancing out limited space, weight and engine power to push everything forward. It was great, but it was a solid half-hour (more or less depending on your experience) to make a good build… If it helps you get a feel, think of the time investment of rolling up a new pen-and-paper character or, say, building a new Magic deck.
Incorporating mechanics for hardcore things like weight and spaces wasn’t impossible to pull off, but things like switching out weapons or changing gear can feel like something of a chore… I felt I could do better. For years and years now I toyed with the idea of applying a Diablo-style inventory grid, perhaps combined with the damage grid system from a number of FASA titles (I personally was a fan of the Renegade Legion series). The idea had some promise, in that players had to find space on their vehicle for various weapons, and make tradeoffs to clear space for special equipment, huge engines, or cargo. In addition, damage could be allocated square by square, penetrating into the car and damaging components as it reached them.
Being a top-down designer, my preferred way to hash out problems like this is to mock up the interface, move parts around, and visualize how it will feel for the player. As I played with the parts I started to realize that applying “damage templates”, is really a kind of magic made for pencils and templates and the tension of rolling locations and hoping the template doesn’t include your driver or engine. In a digital product where you don’t color in the squares yourself, it threatens to descend a bit into indecipherable noise. In addition, when rearranging a car into different configurations, the spatial rules of vehicles started to clash with the system… often the only extra room for a driver or engine was in the back corner or something. It just didn’t feel like a vehicle the way I wanted. Finally, I really wanted to incentivize the player to socket in new equipment as it is encountered, acquire new cars and choose various ones to meet the specialties for specific missions. Ideally buying a new car gets you more than just a new set of numerical stats and grid layout. “Vehicle loadout Tetris” still fascinates me and I’d love to try a PnP version of it or implement it into a arena-based game, but I’m steering away from it for this particular project. (See what I did there, wakka wakka).
Sooooooo in the end I went back to something a little more akin to decking out gear in an RPG, but there are some nuances that I believe will feel fresh when applied to vehicle loadouts. When decking out a vehicle, the starting point is always the Chassis. This is the body that everything else is built upon… The player can acquire them at car dealerships, receive them as mission bounty, or salvage them in the wilds as loot. Each chassis has some base stats that any equipment will modify, such as handling, armor, and fuel capacity. It also has some built-in equipment as well as slots that can be customized… Each vehicle body ultimately sports a fairly unique configuration.
Some chassis can sport large engines, but have limited handling. Some can hold huge amounts of armor, but can only mount a large tank weapon in the front. Some might have a turret mount, but the armor cannot be upgraded. Some have a slower engine that cannot be replaced, but can haul an amazing amount of cargo.
Chassis and equipment can be found with mods that add additional bonuses and abilities that make finding loot interesting. Weapons can be placed on any side of most vehicles, but heavy weapons need special mounts to be used, and turret slots are fairly rare. Ram Plates can have explosive charges or sharpened edges for added effects. Engines define a vehicle’s top speed, but it can also have acceleration benefits or a larger fuel capacity. Tires can improve handling, but they can also resist damage from spikes or add to stealth properties. An Armor Frame can boost a car’s armor, make it fireproof or laser-reflective, or even add mounted blades to slash on-foot enemies when driving adjacent to them.
Cargo Capacity is one of the most important reasons for players to change up their rides, as each chassis has a different number of cargo slots. Most found equipment can be picked up without concern for weight or space (again, I didn’t want being out in the waste recovering gear to be a hassle), but cargo slots are used to hold major items for courier jobs like scientific gear, or priceless art, or passengers. Rather than always running at capacity, however, a smart Driver may leave an extra space available in their vehicle during a run. This way they are prepared in case they run into special salvage out in the wilds, or a civilian who needs transport to safety… for a hefty price, of course. And if you find a crate of priceless military tech as you pick your way through a wrecked convoy and have no room…? Well, you can always kick that sorry bastard to the side of the road to make space.
So all of this has to come together into a playable whole, of course. I’ve got a lot of the core systems and definitions together for dozens of pieces of gear, but the next step is to implement the garage interface where players can buy and sell equipment as well as reconfigure their loadouts. And there’s much more to do to make sure that decking out your car is as interesting as it possibly can be. It’ll be an interesting summer.
In case you’re new to Auto Fire, here’s an overview. If you are familiar with it, here’s a hint of what’s been happening over the past few months…
Auto Fire is a turn-based roguelike auto combat RPG set in the roads and cities of the shattered American west. Enhance your vehicle, take on missions and build your name in a world where the only way to thrive is to drive.
Auto Fire is a deep, randomly-generated experience that combines the free-roaming adventure of games like Autoduel and FTL with the turn-based precision driving of games like Roadwar 2000 and the original Car Wars tabletop game.
An important part of the game is the player’s relationship with his or her car, and the ability to mount bigger and better weapons and equipment.
I’ve been a game developer for 24 years, both as a programmer and a designer. In my past I have worked on titles like Heretic II, Jedi Outcast, X-Men Legends, and Dead Space 2 and 3. These days I do design exclusively for my day job, and I miss programming. I was also a big fan of the tabletop vehicle combat games of the 1980’s and want to create something worthy of that world.
I use Unity 5.6, Visual Studio, Adobe Photoshop. Blender and Perforce when I get desperate.
Over the past couple of months I’ve been reworking the weapons systems to allow for special attacks over time such as machinegun bursts and oil slicks. An equipment system is in place that allows for secondary abilities to be mounted on the car such as radar sweeps and targeting computers. These systems are coming on line as well as a new inventory system.
A city map can now generate complex environments with special boss arenas and repair stations. The starting enclave has now been enhanced with new assets. New music, vehicles and effects have worked their way into the build as well.
I should own up to not finishing my 7-Day Roguelike challenge this year… it was tough to admit defeat after two fairly successful years in a row. I had started up the Jam with plans to take last year’s 7DRL code and work in a campaign and convoy mechanics, as a way to prove out some things that I’d been considering for Auto Fire. However, I found it nothing but discouraging to work on such old decrepit code, trying to make something for a game that was so much farther along.
In the end it just made me want to push towards realizing those ideas in the current codebase of Auto Fire instead. Sooooo… I’d been working on tying up loose ends and prepping the driving feel and visuals of Auto Fire. Take a quick look:
Next up are my plans for improving the inventory and rounding out the campaign into a compelling loop. It should provide some much-needed depth, which will make me more happy to share my work more widely once it’s in. Wish me luck!
This is my third 7DRL, and this year I’m hoping to kill two birds with one stone by exploring some alternate gameplay concepts I first explored in last year’s entry, Auto Fire. Auto Fire introduced car combat and exploration of a (poorly-rendered) cityscape and in the ensuing year has been extended to 3D, with richer generation, an overworld countryside, and a variety of superior UI and tools. None of which I’m going to use this week, see below.
This year, with Westbound and Down, I want to explore some of the “Convoy” style aspirations that I have yet to put into Auto Fire… Traveling from town to town and taking on cargo missions between outpost cities in a post-apocalyptic western U.S. Instead of exploration combat, the player must drive “blocker” for a convoy of trucks that is continually harassed by bandits and other road hazards. Upgrade your car and convoy vehicles, hire drivers, maintain your stock of ammo and fuel, and take on loads with higher risks for greater rewards.
The tough part of this year is that even though I’ve progressed quite a bit with Auto Fire’s codebase over the last year… in the spirit of making this a fresh 7-day effort, I’m working from the code from 2016’s 7DRL and seeing what I can construct within those confines. I hope to create an alternate movement model (forced directional movement, with most of the maneuvering involving lane-changes and acceleration/deceleration), a regional highway map, a cargo quest structure, some interfaces for cargo and hireling loadout, and hopefully some FTL-style dialogue encounters which could lead to bonus salvage or ambush. That’s a fair amount of stuff, but I’m hoping I’ve got enough to build from… and if I have to hack up my code a bit to try something, that’s okay, I can take any successes and work them into Auto Fire later, hopefully the “right way”. 🙂
In the past few days I’ve managed to add a whole bunch of loops to the city generation. This was achieved by adding optional exits to the blocks that I lay down… These are invisible overlays that, if a road tries to enter a block that doesn’t have an entrance on that side, can be stamped down over the existing block to let it link back. It helps a lot with the four-lane highways in particular, which would act like a barrier that didn’t integrate into the rest of the street maze if I didn’t allow it to reconnect.
More loops are important because driving and having to turn around is fairly bad… the fewer dead ends the better.
Once the map is complete, I put down more obstacles and overgrowth. Then finally I take some Perlin noise to the map and add destroyed swaths, both rubble and driveable stuff, just to add interest.
I think I can move beyond generation for the time being. Now it’s time to get fog of war back in so that the map feels more mysterious and ready to explore. Then I’ll lay out a boss battle fortress… woo!
I’ve made more progress in sealing up road connections, adding more variety and, most of all, creating 4-lane roads! I’ve still got to work on seeding out the highway before the map is built, so we have a big thoroughfare in there. Pretty soon I should be far enough to start getting Fog of War back in (which was ditched when I made the move from 2D to 3D back in May).
Also, Unity has had some nice sales lately and I stumbled onto this, which I jumped on. At first glance the pack seems to be selling a bunch of muzzle flash VFX and so on, but it also includes this sweet modular turret system which includes a bunch of different weapons that can be separated from their turret bases. How cool is that?
I was starting to make plans towards learning some basic 3D modeling so that I could make weapons like this… typically they are attached to the side of a vehicle or something.
In my case I want the player to be able to see the weapons in their inventory, and then place them out on a grid. So, while I will still need to find or create some of the more unusual models (what does a smoke screen sprayer look like?), I can get pretty far with these guys.