Unlike "Wolfenstein", which had flat levels with walls at right angles, the "Doom" engine allows for walls and floors at any angle or height, though two traversable areas cannot be on top of each other. The lighting system was based on adjusting the color palette of surfaces directly: rather than calculating how light traveled from light sources to surfaces using ray tracing, the game calculates the light level of a small area based on its distance from light sources. It then modifies the color palette of that section's surface textures to mimic how dark it would look. This same system is used to cause far away surfaces to look darker than close ones. Romero came up with new ways to use Carmack's lighting engine such as strobe lights. He programmed engine features such as switches and movable stairs and platforms. After Romero's complex level designs started to cause problems with the engine, Carmack began to use binary space partitioning to quickly select the reduced portion of a level that the player could see at a given time. Taylor programmed other features into the game, added cheat codes; some, such as , were based on ideas their fans had submitted online while eagerly awaiting the game.