right now, im going to say 'the work of the devil' (as im having a real ball-ache getting them to work on kungfu).
To make the map efficient to render by the game engine, you need the game to properly recognise what to draw and what not to - depending on if you can see it or not. If something is out of your line of sight, there isn't much point in the game drawing it as it just uses up resources for no reason. As such, it calculates what can be seen and what should be drawn from your point of view. Quake 2 only takes into account solid walls when it does these calculations, so when you make func_door entities they are effectively transparent to the bit of the program that makes the line-of-sight decisions. An area portal (func_areaportal entity) is a brush that should be placed inside the func_door entity to seal up the doorframe completely in order to make the engine recognise that when the door is shut, you can't see whats behind it so it shouldn't draw all the stuff thats behind it. It's triggered by the door, so imagine that it is like a solid block inside the door that immediately dissapears when the door is triggered to open.
The upshot of all this is that when the doors are closed, the game only renders what it can really see, making the task of drawing the room a lot simpler and more efficient.
further info on to make them:
func_areaportal info. some more stuff. hope that helps.
- Rick