CTF-Acrophobia: A n00b’s map from start to finish

Tutorials and discussions about Mapping - Introduce your own ones!
User avatar
fudgonaut
Adept
Posts: 363
Joined: Sat Oct 05, 2013 7:20 am
Personal rank: Easy Target
Location: "The Butthole of the World"
Contact:

Re: CTF-Acrophobia: A n00b’s map from start to finish

Post by fudgonaut »

Hellkeeper wrote:Intersecting and deintersecting create very poor geometry because the engine needs to keep every polygon convex. When you intersect large concave brushes (like the one you showed), the editor has to divide concave surfaces into several convex ones to prevent rendering issues. In doing so, it adds edges and vertices to the brush to split surfaces into smaller convex ones, but you have no control on the process. You will usually end up with odd geometry, vertices which might be off the grid, splitting edges which didn't need to be affected, unecessary subdivisions of some surfaces, and generally suboptimal build. All this make the brush prone to holes and generate a needlessely complex geometry in the zone around it, which might lead to BSP holes.
Thank you for providing greater context. Sounds like this particular engine behavior is something that new mappers should really wrap their head around.

So I want to dig deeper into this. I think it's an important point to illustrate - and I mean literally illustrate. Has anyone ever done a visual tutorial/explanation/example of how to avoid pitfalls with (concave/convex) shapes?

Using the latest version of my (flag base) brush, hopefully this is a clearer example of how I’ve been doing things...

I created series of brushes (in the warehouse space) that match the shape of the flag base that I built in the test space. Below in the 3D view, each color represents an individual brush:
base-building.jpg
Then I intersect that shape to make the following brush:
base-brush.jpg
Hellkeeper wrote:it adds edges and vertices to the brush to split surfaces into smaller convex ones, but you have no control on the process.
By working with Additive brushes in a negative space, my goal above was to gain greater control over pre-defining where splits/vertices were added - instead of letting Ued try to decide for me. As someone new to the editor, to me the resulting brush looks pretty clean.

Is this approach flawed? Is the brush problematic? OR, is it not a matter of the brush being problematic, but a matter of subtracting this brush shape that is problematic?

Sorry if I’m getting too pedantic or granular – but like I said, it seems like there's a fundamental mindset (re:convex/concave) that one must learn & adopt in order to achieve optimal brush geometry.
User avatar
Hellkeeper
Inhuman
Posts: 903
Joined: Tue Feb 25, 2014 12:32 pm
Personal rank: Soulless Automaton
Location: France
Contact:

Re: CTF-Acrophobia: A n00b’s map from start to finish

Post by Hellkeeper »

Red_Fist wrote:Overlapped subtracts, add brushes sticking out of subtracts
Both of which cause 0 problem are are perfectly normal methods.
As long as the brushes themselves are not bad.
As Ferali said, it's a question of moderation (and in this case, of local complexity).
fudgonaut wrote:So I want to dig deeper into this. I think it's an important point to illustrate - and I mean literally illustrate. Has anyone ever done a visual tutorial/explanation/example of how to avoid pitfalls with (concave/convex) shapes?
This is not as important an issue as you seem to think.
Shapes are not the issue, we're talking about polygons.
A brush can be concave, it can be a torus with a literal hole in the middle. But concave surfaces will have to be divided into several convex ones. This is usually achieved by the engine itself through BSP cuts, but sometimes, it will mess up and you'll see weird things like surfaces ghosting around. You can test this in a few seconds by creating a cylinder and moving one of the vertices inside the brush to create a Pacman-like shape.

Image
The top surface is in red and as you can see, it's concave. I highlighted the perimeter of the surface and you can see a bit of this polygon is ghosting outside its limits. Because the engine tries to stretch a surface between all these vertices and at some point, it cannot do so without going outside the edges of the poly.
So what if you intersect it? Well the engine removes this problem by dividing Pacman into two polygons.

Image
Victory! The top surface is divided now and you can see the two resulting coplanar surfaces are now convex, no more ghost polygons!
Except as you can see, there's this ugly thing now: the new line that divides the polygon ends in the middle of an edge, creating both a vertex off the grid and a T-junction (where a vertex is in the middle of an edge, in a sort of T shape). T-junctions are not as deadly in Unreal as in Quake, but it's bad form and it will still foster geometry problems. Off-the-grid vertices are always bad.
So my 10 surfaces cylinder in a cube doesn't have problems, but when you're messing with objects which have tons of polygons and vertices in an environment which is already complex, this becomes a concern.
fudgonaut wrote: By working with Additive brushes in a negative space, my goal above was to gain greater control over pre-defining where splits/vertices were added - instead of letting Ued try to decide for me. As someone new to the editor, to me the resulting brush looks pretty clean.
Subtractive brush work the same as additives, There's not really much more control over the splits in my opinion, but if you find it easier, go for it, this is not an issue at all.
fudgonaut wrote: Is this approach flawed? Is the brush problematic? OR, is it not a matter of the brush being problematic, but a matter of subtracting this brush shape that is problematic?
Your brush is fine because it's relatively simple: it's just a bunch of square polygons with on-grid vertices and plane or 45° surfaces and everything looks convex. I don't understand what you mean about subtracting though, subtracting does not cause more problems than adding brushes and they work exactly.
However, looking at the brush you end up with you can see the seeds of what I talked about earlier.

