Greetings everyone, I would like to introduce myself. I am the mysterious Tundra Puppy that seems to be the subject of more questions about who I am in this thread than John Galt.
I've been watching this thread randomly, and have had my attention drawn to it by some of my friends as well - usually followed by "are you really gonna let them say that about you/your work?" - so for those of you who have noticed I've been on the forums, you are correct. I've noticed there's been a lot of questions/comments about The Grimpen Marshlands, and I'd like to take this opportunity to address some of them.
First, a bit of background. I'm 27 years old and have been doing level design since Wolfenstein 3D was released (the original that would fit on a floppy diskette. Makes me feel old), working my way through the Doom series, the Quake series, and the Unreal series (and dabbling in other engines randomly). That's 17 years worth of level design, starting on an old prebuilt Packard Bell 386DX and ending up currently on an Intel Core i7 I built myself. I've also done level design for startups I've been involved with, demoed stuff to developers at the Game Developers Conference, worked on a prototype of a simulator to train Information Warfare Teams for the United States Air Force (and been published in a pdf about it under the direction of Michael Cramer, and Sowmya Ramachandran), and written course material for Westwood College Online's game design and level design online courses. While none of these things in and of themselves indicate any necessary level of proficiency with regards to level design, I hope that you can trust that at some level, I do understand what I am doing.
I built Grimpen as a first map for the Killing Floor version of the Unreal Engine 2.5 primarily because my friends said "Tundra Puppy, when are you gonna crank out some maps for this Killing Floor game that we're always playing together?". So I sat down at my whiteboard and notebook, and started drawing out some basic sketches of what I was envisioning - if I make any followup posts and can find the source materials, I might upload a few sketches of it for you. Among what I wanted to make was a map like Farm, except set during the day. A large map that would require players to move between waves. My dad, at the time, was in Louisiana, and he was enthralled by the bayous, which provided inspiration for the notorious "framerate zone of death" northern area. A lost military squad who made one final, hopeless standoff at the beach. A house rotting away from the top down. Vast amounts of foliage both in the form of trees and bushes that would provide cover for advancing specimens, and tall grass that hides crawlers. And an atmospheric, oppressive place, which was both teaming with life, yet seemed to be dying at the same time. But importantly, the map was never intended to be publically released. It was a labor of love for myself and my friends, and thus I built it to the specifications of our computers, which is why lower end computers will struggle in some parts.
Creating the map was a long process, which went through a lot of iterations. One of the comments I have seen is the map did not go through the beta forums, but straight to final. As of current, there are only two bugs I am aware of on the map, neither of which are gamebreaking (one involves a pathnode on a rock, another involves the collision of two support beams). An internal build already has these fixed. This is because there were many, many iterations of the map tested and retested by a hand picked group of testers who went over things with a fine-toothed comb. The two bugs that exist were actually inadvertently added by myself immediately before release. The map was not rushed by any means - some of my testers were quite tired of it by the time the testing cycles were completed.
Once the map was finished, the Grindhouse contest had already been announced, and again, friends asked me if I was going to submit it. I declined politely, initially, for two reasons. First, I tend to shun the spotlight. This, for example, is being written only under the threat of someone else making a post and potentially embarassing himself. I prefer simply doing my work, and letting it speak for itself. Secondly, I knew that my ambitions with this map surpassed what a lot of people's computers were capable of, whether it was a physical limitation or their unwillingness to adjust their settings to an appropriate level. However, my friends are persistant, and so the map was eventually entered into the contest. Some of you may have noticed that it appeared on the whitelist a bit before it was publically released - this was because I privately asked Tripwire to whitelist it for me so my friends and I could play it on my own servers without drawing a lot of attention to myself and my work. The map was actually finished before the first Grindhouse contest was done; it was only later that I was convinced to release it for the second (and I was still debating on whether to do it, literally, only a few days before the deadline). The map had to be publically released, as per the contest rules, so I threw a quick page up on the forums, and thought that would be it. Imagine my surprise.
And so, here we are. Reading through this post, I'd like to collect a few suggestions and give you my thoughts on them.
Cull distance for meshes is not something I prefer to do for two reasons. First, I dislike "popping" of meshes. Secondly, the draw distance in the map is 2000 units. While in larger maps with higher draw distance, distance culling will often result in less noticeable popping, the closer the draw distance, the greater chance you'll see the pop.
Terrain sector size for Grimpen does not make a realistic frame rate change, on either 16 or 32. Additionally, the suggestion of terrain layers being optimal in groups of 3 is not referenced anywhere that contains evidence to back it up, nor has experimentation with terrain (of which I am extremely experienced in) yielded any evidence of this. Terrain complexity in terms of textures is based on the amount of textures blended (how many passes the renderer must execute), not the number of textures. This is why in complexity view, the entire terrain is not a solid color based on the number of textures used, it varies based on how many textures exist per triangle. Additionally, the engine is intelligent enough to not draw a texture pass for textures that are hidden by a layer that is opaque. Terrain culling will not make a large difference in the map due to the draw distance.
The decolayer grass will not substantially benefit from setting it to the fog's draw distance as opposed to where it currently is - you will still be having draw passes due to Z Testing and texture alpha regardless of opacity, and a longer draw distance simply means more grass polygons rendered. Originally, it was set to the draw distance, but was scaled back for performance.
The destroyed house contains a lot of static meshes, but combining them all into one is actually less beneficial. Most of the custom meshes the static house uses are the same mesh, just adjusted, scaled, and tweaked, which are instanced by the engine for efficiency. Combining these all into one results in a huge mesh which takes up more memory, but more importantly means that the entire mesh becomes visible and used even if you can only see a tiny bit of it. As it is designed now, the house is separated into discreet pieces which appear and disappear as they move in and out of the view frustrum/draw distance. Something to remember is that currently, polygons on screen in and of themselves are not a huge limiting factor in terms of framerate - video cards can easily pump hundreds of thousands of polygons to screen very quickly, especially with instancing. The big factors these days are the number of textures in use - moving them in and out of the video card, and especially how many passes a particular scene uses to render (such as alpha masked textures or complicated shader effects). All maps, by the way, can be brought to their knees in this manner, especially when kiting zeds around. Here's a screenshot of KF-Farm, one of the arguably simpler maps in terms of geometry, compared to Grimpen, dropping to 25 to 30 fps when kiting some bloats in solo play:
[URL="http://www.aemaps.com/KF/farm_fps.jpg"][url]http://www.aemaps.com/KF/farm_fps.jpg[/URL][/URL]
Unseen BSP faces set to unlit will not result in a realistic performance gains, because there is such few BSP in the map to begin with, as well as, again, the small draw distance meaning you only see a tiny fraction of the existing BSP at any given time. Additionally, some of the BSP is already set to unlit (like the exterior walls tagged as the skybox. Say hello to my dogs, Tanner and Sasha, when you look at it!)
Antiportals and zone portals also do not particularily help. First, let me explain how zones and antiportals work. A zone portal works by sectioning off areas of enclosed space into discreet zones using a brush marked as a zone portal. If you can see the zone portal, all zones that portal touches are rendered. Thus, on interior maps, zone portals are fantastic tools that are extremely useful. On exterior maps, they are close to useless because wide open spaces are not easily divisible into isolated areas due to the required size of the portals. Zone portaling the buildings in Grimpen is also not particularily useful because of the close draw distance. This is actually why antiportals were developed at the same time the Unreal engine moved in the direction of terrain and wide open areas. Antiportals are a device which works opposite to a portal - anything which is completely covered by the individual antiportal you are looking at is hidden. This means you don't want to put them in place sight, because you'll get a Hall of Mirrors effect, or you'll get that dreaded popping effect where things suddenly appear as you move around the antiportal. Antiportals are best used in hills. The problem with Grimpen is that there are very few hills. Most of Grimpen is somewhat flat, with gentle slopes so speciments don't get hung up on terrain or geometry. This, combined with the draw distance, means antiportals won't get used much, if at all, except on the outer hills of the map, where nothing needs to be hidden anyway. The best place to put antiportals in Grimpen, actually, are inside the walls of some of the houses, except at certain angles you'll still run into the problem of them not working completely perfectly because they can't cross openings like doors.
There were a lot of comments to adjust collision on meshes - however, this has already been done. In fact, most meshes already have collision turned off in one way or another, whether its traced collision like gunfire, non traced collision like pawns, or karma collision, and blocking volumes have been placed everywhere.
So, what's killing the framerate? Very simple - overdraw with foliage combined with specimens. However, as was pointed out, the foliage is what makes this map Grimpen and not Farm. And there's a LOT of foliage. It makes Wyre look somewhat simple in comparison. It would be trivial to "fix" the map, but doing that would result in the map looking extremely chopped up and changed. As this map is still a labor of love that I created for myself to satisfy an artistic itch, I am not keen on doing that. To make a metaphor, it would be like someone complaining that a particular painting had a color scheme that hurt their eyes and thus the artist should change it.
Additionally, being someone who lives and dies on creativity, I'm fairly used to criticism from people, so the things said in this thread don't particularily bother me (and I've even had a good laugh at some of them). However, I would caution some of the people (one person in particular who I will not name) to think carefully before making generalized assumptions about the abilities someone has, the drive and effort they put into what they do, the sense of entitlement they themselves feel the artist owes them, or the reasons the artist may choose to remain working in his studio rather than appear for a virtual photo-op. Those actions are a good way to drive away talented individuals or individuals eager to learn, from your community. I would suggest that rather than accuse the artist of dubious behavior or make similies as to how you perceive his behavior to be, if you find a particular artist's methods not to your liking, you move on.
And no, to answer one person's question - no one has tried to PM me.
Sorry for the long-windedness of this post, I know your time, like mine, is valuable. However, I wanted to address some of the complaints, and I'd rather put myself on the line than have my friend make himself look silly.
-Tundra Puppy