• Please make sure you are familiar with the forum rules. You can find them here: https://forums.tripwireinteractive.com/index.php?threads/forum-rules.2334636/

Beta Map RO-Kriegstadt Beta 2

Ok, took a little longer than I thought but here it is for you EvilHobo.

First of all, I was pleasantly surprised when I opened the map in the editor because you've done a lot of things right. I also like the amount of research and detail you've put into the map, so kudos for that. :cool:

This might seem a little unorganized but I'm writing these down as I see them. Bear with me and feel free to ask about specifics or why I said something. Also, I apologize if this doesn't make sense to anyone other than EvilHobo but I felt it was best to post it out in the open so other mappers could contribute. Here goes...



This is all from RO-Kriegstadt_Beta2.rom file.

First thing I did was check the overall stats for the map to get a sense of what I was looking at. I can safely say that you've gone overboard in quite a few places but don't worry, they can be corrected! Leningrad_Beta2 was also quite bloated, probably even more so! :eek:

Total Brushes: 3383
Total Staticmeshes: 4191
Total Anti-Portals: 26
Total Emitters: 26 (including 3 FireLarge emitters)
Fog Distance: 20500 UU
Average StaticMesh Triangles: 60k (max 120k at bridge)
Average MaxTextures: 125 (max 200 or so)
Particles: 50-175
TerrainSectors: (450 max)
Terrain Triangles: 15k average, 75k max
StaticMesh Triangle ms: 3 - 5
BSP Render ms: 0.5 - 1.5
Setup ms: 5
Traverse ms: 4 - 5

This is just a rough estimate but here's what I would be concerned with in general. I'll give you a list of specific offenders near the bottom of the post.

Your biggest problems with performance are most likely coming from the very high BSP and SM counts. I would aim for a goal of 2000 brushes and no more than 3000 staticmeshes.

Anti-Portal number is fine, although some of them could be improved in various ways, more on that in a bit.

26 emitters is normally fine but in your map this is too many. The reason for this is that almost all of your emitters can be seen from great distances and also create a lot of overdraw (eg. the dust emitters).

Fog Distance is a good number I think, no issues there.

Staticmesh triangle count throughout the map is really low actually, but they take a lot of time to render because there's an insane amount of them coupled with the fact that you've used a high number of different statics (eg. using 5 tree meshes when you could get away with 2). The bridge area will need some work because 100k SM triangles is pushing it when you have so much else going on as well.

MaxTextures is a little on the high side, 100 unique textures in view at once should be the end goal. This can easily be corrected by removing unneeded statics and textures that are only used a few times in the map. This will also help cut down on the size of the map greatly.

For the most part your terrain is fine, however, in some places you have up to 450 terrain sectors! This is really a high number and it is caused by the setting TerrainInfo > TerrainSectorSize: 8. I could attempt to explain what TerrainSectorSize does but UDN already has a section on it that does a pretty good job. Basically the terrain is being culled in blocks of 8 in your map when it should be in blocks of 32 or even 64 so the engine doesn't have to keep track of so many sectors being culled/rendered. I would test out different numbers with "stat all" on and see which gives you the biggest FPS boost. You can judge the performance by looking at the Terrain Render ms number as well.

http://udn.epicgames.com/Two/LevelOptimizationTerrain.html

Your terrain is a little on the detailed side for a map of this size but you can't change that now so I would suggest using it to your advantage. For example create more shell holes with terrain, more small clumps in the street, alongside buildings, etc. This will make the map look more detailed and cost nothing more towards your performance. You can also use terrain to reduce the number of brushes and statics in the map. For instance you could cover the base of some planted trees to get rid of the base tree-pot static or cover a sidewalk brush with terrain debris and then delete it. Lastly, 5 terrain layers is probably perfect for the map, no need to reduce those.

