Nice. Thanks for that. I planned ahead for this so this code doesn't have to be so horrible. The Player object corresponding to the human is passed all the way up through createGame to the UI and gets stored in Game.controller. Also, barbarian units can still be grabbed by the unit auto-selector, the only reason it skips them right now is because they're fortified. IMO the best way to solve this is to move unit auto-selection out of the engine into the UI layer. The alternative is to pass the controlling player to the engine so it can cycle appropriately but ideally the engine shouldn't know which players are local vs remote or even human vs AI (though that might be impractical for implementing diplomacy).