Its worth pointing out that a new ModelDef with a new Driver class is only required when you want to actually change behavior at the driver level. For example, if you define a ModelDef {MySimulation, AMyPawn_Base} you can still use this ModelDef with both AMyPawn_Player, AMyPawn_AI. You would only need to create a ModelDef {MySimulation, AMyPawn_Player} if your player class wanted to customize Driver calls for example. (And even then: making the Driver functions virtual on AMyPawn_Base would be enough, at the cost of virtual function calls).