Category Archives: Game Design

Auto Fire Update v0.5.01

I had a bit of a weird week because I was coming off the RoguelikeCel, but after the feedback I got I knew just what to focus on for this new update.

Get Auto Fire v0.5.01 on Itch.io

Enemy Cars

  • Enemy cars can shoot again!
    • Yeah sooooo I recently added some infrastructure so that player vehicles can have unique loadouts that are independent of the model of car itself.  …annnnd while I got it all working for player vehicles, I broke the ability of enemy cars to have their own weapon loadouts too.  So they didn’t actually have any weapons mounted. 😛  Fixed!

Health Bar

  • The existing health post attached to vehicles in the world was straight up and down, and hence blocking the view of important info such as the state of the front weapon, or your speed when reversing.  The style of the health bar is now adjusted to be a bit less disruptive.

Speed UI

  • The speed indicator was pretty rough, hard to see, and clunky to look at.  A few things were done to improve this:
    • Smoothed out the speed indicator angle so it rotates more gracefully.
    • Improved the speed chevrons (both the green and red) to be more visible.
    • Added grip indicator for the player on top of the speed indicator, for the player car only.
    • Speed arrows and grip indicator grow in a more visually pleasing way.

Skidding functionality

  • So the previous model of vehicle skidding either gave you complete control or zero control.  It never felt good since people’s instinct is to push against a skid in various ways to try to influence it.
  • I wanted skidding to be fun and also kind of do what you expect.  So, it got a heavy overhaul:
    • The speed indicator now has a display of “hazard levels” beyond the speed itself.  A broken chevron means that you are skidding more out of control.
    • The “hazard skid” levels supplement the standard “grip down to zero with a red speed indicator” style of skidding.
    • If you have a hazard skid, you can turn but can’t influence your movement.
    • If you are skidding but do not have any hazard skid levels, you can influence your movement by 45 degrees by accelerating to the side.  Thus a skidding vehicle can still trace wider arcs.
    • You can accelerate or decelerate your skid by pushing towards or away from the direction of skid.
    • Skidding and grip now recharges more reliably based on whether you are facing in the direction of the skid.

So that’s it for now.  I’m adding a little more info on the Itch page about the systems that Auto Fire (in its current state) will support for now.  Someone asked for a 32-bit version, although I’m not sure I’d recommend older machines until I slim down some of my meshes.  In the future I’ll put more work into optimization and alternate OS’es like Linux.

Roguelike Celebration 2018

This past weekend I attended the Roguelike Celebration, which I had heard was more of a fan gathering as compared to the developer-focused IRDC…  Still, it’s a pretty cheap flight down to SF so I decided to attend based on the recommendation of friends.  We thought it would be a good place to show off Auto Fire and gather good feedback from people that are dedicated to the genre.

What I wasn’t prepared for was that it was the single best developer’s conference I’ve ever attended, whether that was the focus or not.  Informative, entertaining, comfortable, stylish, professional… It was filled with some legendary creators and you’d be hard pressed to find even a shred of ego anywhere. Nothing but mutual respect and support, wall to wall.

These people were accessible and open.  They were humble and eager to learn themselves.  They shared openly.  Everyone was positive, whether we were discussing a text-based passion project with the classic @ for the player, or a high-falutin’ mass-market-friendly game using roguelike principles.  (Which is good, because I’m aiming slightly for the latter, although I want to stop short of making a “Roguelite”).

There was talk after talk after talk, and most of the presentations were pretty relevant to general game creation beyond Roguelikes.  In particular, Roguelike developers are intensely focused on two things…

The first is (of course) procedural generation.  This includes not just map generation, but encounter/trap creation, procedural storytelling, god/pantheon/myth/food/whatever generation, and so on.  What started as a passion for building noodly dungeon spaces has turned into a community dedicated to crafting entire universes through intensely clever processes.

