Small City,Terrible Framerate PLZ HELP
- metal_head
- Posts: 1244
- Joined: Sat Jan 05, 2008 8:31 pm
- Location: Bulgaria,Sofia
- Contact:
Small City,Terrible Framerate PLZ HELP
I got a ery small level.It's a city.The city is small,but the framerate is terrible.I read the topic about hint brushes,but they didn't help me.I've uploaded a picture of the city in the RFedit pro.See it and tell me what can be improved.
- Attachments
-
- city.JPG
- (126.77 KiB) Downloaded 65 times
Re: Small City,Terrible Framerate PLZ HELP
Some guidelines for optimizing performance:
1. Use a FarClipPlane, helps alot (It' in EnvironmentSetup). In a dungeon-like level (not outdoor), check for the longest corridor/biggest room. Then set your FarClipPlane to a value that is slightly over the lenght of the corridor. For outdoor levels, try out.
2. If you don't need light, you can disable it with Setting 'FullBright' in the FaceAttributes to true. Or you can make the lightmaps bigger with LightmapScale (also in the FaceAttributes). This alot helps too. In any case, set 'FullBright' for the big hollow cube.
3. Don't know if you've been doing this, but make all small objects 'Detail' brushes and NEVER make the big ones, like the buildings 'Detail' brushes. Also don't do this with the big hollow box around your level.
4. How big is the big hollow cube? It should not be ultra-big(>4000TexelX4000Texel). I think that lowers the framerate a bit. Always just make the big cube so big that you can fit in what you need.
5. For the final compile, use FullVis. This needs much longer, but makes sure that the BSP culls 100% of the unseen polys.
6. Look at the skydome script if you're using one. Sometimes it uses high polycounts for the sky, when you could go with much lower polycounts and it would still look good. Also disable the skydome terrain if possible. If you're unsure, post your skydome script here.
7. If possible, use 'Area'-Brushes for world models like doors and such. This causes the engine to ignore the secluded areas completely. Sometimes, non-transparent empty brushes are an option too.
8. DON'T use Mirrors in open places. I have warned you. If possible, use Area or non-transparent empty brushes to seclude the place where the mirror is. Mirrors double polycount.
9. Do not place two mirrors in the same room and in no case directly opposite from each other (or in an angle that is less than 90degrees). Placing them in the same room might work, but will make polycount 4 times as high as before. The engine puts a stop to the mirror recursion after one or two mirrors (don't know exactly anymore), so placing two mirrors in the same room might not look realistic.
10. Rain and Fog entities are frame-rate-killers.
11. Prefer actors (as SEPs) over detail brushes if you don't need detailed collision on the object. The smaller the actor is, the better (for clipping reasons). With SEPs you can also have nice stencil shadows, although that will lower the framerate again. SEPs are very good for ambience objects.
12. Use ClipBrushes instead of using the built-in StaticMesh collision for terrains. Some terrain generators can export both to a modelling format and to *.map. Export to both, then use the actor for the visuals and the imported *.map file for the collision (as 'Clip' brushes)
13. Do not use too many entities. The engine has to cycle through all entities, and each entity takes its time. Remember that.
14. Use TGAs to lower polycount for thinghs like ladders, fences, rounded doors, windows, trees. In short, everthing that has holes in it.
15. Make tree leaves out of 2 planes using TGAs. But you can not use stencil shadows on the trees then.
16. Outdoors and Indoors should be in different parts of the level. (Can also be done with Area brushes for the doors) Then when you go inside/outside, you must teleport the player.
Windows are a nice thing. But looking from inside to outside or vice-versa too much (like 30 houses with insides) kills performance. This is why you should seperate the indoors and outdoors.
At the moment i cannot think of more thinghs.
1. Use a FarClipPlane, helps alot (It' in EnvironmentSetup). In a dungeon-like level (not outdoor), check for the longest corridor/biggest room. Then set your FarClipPlane to a value that is slightly over the lenght of the corridor. For outdoor levels, try out.
2. If you don't need light, you can disable it with Setting 'FullBright' in the FaceAttributes to true. Or you can make the lightmaps bigger with LightmapScale (also in the FaceAttributes). This alot helps too. In any case, set 'FullBright' for the big hollow cube.
3. Don't know if you've been doing this, but make all small objects 'Detail' brushes and NEVER make the big ones, like the buildings 'Detail' brushes. Also don't do this with the big hollow box around your level.
4. How big is the big hollow cube? It should not be ultra-big(>4000TexelX4000Texel). I think that lowers the framerate a bit. Always just make the big cube so big that you can fit in what you need.
5. For the final compile, use FullVis. This needs much longer, but makes sure that the BSP culls 100% of the unseen polys.
6. Look at the skydome script if you're using one. Sometimes it uses high polycounts for the sky, when you could go with much lower polycounts and it would still look good. Also disable the skydome terrain if possible. If you're unsure, post your skydome script here.
7. If possible, use 'Area'-Brushes for world models like doors and such. This causes the engine to ignore the secluded areas completely. Sometimes, non-transparent empty brushes are an option too.
8. DON'T use Mirrors in open places. I have warned you. If possible, use Area or non-transparent empty brushes to seclude the place where the mirror is. Mirrors double polycount.
9. Do not place two mirrors in the same room and in no case directly opposite from each other (or in an angle that is less than 90degrees). Placing them in the same room might work, but will make polycount 4 times as high as before. The engine puts a stop to the mirror recursion after one or two mirrors (don't know exactly anymore), so placing two mirrors in the same room might not look realistic.
10. Rain and Fog entities are frame-rate-killers.
11. Prefer actors (as SEPs) over detail brushes if you don't need detailed collision on the object. The smaller the actor is, the better (for clipping reasons). With SEPs you can also have nice stencil shadows, although that will lower the framerate again. SEPs are very good for ambience objects.
12. Use ClipBrushes instead of using the built-in StaticMesh collision for terrains. Some terrain generators can export both to a modelling format and to *.map. Export to both, then use the actor for the visuals and the imported *.map file for the collision (as 'Clip' brushes)
13. Do not use too many entities. The engine has to cycle through all entities, and each entity takes its time. Remember that.
14. Use TGAs to lower polycount for thinghs like ladders, fences, rounded doors, windows, trees. In short, everthing that has holes in it.
15. Make tree leaves out of 2 planes using TGAs. But you can not use stencil shadows on the trees then.
16. Outdoors and Indoors should be in different parts of the level. (Can also be done with Area brushes for the doors) Then when you go inside/outside, you must teleport the player.
Windows are a nice thing. But looking from inside to outside or vice-versa too much (like 30 houses with insides) kills performance. This is why you should seperate the indoors and outdoors.
At the moment i cannot think of more thinghs.
Last edited by Jay on Mon Apr 07, 2008 11:08 pm, edited 1 time in total.
Everyone can see the difficult, but only the wise can see the simple.
-----
-----
- metal_head
- Posts: 1244
- Joined: Sat Jan 05, 2008 8:31 pm
- Location: Bulgaria,Sofia
- Contact:
Re: Small City,Terrible Framerate PLZ HELP
Thanks man,that helped me a lot
- metal_head
- Posts: 1244
- Joined: Sat Jan 05, 2008 8:31 pm
- Location: Bulgaria,Sofia
- Contact:
Re: Small City,Terrible Framerate PLZ HELP
O yeah I almost forgot I noticed that making brushes models improoves the framerate too.Is that right ot that's just only in my head