I added distance & volume-based sound culling, so non-looping sounds that are too far for the player to hear are still sent to the AI as stimulus, but not sent to the sdl_mixer to actually play.
I also added a per-level sound distance, that controls how quickly sound falls off on each level. Yesterday I put in a similar per-level occlusion distance to control occlusion calculations - I'm finding you really want to vary inside vs outside levels.
I also cleaned up the activation and object pick-up code. Previously, you had to hit Tab to get into 'object mode' and the engine would show the names of pick-upable items, or nearby item containers with stuff in them. Only the closest one was highlighted for use.
There was also no indication that space bar opened doors or used switches or other activatable items.
Today I consolidated both of these into a simpler system. Now the engine determines the closest activatable entity, pick-upable item or full container that's close enough to actually interact with, and shows it as a text menu. If you hit space, you perform the activation action 'Open Door', etc., or grab the highlighted item, and no more hitting Tab first. I actually doesn't use just closest, but also the camera's pointing direction so you can look at something nearby to select it instead of moving.
Much, much cleaner and better.
Here is a shot of the fixed ambient occlusion, doing only 25 raycasts per texel. The bright white area on the left is due to a thin hole between the wall & floor.
Here is a similar viewpoint with the ambient occlusion combined with a constant ambient term and a little bump mapping.