The second is creating a flexible game architecture that allows for nearly infinite rule expansion.  A trademark of Roguelikes is that the creators just add on feature after feature for years and years, which lead to so many interconnected systems that have to elegantly support (for example) the player getting polymorphed into some new form that has extra arms, which allows you to wield more weapons, or being able to animate any world object including bookcases and walls, then charming them to becoming your faithful pets.

The approach for solving this issue mostly shakes out to a couple core philosophies, but the humility, willingness to learn, and eagerness to share was pretty amazing from these creators…  young or old, aspiring or legendary.

You can find the videos posted here.  Check ’em out.

At the end of the first day, they set us up in GitHub’s phenomenal common area with drinks and food and let whomever set up whatever they were working on and showing it off.  I had a potato-level laptop that barely ran Auto Fire at 2 FPS, but a fantastic soul named Jaxon (whose last name I unfortunately never discovered) was amazingly cool enough to let me use his super-baller laptop for the night.  Jim spectacularly scrounged up a giant TV and we were able to show it at around 100 fps x 55 inches.

It was a blast and tremendously inspiring to he feedback was awesome.  I got some really good comments on the game and came back with a big list of what sorts of things I wanted to take care of.

I am working on the skid model most of all. I just showed it at the Roguelike Celebration conference and got a lot of good feedback. I want players to be keenly aware of how close they are to skidding out, and to be able to better influence their skids once the tires break loose. I think a combination of feedback and control tweaks will help that.

I am eager to push into more content so that I get more of a game loop, but UI and feedback will be visited up front.  I want to get another update out before I head to Wisconsin next week.

Brass Tactics Postmortem Complete

Brass Tactics was a really invigorating project to work on and I felt that we as a company (and I personally) learned a tremendous amount about VR in general as well as general player interaction and behavior.  Over the past several months I’ve brought the key takeaways and posted them on the Hidden Path website.

Since them I’ve cleaned them up as a series of blog/articles on Gamasutra.  I also will be giving a talk at the XRDC conference at the end of the month talking about some of our particular solutions in more detail.

Part 1:  Designing the map and player navigation

Learn about our experiments and pursuit for the most physical environment in this Gamasutra article.

The accompanying video can be seen here:

Part 2:  Designing the command interface

Learn about how we started with some traditional control models and eventually created something that felt closer to dancing in this  Gamasutra article.

The accompanying video can be seen here:

Part 3:  Designing the economy and additional interactions

Learn about some of the general interaction experiments we tried, and why we did or did not pursue them in the final game in this Gamasutra article.

The accompanying video can be seen here:

After my talk at XRDC I will probably be pestering y’all less on Brass Tactics.  I do still make the occasional update but at home my focus in almost entirely on Auto Fire.  It’s been fun!

Scooping the Loot

One bit of feedback I got when showing the game to a friend recently was that it was fun to drive, but picking up loot was beyond terrible.  That’s because you have to manage traction, speed and direction even when you’re just trying to hoover up whatever you found in a weapons cache you just blew up.  It’s just a whole bunch of stunt driving to scoop of some stuff that might only be worth a few bucks.

“Got it covered,” I boasted…  I’d already planned to add in a “radar pulse” that would do the triple duty of revealing hidden things on the field, “painting” targets for improved accuracy, and acquiring items in a small radius around the player’s car.  Super-convenient when you are in between fights, but when you’re in the thick of it you do have to deal with its cooldown.  There’s also the precious action that you have to use to activate it, rather than using it to shoot or turn.

Feeling smug about my clever solution, I recalled how long ago I decided on my solution.  It was………..  over a…. year ago.  For something like 15 months I’d been picking up loot in the worst way possible.  Errr… awesome.   Guess I should get that damn thing in.

It took an embarrassingly short amount of time given the sheer weight of procrastination behind it.

Deluge of Definitions

Some days you take pleasure in the smallest of victories.

More and more of my time is spent messing with data rather than code.  A procedurally-generated game like Auto Fire has a lot of data to shuffle around, defining a nearly endless list of things.  These titles generally rely on complex rules to assemble what might be one-off creations in other games.  These rules are for things as varied as:

  • Map sectors, layout generation data, name generation data
  • Map Locations, loot tables, shops
  • Tiles, obstacles, decals
  • Enemies, squads, encounters
  • Cars, chassis types
  • Tires, engines, armor upgrades
  • Weapons, equipment, ram plates
  • Abilities, projectiles
  • etc etc

