Sauer has lots of great singleplayer maps, but there's really something missing from the singleplayer experience. Monsters take really long breaks in between shooting at you, and this happens even on the highest skill levels. But there's a fix to this:
In the file src/fpsgame/monster.cpp, go to line 202 and comment out this line:
if((!melee || dist<20) && !rnd(longrange ? (int)dist/12+1 : min((int)dist/12+1,6)) && enemy->state==CS_ALIVE) // get ready to fire
and replace it with this line:
if((!melee || dist<20) && enemy->state==CS_ALIVE) // get ready to fire..
Then compile and start a singleplayer match. You will find that the monsters are MUCH more challenging, and overall the singleplayer experience is much faster and more strategic. The Rhinos are a bit OP though, especially since some mappers tend to put groups of 10 rhinos in every corner, so you might also want to change line 23 from this:
{ GUN_CG, 18, 70, 2, 70, 100, 400, 2, 10, 50, S_PAINR, S_DEATHR, "a rhino", "monster/rhino", NULL},
to this:
{ GUN_SLIMEBALL, 18, 70, 2, 70, 100, 400, 2, 10, 50, S_PAINR, S_DEATHR, "a rhino", "monster/rhino", NULL},
Have fun fragging :)
(edit: HTML hates "<" signs and thinks they're code)