You can create a bunch of maps and connect them using campaign.ini to create a campaign (check the Renegade one).
Then you can play the campaign and your maps should load after eachother how you defined it (you can even create bink videos between the missions).
Just have to use a lot of existing scripts to create objectives, cinematics, play sounds, spawn enemies, and trigger mission complete when you prefer to. This is not very much different from creating multiplayer maps, aside from objectives and mission complete.
(And yes you need a modelled terrain file, whether existing or complet