Over the past several months I’ve been working through some significant issues to get Auto Fire up to snuff… Good ol’ Jim talked me into going to the Roguelike Celebration 2018 in San Francisco this weekend so I could start showing my game to people more widely. Pretty exciting! Also pretty nerve-wracking given all the other stuff going on this summer.
Unfortunately there were a ton of things about my game that still drove me crazy… For example I wasn’t able to save the state of maps between visits… which meant that the overworld in particular would regenerate every time you left a location. I had to finally take the plunge and deal with that particular issue.
Man I hate two-years-ago me. I did some real hack jobs to get that 7DRL challenge done, and I guess I wasn’t done paying off that technical debt. 😛
Luckily I got all the proper stuff to function, save off map states and basically am ready for honest-to-god savegames (although I don’t do save/load just yet.) I’ve also made a whole bunch of quality-of-life improvements based on early player feedback:
The camera is now behind the vehicle at all times. This way the WASD weapon keys are always consistent and understandable, and you don’t have to envision tank controls. I had always suspected this would be a problem, but I think I was so used to camera-always-north that I didn’t have any trouble playing. The added benefit is that the game has a fairly unique look as compared to other Roguelikes now.
Improved feedback for speed. This is always a work in progress. The player needs to know when they are speeding or skidding. Putting the camera at a shallow angle and adding speed lines is my current strategy. I also shake the camera a bit, but that may just be too much. We will see where things go as feedback comes in.
Recolored environment. A good friend did a paintover of a screenshot of my city environment a while back and it helped me gravitate towards dark ground surfaces, light obstructions, and bright colored gameplay elements. This wasn’t the case with deserts (because, y’know, desert), but I’ve been darkening things quite a bit and trying to get the colors to pop. Still a work in progress.
Revised balance and loot drops. This isn’t really finely balanced, but I did make the early-play experience quite a bit easier so that people that wanted to try out the build could get a good idea of what the game was about quickly. I also brought down the size of the average “loot pinata” that existed when I was testing loot out. I really still need to do a huge push towards making content, maybe after the RogueCel.
Revised location names. More on that next article!
New garages in the overworld and desert outposts. I’m trying to make sure that the player has plenty of places to equip all the weapons and vehicle components I’m dropping. That includes in hostile areas. That will be a balancing act in the future.
UI improvements. Again from feedback, I flash the weapon when you try to use it but can’t, and flash the grip meter if you are skidding and try to accelerate.
Music and sound improvements. I got some new weapon sounds and hooked them up. The quality is steadily improving there. On the music front, I went back to Michael La Manna‘s excellent western apocalypse music… The quality is really high and fits the feel of the game really well.
My next step is to get the game out onto itch.io so that more people can play. That will be sooner than you think!
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.
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.
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
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:
name "Econo Stallion"
armor_base "100 100 100 100"
Engine "None default engine_rank_1"
Tires "None default tires_base"
Armor "None default armor_base"
WeaponRam "None default wpn_ram_base"
flavor "The doors rattle a bit if you slam them, but you'll feel like a thousand bucks behind the wheel of any Stallion."
name "Grand Stallion"
Engine "None default engine_rank_2"
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.
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.
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.
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.
We have a New Year’s tradition among some local friends of playing the Talisman board game. This is no casual gathering, but an all-out annual quest for questing… with nearly every expansion the game becomes a behemoth that barely fits on the dining room table. The Monopoly-like board of the base set is extended in every direction with dungeons and towns. Tiny little special encounter and item decks are stacked everywhere… The main adventure deck, swole with expansion cards, is so massive that we break it into three piles so it won’t topple over.
There’s a delightful insanity to Talisman’s hodge-podge of fantasy themes, like Tolkien and Gygax thew up in a Milton-Bradley factory. Werewolves. Faeries. Dragons with swords for scales. It’s also completely unbalanced and random as hell. Did I say it’s the best game? It’s also the worst game! Every roll of a six-sider or draw of a card could result in a game-winning boon or a soul-crushing return to square one. And the behemoth keeps growing… people keep buying new expansions, so by now a game takes at least six hours… Hence the once a year tradition.
Jim, the owner of this pile of cardstock insanity, was looking for ways to make these evenings of hilarity even more memorable. How could we make Talisman even worse? The answer was clear: Pay to Win.
Pay to reroll a die! Pay to stop on a square! Escape a dungeon! Cheat death! We embraced the pain and proceeded on our long evening of questing.
The game was just as random as ever. People would gather massive arsenals of equipment, just to be turned into a toad and drop it all on the ground. Talismans (Talismen?) were gained both through mighty deeds and by randomly tripping over one. The dragon fight at the end to gain the Crown of Command was the usual madness, and as usual an unbeatable card combination helped seize the day.
I gotta admit though, all these little one-dollar kicks to the privates actually made Talisman a bit better. We could fix our random failings. Sure, sometimes we put a couple bucks in and got a worse result, but that was part of risk-reward. Around 2AM we staggered home, some 30 bucks filling the money jar, paying forward into the next game night. However, I’m not sure how we can top this next year: Loot boxes?