Skip to main content
2 of 3
added 52 characters in body
Engineer
  • 30.3k
  • 4
  • 75
  • 123

Have a look into the Builder Pattern. It wraps up all that complex construction for you.

Builders are best driven by some kind of external textual or binary map data file, from which are read in various shorthand specs for each entity.

So in other words with this...

class SoldierBuilder //singleton
{
     function build()
     {
       //encapsulates a bunch of object creations, some of which create their own subobjects, etc. in order to build this whole soldier
     }
}

you would do something like

for each (record in soldierToBeBuiltRecords) //comes from a data file
   builder.build(record)

Bear in mind that for instance you might have two different builders, a SoldierBuilder and a WeaponBuilder. Then the SoldierBuilder might utilise the WeaponBuilder within it's own construction code, in order to build weapons for the soldiers as spec'ed in the soldier data, aside from using other parameters therein to construct the soldier itself.

You can use the same builder both at level setup and during runtime. And you can use it for predefined (data-specified) entities, or dynamic entities whose specs your game logic may decide at runtime.

Engineer
  • 30.3k
  • 4
  • 75
  • 123