Ok, now onto the specifics. Let the fun begin! :eek:
(note: to find a specific actor use the "Search for Actors" function (binocular icon top left under "Build")

- Cull distances! One of the biggest things hurting your map at the moment is the lack of cull distances for high-poly statics! I know it's a ton of work to check each individual staticmesh and place a cull distance on it but this step will greatly improve the performance of the map, especially around the bridge area.

- Remove collision on all objects that will never collide with the player. This means building facades, high windows, emitters, bushes, etc! For example, find StaticMeshActor4670. This staticmesh doesn't have a proper collision model made for it which means collision is handled on a per-poly basis! That means all 3000+ triangles are being considered for collision when this particular mesh isn't even in the play area. On top of that this mesh doesn't have a cull distance set so players have to render it for extended distances. Set the cull distance to 14000 and all of the collision fields to False.

- Very few of your emitters have cull distances, make sure those are set! Also, your main smoke emitters have 20 particles each, you can get away with just 10.

- StaticMeshActor42 has an improper texture set to it.

- Delete StaticMeshActor16 (hidden under terrain).

- StaticMeshActor3100 and StaticMeshActor3098 are too high poly for outer meshes, use a 2D facade instead. There's also a ton of this type of mesh used outside the play area, I would replace them all with 2D meshes.

- Brush146 isn't needed, you can cover the exposed bits with terrain and delete it.

- StaticMeshActor1020 is embedded into the terrain too much, I would delete it or move it out so it can be used as cover.

- StaticMeshActor1649 are some stairs that lead to a blocking volume. Block the stairs with something.

- You have 48 SMs in your SkyBox, you should combine the building facades into one and turn the collision off.

- AntiPortalActor26 doesn't really cull anything so you could delete it. Same thing for AntiPortalActor14, AntiPortalActor3. All the rest look ok but you should really extend them downwards another 1000-2000 UU to make sure they occlude everything.

- Delete StaticMeshActor1231 (outside play area/hidden). Also, this mesh is very high poly and has an un-optimized collision mesh so you may want to replace it throughout the map.

- StaticMeshActor1488 is a tree type that is only used 4 times in the entire map. I would replace it with another, more commonly used tree.

- StaticMeshActor980 can't really be seen from the play area, you can delete it (along with a few surrounding statics).

- StaticMeshActor667 cannot be seen. Delete it and the 4 closest roof meshes.

- StaticMeshActor4286 and all matching statics (white factory door, used only 4 times in the map) should be deleted or replaced with more common statics.

- Find StaticMeshActor4304 This type of chair is only used 11 times, consider replacing it.

- Delete StaticMeshActor4270 (hidden).

- You've used a blank grey texture for the outer BSP walls that cannot be seen by players, which is good but there are still many that remain textured (including roofs and other areas). Remember to keep setting them to Unlit.

- Find StaticMeshActor952. This cart is only used twice in the map and is fairly high poly so I would delete/replace it.

- Find StaticMeshActor2583. Although these building arch statics can be seen from a great distance you can safely set the cull distance to 8000 or so because they blend with the grey concrete wall.

- Brush4343 and the two beside it could be combined into one without losing any detail.

- Go into Wireframe mode and take at look at the Hotel objective. You should notice just how many staticmeshes are being rendered. Be sure to put cull distances on all of them! Do the same for each building and your map will run a lot smoother. Someone looking at the Hotel from down the street shouldn't be forced to render all the decoration statics inside.

- Find StaticMeshActor877. The one side of this mesh is meant to be against a wall so make one out of BSP to cover the holes.

- Try to combine (preferred) or simplify the broken wood statics because you're using ton of them throughout the map. If players won't notice them they don't really need to be there (eg. StaticMeshActor532).

- Personally I would replace all of your portal textures with a solid grey/black texture instead of the transparent blue because it causes a lot of rendering issues/hall of mirror errors when viewing from the editor. Just personal preference I guess but if you want to change them simply select one and press Shift + T to select all the matching textures in the map.

- As I mentioned before you have a ton of textures and statics that are used only a few times within the map. Select a SM, right click > Select > Matching Static Meshes and see how many there are (F4). If it's less than 15 or so consider removing or replacing them with a more common mesh.

- The custom graffiti texture can be DXT1 with Alpha instead of DXT5. You also could have gotten away with it being 512x64 but no big deal.

- Use the "InUse" tab of the Texture Browser and look for textures with less than 15 instances in the map. Try to remove some that you don't need.

- Find Brush372. What's going on here? Replace all of these zone portal brushes with a single rectangle one. This will help cut down on total brush count and is probably the reason why this zone isn't working.

- Find Brush139. I would highly recommend not using this method/shape for BSP subtractions. This can cause BSP errors. Stick to using Spheres if possible.

- A lot of your buildings have a ton of separate window meshes and BSP cutouts. I suggest that you increase the destruction on these buildings so you don't need to have so many windows. You should also continue to combine the statics wherever possible. This is probably the biggest contributor to the bloated SM count in the map.

- I notice that none of your custom statics have collision meshes or proper Material usage, so I assume you don't have a 3D modeling program? I would strongly recommend getting access to Maya or Max because your building meshes are unoptimized. To see what I mean find StreetRubble1 and click the little + sign beside "Materials" at the very bottom of the SM Browser. You'll notice that there's 97 different materials being used (!!!) for that one mesh even though you're only using 2 texture types. This is a problem with creating combined statics from within the editor. Additionally all of your meshes are using per-poly collision instead of an optimized collision mesh (usually created in a 3D app).

- Find StaticMeshActor10049, only two instances. Remove/replace.

- Russian Spawn 7 is fairly exposed but even worse is the fact that there's absolutely no BSP occlusion. Always hide your spawns behind some form of BSP block so that AFK, newly spawned players, and idle vehicles are hidden from view of other players in the battlefield. I suggest making that small mound of rubble much larger and sticking a BSP block inside. Always make sure your spawns are behind BSP to help keep the network traffic down.

- Find Brush1309 and delete this group of brushes (hidden).

- A lot of your destroyed vehicle meshes are only used a few times. Try to remove some and reuse the rest as much as possible. To make each one look like a new mesh you can cover half of them with terrain, have one on fire, etc (for example there's 4 Tiger meshes on Danzig but nobody really notices because none of them really stick out).

- Delete StaticMeshActor2598 (hidden).

- Find Brush2423 and delete this group (hidden).

- Find StaticMeshActor1493. This rubble mesh is fairly high poly so you might want to replace it with the rubble pile from Leningrad (also has a better collision model).

- Find Brush2944. I can just imagine the nightmare this building must have been with all the BSP holes it probably created. You should turn this into a staticmesh asap because it's probably causing a few holes still (and using a lot of brushes).

- Find StaticMeshActor1513. All of these bushes should have shadows turned to False and set to Unlit/ScaleGlow 0.5 (or you can just try turning the AmbientGlow up to 30 or so). Either method should stop half of the leaves from being blackened.

- Find StaticMeshActor1477. This type of tree is quite high poly for such an open area, consider replacing it with a lower poly model if you can.

- Find Brush1493 and delete this group of brushes. I understand that you're using these to create statics from but they should be cleaned up once the map is ready to be released. If you need to save them just create a test map and transfer the brushes there.

- Find Brush3082. This group could be combined into a single brush. Turn them into Addition brushes and then use the intersect tool to create the builder brush shape.

Phew, ok I've got school tomorrow so I need to stop. This map really reminded me of what I went through to create Leningrad so I hope you can learn something from my mistakes. :eek: I believe Leningrad_Beta1 had about 10 000 individual statics mostly due to all those blasted windows! For your next beta version I would try to really focus on optimization because I think the gameplay is fairly good at this stage (even though I haven't played the map or RO much lately). I cannot stress how important combining statics and putting proper cull distances on everything is for optimization! This alone will increase the FPS and allow you to add more detail into the map.

If you want to decrease the size of the map and make it more enjoyable for players who have precaching turned off go through the map and remove any unnecessary textures/statics that are only used a few times. There's not really much sense in forcing everyone to load up a toilet mesh if it's only going to be used in two bathrooms off in some far corner of the map. ;)