Luckily I was able to use a bit of code given me by a good friend as a framework for defining these.  Since I hooked the system in, the definitions have spread across 15 directories and 70 files, and that’s with not a lot of content defined as of yet.  By comparison, Dungeonmans has nearly 600 data files just for content definitions (nothing to do with actual art or audio content), plus god knows how many other little files squirreled away.

Creating the content itself is daunting, but nearly as tough is managing all this.  It can be hard to organize and keep straight.  A small victory this morning was when I improved comment support in my definitions, but more importantly I added inheritance.  This allows me to define a base definition and then overlay changes with another definition.   It cuts down on a lot of extra text and correction as I add new features to the game, and makes creating a whole line of related objects a quadrillion times easier.

For example, a vehicle’s chassis defines a lot of the weapons and equipment you can mount on it, as well as the model that is used for your vehicle on the battlefield.  You will ultimately be able to buy a new vehicle at a car dealer, and pick out the chassis that will serve your needs the best.

The Stallion is a line of muscle cars, each of which is beefier and sports a larger engine than the last.  With inheritance I can create a set of upgrades much more easily:

defThing chassis_stallion_L1
{
class adChassisData

prefab Vehicles/Stallion_body_L1

name "Econo Stallion"
manufacturer GrandMotors
logo UI/Logos/logo_tri
chassistype Coupe

level 1
value 2000

defense_base 0
health_base 100
handling_base 100
armor_base "100 100 100 100"
cargo_slots 2

Engine "None default engine_rank_1"
Tires "None default tires_base"
Armor "None default armor_base"
WeaponRam "None default wpn_ram_base"
WeaponFront Standard
WeaponRight Standard
WeaponBack Standard
WeaponLeft Standard
WeaponTurret None
Support1 Standard
Support2 Standard

flavor "The doors rattle a bit if you slam them, but you'll feel like a thousand bucks behind the wheel of any Stallion."
}

defThing chassis_stallion_L2
{
inherit chassis_stallion_L1

prefab Vehicles/Stallion_body_L2
name "Grand Stallion"
level 2
value 5000
cargo_slots 3

Engine "None default engine_rank_2"
Support3 Standard

flavor "Listen to the throaty purr of the Thundercat engine. Revel at the enhanced electronics package, and even stash more cargo! Welcome to the Grand Stallion."
}

It only took like 20 minutes to implement, I can’t believe I put it off so long. I guess my data was so in flux that I haven’t been creating a lot of content, just a lot of systems… Now I gotta go clean up my data.

Auto Fire Status Update – July 2018

