I am now freed up to work on the code for Project 7 in my own sweet time, without having it compete with my everlasting struggle with Nethack. For perhaps the fifth time, I realised when playing P7 (Playing? Playtesting? Not sure which) that playing the same damn test level 3*10^8 times is going to get boring, regardless of the quality of the game mechanics. So I made a new level and was amazed at how much the experience improved.
This happens a lot to me because I put game mechanics first and foremost. The art of level design is something which I do not have much experience. My approach is to divide the level into 'sections', areas containing enemies and terrain. With linear levels, the defining feature is that areas are connected sequentially. With nonlinear levels they are laid out in a grid or similar two-dimensional structure.
The two types require different sections, because of the ways you can approach the section. A linear section can make fantastic use of set-pieces to create interesting tactics, whereas a non-linear section can be approached from multiple directions for different results.
A key component of all levels is breathing room. In the past many of my test levels have been concentrated with enemies all the way through. If you moved the wrong way you'd end up in a desperate fight from four sides. I've solved this through the use of destructible blocks which will obscure vision from the enemy (if only temporarily). In addition to this, areas between sections will be devoid of enemies, perhaps containing healthkits and save-points. The very use of the term 'section' requires that the level be partitioned between them.
As is frustratingly predictable in these situations, my drive to program has been intensified. Currently I am working on the code dealing with the different faction types the player will encounter. Their visuals need to be altered from the base enemy, and if attacked they need to become wary, then hostile.
Factions in P7 each have their own influence meter when dealing with the player. When the player does something a little bit naughty or psychotic in their line of sight, influence goes down. We've decided that if you're attacking someone, the attack needs to be reported by a comrade, ie a witness, that can see the action. If this happens your influence will go down, but if you can isolate someone, you can shoot them and no one will be the wiser.
There are certain enemies called Sentries that will have special properties here, but we haven't fully fleshed them out.