I hope this helps. If you, or anyone else, have questions or want me to clarify something let me know. Obviously I didn't list everything here but this should give you a good idea of what to look out for when optimizing the map. Once again, great work on the map EvilHobo and sorry for creating a ton of new work for you to do. :p
 
Upvote 0
Agh, just when I thought I didn't have too much left to do.

I haven't really the time to open up the editor right now (all-night Physics/German/Chemistry work/study stuff! Halp!).

One thing I will comment on in passing are what you probably imagine to be a madman's portal, or that is, 8 portals combined on one plane to fill an irregular BSP brush subtraction that I used as holes in walls. This was a last desperation gamble on my part, as the hole in question (I imagine its outside of the Hotel) would cause for a series of BSP errors to cause, ranging from BSP holes, the brush completely disappearing upon a compile, or building but having no effect (the brush existed in perspective view but did not function as a portal). In seeking to block some of these holes using destructible static meshes (which were cut between B1 and B2), I did the whole multi-BSP sheet -> SM thing, and opted to apply the technique to the problematic portal.

I do thank you for the time you put in to writing this, I have been negligent of a lot of optimization things often out of sheer laziness, but since you've brought them to fore I can't do any more cover ups! :mad:

Well, hopefully it should work out for the best. Certain things I may not do as I value my details very highly, but I'll make it work out.

EDIT: And you're right, I didn't use a proper 3D modelling program for my work, namely because I never learned how to. At this point though, I don't even have the time to learn it, so it's ruled out as an option rather unfortunately.

Thanks again,
EH
 
Upvote 0
You could try moving the mouse hole to a new location or trying a door instead I guess. Doesn't really matter but as it stands I don't think the zone is functioning at all.

Anyways, all of this isn't set in stone or anything. It's just here so you, and maybe others, can try a few new optimization techniques. How much/little is ultimately up to the individual and this isn't any different than how much detail you want to put into a map. I'm sure I could have worked on Leningrad for another year but there's always a point in time where you've just had enough and want to release the darn thing, even if it isn't perfect! To get Kriegstadt to an acceptable level of optimization you probably won't even have to do half of the things I listed. :)
 
Upvote 0
The layout could give good spots to hide your antiportals
As Guppy mention to extend your antiportals more down
some of them could be more made more wide to occlude much more.

As an example antiportal 1 & 2 could be made with one
just make it one big cube.

You could widen up antiportal 8

Antiportal 12 is almost overlapping antiportal 19

