Creating Large Areas
Tips on Creating Large Complex Areas
Intro
This is a (WIP) tutorial by Jdude to help beginner and intermediate mappers come to grasp with how to create large complex environments, specifically as cities. It will cover a variety of topics which are covered more in depth in other articles. There is no one way to go about creating a large complex city environment, but this may help and give some direction to those that are eager to do so:
In this tutorial we will cover:
1) Basic required knowledge of the Doom3 engine.
2) Intermediate Lighting techniques for performance and aesthetics
3) i) Visportals and planning your map
3) ii) Three techniques to help performance
4) Misc
Basic required knowledge of the Doom3 engine:
Note: This is very generalized but has most of the information one would need to understand Doom3's performance:
Before you begin there are a few things you will need to understand about the Doom3 engine to fully utilize the engine. The Doom3 engine relies on both graphical and processing power. Therefore the performance of a map will rely on both the graphics card and the processor of any given machine (as well as other factors such as RAM but for simplicity purposes we will ignore that and categorize it under processing power). When you understand which factors affect which components of a computer, you can work to maximize each specific asset. For example, if you have to much visual components, your graphics card may lag causing the entire game to lag, but this doesn't necessarily mean your processor is lagging. Therefore if you can balance the two you can get the best results.
The GPU(Graphics processing unit)
Generally speaking, the graphics card will be doing all the rendering of polygons in a map. Every brush you make, every model you insert will add polygons to your map. In addition, sprites and graphical affects such as fog and post processing effects (like overlays) affect this aspect of the engine. The Doom3 engine is a great polygon pusher however and one will have to have created a very complex area to experience slow-down due to polygons. Usually unnecessary patches are the cause of polygon related lagging. [See using patches effectively. (coming soon)] Sprites however may cause severe fps drop; the reason is unknown as Doom3 is not open source yet but sprite affects such as snow, rain, smoke ect. should be used sparingly especially in areas which the player will be close to the sprites because when the player gets close to a sprite, the engine will slow down. You may notice this if you place a puff of smoke or several torches near each other. From a distance you may get decent FPS (frames per second), but when you are very close to them you will experience slowdown.
The Processor
Your processor, generally speaking again, will be rendering the light and AI calculations. This means that every shadow you have will slow down your FPS. Lights which do not cast shadows also slow your FPS but not nearly as much as calculated shadows. For this reason it is important to understand how the Doom3 engine acts with shadows. A conception is that the Doom3 engine will slow down when you add additional lights. However that is not true. The performance you get in Doom3 in regards to lighting will be directly linked to how many shadows you have in each rendered scene. For instance: You could have 5 lights casting 5 shadows, it will render roughly the same as one light casting five shadows. This is important to keep in mind when placing lights. You don't want the engine rendering a bunch of shadows that the player will not even notice.
Intermediate Lighting Techniques for Performance and Aesthetics
For the above reasons it’s important to be creative in the placement of lights throughout your level. Certain objects and lights should have the "noshadow 1" parameter applied to them. This can be set in a light by selecting the light and pressing J then checking the "noshadow" box, or in the entity inspector toolbox. To optimize your map properly, you must first pick and choose which lights have the “noshadow 1” parameter. They must be properly placed or else they will appear strange to the player and take away from game play. This can be difficult due to how Doom3 renders lights. The “noshadow 1” option will cause the light to go through brushes. Below is an image that displays how the Doom3 engine renders lights:
Notice how with "noshadow 1" applied the light travels through the wall in the middle but with "nosahdow 0" meaning the light casts a shadow, it does not. Thus anything within the radius of your light with "noshadow 1" applied will be lighted as per your light settings.
With this in mind, you can pick and choose which lights should have "noshadow 1" applied to them. Sometimes a light which regularly casts shadows, set to not cast shadows, won't even be noticeable to the player. Below are two example pictures:
One would not regularly notice that the light on the left doesn't cast any shadows.
The lights with the red circles around them are the only lights which cast shadows. The rest are using "noshadow 1" on them. Note: The strange jagged lines in this picture are from using noclip.
In the above picture you may also notice that non of the lanterns are casting shadows. This is because on the model itself, the "noshadow 1" parameter is applied. This prevents the object from rendering a shadow. This can help drastically because the mapper can pick and choose which objects cast shadows, and the less shadows, the better the performance. Many times players will not even notice if an object is not casting a shadow, especially if it is on the edge of a light.
The above image also shows how no shadow lights can be used to illuminate windows. There will rarely be an exception to using "noshadow 1" on window illumination lights as the shadows will rarely ever be important.