Commentary for ATW1
This map was started as a techdemo to try out a big well-lit outdoor area with 3D skyboxes and  with reflective water in the DOOM 3 engine. The map did end up severely CPU-bound, however, mostly because of the geometry throughput and batch counts.

The design of the map started with a first sketch of the canal and a gameplay flow overview. The choice of contemporary, rundown city look was inspired by both Half-Life 2 and a desire to do a custom DOOM 3 map that didn’t use the extensive base/metal textures created by id Software.

The gameplay of the map is pretty straightforward with two main avenues of passage between both ends of the map. The canal provides a different (but sometimes frustrating) gameplay hazard that tends to make players watch where they step. Having said that, gameplay was at best an afterthought to the prime objective of this map.

Performance-wise, this map turned out very poor which is not surprising because I set out to make a techdemo, however, I quickly hit against DOOM 3’s compiler limits so I had to use very unorthodox visportal placing and group pieces of geometry into func_statics to get the map to even compile.

Another problem I faced was that I couldn’t put any visportal in contact with the water surface which means the big water area is all batched and culled together.

By creating many func_static entities where there was no inherent need caused two problems: first it worsened the batching performance and secondly these triangles wouldn’t be able to take advantage of DOOM 3’s static shadow pre-calc optimisation but it was inevitable if I wanted to get the map to compile.

So, the bottle-neck is either in the batching throughput or CPU-based culling (it’s hard to know exactly because DOOM 3 has limited profiling capabilities) because turning off the mirror effect of the water instantly doubles framerates in the worst case scenario which follows, because we’re nearly halving the triangles rendered.