Tag Archives: Dungeonmans

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.

Dungeonmans has shipped!

Hey, did I mention that my buddy Jim Shepard has finally finished his epic, Dungeonmans, and it is fully purchasable on Steam?

He’s done such an amazing job…  I spent a few weeks helping out a little on traps when I was awaiting a move to San Francisco back in 2010, and it was the very thing that made me realize how much I had missed game coding.  I can’t lay any claim at all to the final product because probably 1% of the code I wrote back then made it into the final product, but it was a meaningful moment to me nonetheless.

Back in November, Jim and his long-distance contributors/friends decided to gather in Seattle for a week-long push to get Dungeonmans that much closer to the finish line.  I put in a day or two (as a designer this time) and helped create a couple of “master dungeons”, and it was amazing to see how much the game had improved over time.

dungeonmans old-new
From the early days…                                                       …to release!

 

The coolest part was having an honest-to-god game studio, Adventurepro, in my basement for a week!  These are amazing guys, each with years and years of grizzled veteranmancy (a word I just crafted now) behind them…  They deserve every new success.

Dungeonmans crew

Side Projects

I’ve had to take a break on the article-writing to immerse myself in my work.  Theory is fun, speccing can be rewarding, and hooking up is good, but sometimes I’ve found myself missing real hands-on gameplay programming.

A friend of mine has been creating a Rogue-alike as a side-project labor of love for the past few years, and recently it went from sporadic updates to a full-on development flurry.  This of course made me very jealous, as tile-based engines allow for amazing freedom in creation…  There are few limits and implentation is a breeze.  It’s all about the gameplay.

The game is Dungeonmans, and he releases updates openly as an in-progress effort…  It obviously revels in its old-school presentation…  although the graphics are getting better by the day.   He’s created an overworld and NPC quest system as well as invested a great sense of humor within, so in some ways it outpaces similar indie dungeon-crawlers already.  It even can gather play stats that get collected at the home base for analysis and high scores.

Recently he made the codebase available to a few of us, and we’ve all been diving in and having a blast.  I’ve been working on a trap system recently, and I gotta say it’s the most fun I’ve had with development since Heretic II.  It’s been a while since I’ve worked on something past midnight without even noticing.

It’s not Diablo III, but fun doesn’t have to be developed in 3D by hundreds of people…   Check it out.