Let it rest and then take a look the other day.
You could widen up more of these thin antiportal which will
need less of them to.
 
Upvote 0
excellent suggestions by guppy he covered mine in that the Russian Spawn 7 really needs a BSP cover, That will help a lot I think also the removal of roof statics will improve things much. I also think the suggestion to use the terrain more in the streets will add more cover and look much more realistc and allow performance improvements it may also allow destro barricades back in I think that would be good in a few places to allow the germans to get into new positions. Looks like you have your hands full , on those 3d modeling things I think if you asked nicely the community would come through for you. Looking forward to B3
 
Upvote 0
This map is awesome in many ways. But if you could please:

>Fix the Pak gun. Whenever I play this there is always a guy who dissables it by using auto tank reloading. If it can't be fixed, maybee you could make the Pak gun unusable to anyone without manual reload. And if they tried, a message would pop up telling them to switch to manual load.

>Fix spawnprotection. This is pretty minor, but sometimes when the soviets cap an objective, the germans defending explode imediately due to being near the new soviet spawn. At least give them time to escape!
 
Last edited by a moderator:
Upvote 0
Don't give up on it just yet, EH. (Things don't have to be done ASAP....and school always has some down time :cool:)
It is a quality map that mandates teamwork.
When you get it optimized, I'm sure it will rank among the greats. Were there not great potential, I'm sure that those with the knowledge wouldn't have spent as much of their invaluable time examining and critiquing it.
 
Upvote 0
EvilHobo, I think that you will get huge payoffs for following Dr. Guppy's suggestions. It seems to me that you will learn a lot about the practical and theoretical parts of map-making, and it'll make your map just fantastic. Judging from that list, a lot of the work you do will feel less like a fun time at the carnival and more like doing a bunch of monotonous math problems, but just like your mom says about math problems, it'll be good for you.

I think the RO gaming public can live with beta2 for a good while longer-- most RO players probably haven't played it yet, so you have more time on your side than you think.

Good luck, and just think that when you're done, you can finish with the "boot the head into the goal" soccer version of Spartaaaaaaaaaa.
 
Upvote 0
Well, I've gone through the map and applied cull distances / simplified collision to a lot of meshes (I have set facades to still collide with projectiles). I do not consider DrGuppy's goal of 2000 / 3000 of BSP / SM, respectively, to be attainable. I believe that for instance 3000BSP and 4000SM can be done, unless I for instance merged all of the door meshes within a building/floor or all of the meshes within a room, but that would yield a high amount of material IDs in any which way you look at it, with the only way to solve that being to convert the SM to brush, make an addition brush with it, and then convert that to Static Mesh. What you then end up with is unoptimized collision, which may end up being worse for the client in the long run.

I do not see a foreseeable reduction of the brush count, unless I construct a number of buildings as SMs, such as the generic ones that line the first street and are interspersed elsewhere throughout the map. I just need to determine if it would payoff so to say. It depends on how vigilant I get with it I suppose.

For the bridge area, parts of the Packhof are going to be rebuilt as Static Meshes, so it should alleviate some of the BSP stress.

I'd like to point out that the Panzerfaust / Vehicle Factory hybrid was completed, although it still needs to be tested. It's probably the coding equivalent of rolling ones head on the keyboard, but that's not a necessarily bad way to go about things I guess. Provided that it works appropriately, the Panzerfausts will be switched on/off by the advancing of spawns, meaning that the server has less pickups it will need to keep track of. Should help out tremendously for high capacity servers as well as the RTR server which seems to bog down a bit.
 
Upvote 0
Your Panzerfaust spawns are set at 4000 cull distance (default setting). So most of them are being rendered unecessarily by players outside fairly far away. They are 430 polys each so that adds up. I would set them all to 1000 as a good all around number then go through certain areas where you know that longer distance is needed to prevent pop up.
 
Upvote 0
Yea it lacked atmosphere BIG TIME

not to mention it looked like crap and you couldnt really go in any of the buildings

On the other hand I love Kriegstadt. It has atmosphere AND intense gameplay. I think that there isnt anything more thrilling than to sneak around with panzerfausts and kill tanks as a german, or clear building by building of dug-in fascist defenders as a russian.

Plus you cant beat better mgs and awesome uniforms (even if you do get a few more tks)
 
Upvote 0
I just played the map for the first time today, and holy crap all I can say is that I'm in love. The map is huge, sprawling with plenty of indoor areas, but somehow not confusing. The variety of gameplay is also excellent. You have unique obstacles like the dug in Panther. And the lack of smoke and snipers, which I though would be a bad thing, improves the gameplay somehow.

And extra kudos for giving a proper SMG to bolt ration, and FIXING THE TRACERS! YES! They're perfect, and I really hope Tripwire adopts the tracer effect in an upcoming update.
 
Upvote 0