Image
In cyan, all your nice T-junctions and the nice cuts the engine added.
In this case it's fine because your brush is simple and doesn't cause problem and without these new edges, the BSP cuts would probably have been similar to these actual edges. But obviously, you now have much less control: you can't move things around as easily if you want to modify the brush and if one of these cuts goes bad, then you have to change the whole thing instead of moving just a few things a couple units away. You can't convert small details from it into semi-solids either.
Same in your previous screenshot about intersecting the catwalks: I jump up and down about it not because the result you have is directly bad, (it looks fine, mostly, although there are a lot of cuts on the eastern end) but it's a slippery slope.
Basically, this is a very simple structure and so it doesn't really matters if you keep it into several separate polygons or in a single molded intersect.
But now imagine how surreal things would go if you were to intersect something like this:
Image

Really, intersecting/deintersecting is mostly a bad habit. It will not be a sure recipe for disaster and there are cases where you need them (mostly to create big complex movers in a single brush). But I and probably everyone here has seen dozens of maps with huge complex intersects wreaking havoc because they were used in a retarded way. The less you use them, the better. Unreal has stable enough geometry that you can make full maps without needing them. My advice is to keep intersects to where you can't avoid them.
For the record, here's an Unreal/UT99 map with exactly 1 intersect which is a mover.
(And oh noes tons of add brushes sticking out and overlapping subtracts, how can we fight the 0 geometrical errors!)
Last edited by Hellkeeper on Sun Jan 21, 2018 9:13 am, edited 1 time in total.
You must construct additional pylons.
User avatar
fudgonaut
Adept
Posts: 363
Joined: Sat Oct 05, 2013 7:20 am
Personal rank: Easy Target
Location: "The Butthole of the World"
Contact:

Re: CTF-Acrophobia: A n00b’s map from start to finish

Post by fudgonaut »

Awesome explanation, thank you!!!

So If I get what you're saying, there is no problem with keeping the catwalk geometry as individual brushes.

One of the reasons I wanted to consolidate brushes in the first place was to simplify the process of moving/adjusting them if I had to. To me it seemed more efficient to make a (cleanly cut, stable) brush out a group of brushes, and move/adjust it as a single entity - rather than moving/adjusting a bunch of individual brushes.

But if I understand correctly, what you're saying is - due to the idiosyncrasies of the engine - it's preferable to keep the brushes as individuals, because it reduces the risk of BSP issues. And if BSP issues do occur, it's easier to fix them if the brushes are individual (and not consolidated into one).

So to address the task of wrangling a bunch of brushes that add up to a single shape (like the catwalk), is the best approach to add everything to Groups instead? Then hide/show Groups in order to isolate & adjust them as needed... iIs this correct?
Hellkeeper wrote:There's not really much more control over the splits in my opinion, but if you find it easier, go for it, this is not an issue at all
There's not a lot of extra control, but there have been a few times where I've been able to dictate where the editor will place polygon cuts, and in so doing, keep the cuts at clean angles (90 or 45 degrees) and snapped to the grid.

The other thing I can do, depending on the geometry, is remove extra polygon cuts here & there. So in my flag base for example, here is the initial geometry:
brush01.jpg
and the resulting brush:
brush01a.jpg
If I add a couple brushes on the outside, flat against the surfaces I want to clean up:
brush02.jpg
Then I intersect around the dimensions of the flag base, the result is that I have removed three cuts (dotted green lines):
brush02a.jpg
Maybe it's a lot of work to remove just three cuts - and if my brush-building skills were better, maybe I could build something that has fewer cuts from the start. But I stumbled across this technique when playing around, and thought I'd share it.


Thanks again Hellkeeper, for taking the time to create such an in-depth explanation!
User avatar
Hellkeeper
Inhuman
Posts: 903
Joined: Tue Feb 25, 2014 12:32 pm
Personal rank: Soulless Automaton
Location: France
Contact:

Re: CTF-Acrophobia: A n00b’s map from start to finish

Post by Hellkeeper »

