Faction and weight class system for characters

you could make each faction and weight a separate class, which inherit from a base class, but that isn’t easy to balance or playtest. if you decide to move an ability from one character class to another, you would need to copy over the code and recompile, possibly adding bugs, but if everything is decided from a spreadsheet, you can just update the spreadsheet and start playing again, without any programming or recompiling, which is great if you have game designers who can’t code, but are used to working with spread sheets.


I would make a single character class that can do everything, and give that character a faction Name. then i would make a structure that holds all the variables a faction needs to be different from other factions, and make a datatable out of that structure, where you keep the data for all the different factions.

TeamID, Weight, CharacterMesh, RunSpeed, ReloadSpeed, Health, Ammo, FireDefense, IceDefense, PoisonDefense, bCanRun, bCanJump, bCanGrenade, bCanSniper, bCanWallJump, bCanHasMagic, etc…

as far as weight classes go, you could make each weight class of each faction a separate faction, giving you maximum control over the way weight affects each faction. so CrimsonLight, CrimsonMedium, and CrimsonHeavy could all be different factions, but they can use the same TeamID for friendly fire purposes.

then, making a new faction is as easy as adding 3 new rows to a spread sheet, and filling in the data.

when you spawn a character, you set their Faction name, and use that to read from the data table and initialize their variables. then you check those variables in your input handling state machine, to decide if they are allowed to do things like double jump or sprint or use magic.


using a single character class, initialized by a data table entry, gives you the ultimate mix and match modularity, where your non-technical game designers can create new factions without looking at code, and balance the game without any chance of adding bugs. they just fill out a form and pick from a buffet of choices, to find what is most fun and balanced.