Over the July 4 holiday I managed to get a good, solid, 5-day weekend, which in turn gave me great blocks of time to work on Auto Fire.  It felt great to get some really nagging things out of the way.  There’s a bunch of stuff here that is new since last time I blogged about it:

  • Site System.  I created a new structure for holding what I call “sites”, which is any point of interest on the map.  This can include cities found in the overworld, highway entrances and exits, garages, and even regular landmarks and points of interest.  The sites are what I use to guide road plotting, so roads can connect exits, cities, garages and even just weird old non-functional shacks out in the desert, which I constructed from groups of tiles.  It gave me a system for sprinkling them into a map from a table, which adds more life to most maps.
  • Encounter System.  The encounter system is something that I’ve wanted to do for a while, to allow the player to deal with random stuff that they meet along the way.  Call it FTL-style, although I associate the concept with pen and paper games as well as wayyyy back to ancient games like Odyssey on the Apple II.  This allows players to consider some simple risk-reward propositions, or to choose between acts worthy of fame or notoriety.

  • Stylized Visual Effects.  I took some of the realistic visual effects for weaponry, explosions and smoke and returned them to the stylized versions I had used a year ago.  I found that these stylized VFX had extra punch and grabbed the player’s attention among a lot of noise, but more importantly, fit the oddball scale of the world in Auto Fire.  With buildings and cars and chests all coming in at unrealistic sizes when compared to each other, I found that realistic visuals just made that mismatch even more pronounced.  Somehow having unrealistic smoke and fire just helped with the suspension of disbelief, and I think it can look just as compelling.
  • Western Music.  I took a break from the (really fantastic) western/post-apocalyptic soundtrack by Michael La Manna to try something different, namely an Ennio Morricone-flavored Western soundtrack I found.  I really do love La Manna’s cool-as-ice Badlands music, but those stingers and jaw harps just got me in the feels.  I’ll be playing around with various configurations as time goes on, not sure which way to go.
  • Walled Outpost Generator.  One of the biggest things I got done over the holiday was to finally prepare enough ramshackle walls, dirt roads, windmills and metal-roofed buildings to create a special generator for badlands outposts.  This is a heightmapped terrain map that sets aside a center section as the “core”, where buildings and certain visual points of interest will lie.  Around the perimeter is a wall made of scrap, cars, wood, and anything else…  I had to make a version of my patch generator that would stretch and rotate this wall in any direction with repeating motifs.  Dirt roads are then stretched to the various sites around the map. I’m really happy with how it came out.

  • Smoother Driving Feel.  One thing I did fix in recent months came from feedback I got from right after the 7DRL that spawned Auto Fire…  For some players the movement felt stuttery and halting.  Part of that is unavoidable with a turn-based game, but some of it was fixable.  There is no longer a single-frame stop between various units executing their turn, and if the player cues up multiple moves, it executes smoothly if possible.  The movement from square to square in slightly slower than it was as well, creating an subtle improvement that I feel when running the new build versus an old one.
  • Wall Deflection.  This last one feels intangible as well, but I implemented it because the more I played, the more I felt cheated that the mechanic did not exist.  If the player is heading diagonally towards a wall at high speed, he or she can get deflected off the wall and into a new movement path parallel to the wall.  This is a fairly common occurrence in the city maps in particular, and even lets players use it to their advantage if they wanted to keep shooting rather than steer (this is an option in Auto Fire!)

Okay, so there’s a lot more work to do.  I feel that I’ve hit some fine polish points, but I mainly need to assemble content together into something more playable, to have more of a reason and tension in the overworld.  All that will hopefully come next.

The Road to Brass Tactics

I’ve been quiet since the holidays, but it certainly isn’t for lack of activity.  For my day job, February marked the release of Brass Tactics, a real time strategy game reinvented for VR headsets.  The creation of Brass was really a fascinating adventure, one of the most interesting and invigorating creative challenges I’ve had in a lot of years.

Oculus gave us pretty much carte blanche to recreate a real-time strategy game that took advantage of the Rift platform as well as the Touch controllers.  This allowed us to kick off the process with a delightful freedom on how to make the controls of an RTS feel tactile and engaging.  We started with crazy-woop-woop-nuts ideas, but honed the game down to something that felt familiar yet fresh.

I’ve written a couple of blogs about this process on the Hidden Path website:  The first blog post talks about our discovery of how we wanted to represent the world and how the player might interact with it.  We started from a very wide set of possibilities that explored how to show the most information to the player with the most comfort.  What we ended up with was quite clean, and felt comfortable for most people.  Here’s the first ugly prototype reel.

The second blog was about how the player interacts with their troops, both selecting them and issuing orders.  This seems simple but we went through a long process to figure it out.  What we ended up with feels familiar, like using a mouse, but definitely embraces the physical nature of Touch.  Directing your troops becomes like being a symphony director calling out orders fluidly, a dance that makes war happen.  It was an achievement that we’re very proud of.  Even more ugly here!

I still have one more prototype video that I need to accompany with a blog post.  Luckily the pressure’s been off lately so I’ve been able to get back to working on Auto Fire.  I’ll try to update y’all with where that’s been going shortly.

Tricking Your Ride

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.