fudgonaut wrote:So If I get what you're saying, there is no problem with keeping the catwalk geometry as individual brushes.
Yes. And it will give you much more control, working with them will be easier and cause less-problems. At most, I'd intersect them at the very end if you're sure not to touch them again.
fudgonaut wrote: One of the reasons I wanted to consolidate brushes in the first place was to simplify the process of moving/adjusting them if I had to. To me it seemed more efficient to make a (cleanly cut, stable) brush out a group of brushes, and move/adjust it as a single entity - rather than moving/adjusting a bunch of individual brushes.
Fair enough, ideally you should be able to do this. But intersects are hardly cleanly cut and stable compared to a normal group of brushes, especially a group of simple cubes.
fudgonaut wrote: But if I understand correctly, what you're saying is - due to the idiosyncrasies of the engine - it's preferable to keep the brushes as individuals, because it reduces the risk of BSP issues. And if BSP issues do occur, it's easier to fix them if the brushes are individual (and not consolidated into one).
Exactly.
fudgonaut wrote: So to address the task of wrangling a bunch of brushes that add up to a single shape (like the catwalk), is the best approach to add everything to Groups instead? Then hide/show Groups in order to isolate & adjust them as needed... iIs this correct?
Exactly.
fudgonaut wrote: There's not a lot of extra control, but there have been a few times where I've been able to dictate where the editor will place polygon cuts, and in so doing, keep the cuts at clean angles (90 or 45 degrees) and snapped to the grid.
From what follows, I'm not sure you're not confusing brush edges with cuts. Edges are the lines on the actual brush, cuts are the divisions in nuanced polygons of each surface, visible in Zone/Portal mode in the 3d wiewport. They're linked but not identical.
fudgonaut wrote: Maybe it's a lot of work to remove just three cuts - and if my brush-building skills were better, maybe I could build something that has fewer cuts from the start. But I stumbled across this technique when playing around, and thought I'd share it.
These are edges, not cuts, and the thing is, while it's nice to have less uneccessary edges (and one of the problem with intersects is that it usually adds some instead of removing them), the engine will probably add BSP cuts exactly along the edges you removed anyway.
But here the point is moot because really, you could make the entire thing semi-solid and create zero cut. Or if you don't want to bother with semi-solids for the whole thing, the two little bits sticking out of the first slant of the roof could be made semi-solid. Each would remover 3 edges and at least as many cuts. That's much more efficient. Likewise, the two dark green pillars with beveled top could be semi-solid as well as the purple "butt" of the structure.
I have to say these temporary textures are not making things easy to distinguish. :P
You must construct additional pylons.
User avatar
fudgonaut
Adept
Posts: 363
Joined: Sat Oct 05, 2013 7:20 am
Personal rank: Easy Target
Location: "The Butthole of the World"
Contact:

Re: CTF-Acrophobia: A n00b’s map from start to finish

Post by fudgonaut »

Hellkeeper wrote:I'm not sure you're not confusing brush edges with cuts. Edges are the lines on the actual brush, cuts are the divisions in nuanced polygons of each surface, visible in Zone/Portal mode in the 3d wiewport. They're linked but not identical.

...the engine will probably add BSP cuts exactly along the edges you removed anyway.
Aha!!! Understanding this helps me greatly.
Hellkeeper wrote:I have to say these temporary textures are not making things easy to distinguish. :P
True - Here it is with different colors to distinguish the individual brushes a little better:
brush03.jpg
Hellkeeper wrote:you could make the entire thing semi-solid and create zero cut. Or if you don't want to bother with semi-solids for the whole thing, the two little bits sticking out of the first slant of the roof could be made semi-solid. Each would remover 3 edges and at least as many cuts. That's much more efficient. Likewise, the two dark green pillars with beveled top could be semi-solid as well as the purple "butt" of the structure.
My understanding of semisolids is that they can only be additive, not subtractive. So in the case of the brush above, my goal is to subtract it to make the flag base room (that contains the catwalk, etc.). So it seems like using semisolids would not be applicable in this case.

Or, are you saying that if I build it with semisolid brushes, then intersect it, the resulting brush - which I would then subtract - would be prone to fewer BSP cuts?

Either way, I will definitely re-think my approach and try things a little differently. I can’t thank you enough for illustrating the subtleties of the engine, this is invaluable stuff for a newcomer!!!
User avatar
Hellkeeper
Inhuman
Posts: 903
Joined: Tue Feb 25, 2014 12:32 pm
Personal rank: Soulless Automaton
Location: France
Contact:

Re: CTF-Acrophobia: A n00b’s map from start to finish

Post by Hellkeeper »

