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.