Programming with Game Engines