fudgonaut wrote:My understanding of semisolids is that they can only be additive, not subtractive. So in the case of the brush above, my goal is to subtract it to make the flag base room (that contains the catwalk, etc.). So it seems like using semisolids would not be applicable in this case.
Then disregard the point about semi-solids. They can only be additive indeed. If this brush is destined to be subtracted, then keep it as a set of normal brushes. :)

Now if you are going to subtract it, the point I made about cuts and edges being separate is even more important: you explained how you intersected the brush in a specific way to eliminate what you called "cuts" on the top and bottom surfaces of the shape. And I told you that this was useless as the engine would probably add cuts along these very lines.
In a similar way, you can make sure a number of cuts do not appear despite the brush having edges. If you have coplanar surfaces and they have a similar texture and the texture flows perfectly from one surface to the other (as happens when aligning the texture to floor) right-click on your brush and select polygon=>Merge. These faces will be merged and considered a single surface, no matter how many edges run along them.

Image

These three brushes are the same. As you can see, the blue bottom surface of the blue one is a single polygon despire having just as many edges and vertices as the ones to the left.
This has a downside though: moving a vertex from a merged polygon so that all merged faces are no longer coplanar will break the brush. You can undo the merging with right-click =>Polygons=>Separate.
Merging also corrects lighting artifacts where two adjacent coplanar surfaces have radically different lightmap resolutions, by making them into a single large surface with a single common lightmap.

But now we're entering funny polygon tricks, I'm afraid I'm explaining things which you might misuse or that you might be lost. :P
You must construct additional pylons.
User avatar
fudgonaut
Adept
Posts: 363
Joined: Sat Oct 05, 2013 7:20 am
Personal rank: Easy Target
Location: "The Butthole of the World"
Contact:

Re: CTF-Acrophobia: A n00b’s map from start to finish

Post by fudgonaut »

Hellkeeper wrote:Merging also corrects lighting artifacts where two adjacent coplanar surfaces have radically different lightmap resolutions, by making them into a single large surface with a single common lightmap.
That is a handy thing to know!

So I was thinking about what you were saying, and I did a test using the Zone/Portal view:
  1. I built everything using separate brushes
  2. I replaced all the separate catwalk brushes with a single (intersected) brush
  3. I replaced the catwalk, room, and wall insets with intersected brushes
  4. Finally, thinking about what you said about semisolids, I added the catwalk brush as a semisolid.
BSP-cuts.jpg
Visually in terms of BSP cuts:
  1. Separate brushes for the catwalk created the most cuts
  2. Replacing the catwalk brushes with a single brush cleaned up things a bit
  3. Using intersected brushes for all parts of the room, the cuts were different, but the number/complexity seemed roughly the same as #2.
  4. A semisolid catwalk brush made the biggest difference. The room looks a lot cleaner
In this particular case, semisolid seems the way to go for the catwalk.
User avatar
XaNKoNII
Skilled
Posts: 216
Joined: Wed Jun 09, 2010 12:29 pm
Personal rank: Phenix
Location: Portugal

Re: CTF-Acrophobia: A n00b’s map from start to finish

Post by XaNKoNII »

I've been paying atention to your progress over this map and must say I am actually learning from you. You digged a little in some areas that I still haven´t payed much atention and apreciate you doing that job for me xD

As for the downloadable fie, I took the liberty of adding light and making the skybox visible and must say I love the feel of walking arround this area. Great work on the ship and on the hangar itself. can´t wait to be able to play in the remaining planed area :D

Image

I rotated the skyzone a litte here.

Image

It looks good with light :tu:
User avatar
Feralidragon
Godlike
Posts: 5489
Joined: Wed Feb 27, 2008 6:24 pm
Personal rank: Work In Progress
Location: Liandri

Re: CTF-Acrophobia: A n00b’s map from start to finish

Post by Feralidragon »

Yeah, now it's starting to actually look very nice, keep it up. :tu:
User avatar
fudgonaut
Adept
Posts: 363
Joined: Sat Oct 05, 2013 7:20 am
Personal rank: Easy Target
Location: "The Butthole of the World"
Contact:

Re: CTF-Acrophobia: A n00b’s map from start to finish

Post by fudgonaut »

XaNKoNII wrote:I love the feel of walking arround this area. Great work on the ship and on the hangar itself. can´t wait to be able to play in the remaining planed area :D
Thanks! And thanks for giving us a glimpse of what my flag base might look like with light, as I am still far, far from getting to that point myself.

I did play around with some temp lighting and potential textures this weekend, but the textures weren't aligning as well as I'd hoped. So I'm re-working the geometry to make it a little more '256-friendly.' I haven't had much time to work on things, but hopefully I'll have the geometry re-done by the end of the week so I can start working on the next room.

Cheers :D
Post Reply