Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
Tags
(+1)

I think a system where you have either timed waves or waves based on enemy numbers would work, then when a wave is finished give the player a choice between 2 or 3 upgrades, upgrades could have certain strengths against some enemies, and after that gradually increase the difficulty of each wave. this is the first solution that comes to my mind, implement your unique twists as you see fit :)