Nosnap recap

Well, nosnap-nocsg is one (very) nice way to make maps. The basics of nosnap consists in manually removing all the unseen polies from a map. This way, the processor has little job to do. Maps process faster and, usually, also run faster. The only two drawbacks to this method are:

  • it requires a little bit of experience
  • it’s time consuming

This small tutor tries to eliminate the first one. The second one can be reduced only after getting used to this method.

All nosnap maps use single-sided geometry. One cubic brush is made from 6 single-sided square brushes. They are aligned with their faces (normal vectors) outwards. Now, if that brush were to be placed on a floor, the face placed on the floor will never get seen by the player. So, why not remove it? That is the essence of nosnap: removing all the polies that the player won’t get to see. The map will run better and process faster.

Normally the processor does that for the Detail 0 brushes, but with a lot of time consumed. The processor however won’t do jack shit for your Detail 1 brushes and prefabs. This poly removal can be applied to any kind of brush: hull or prefab, detail 0 or detail 1. It works perfectly.

Now this nosnap thingie can be tricky when working the hull (outer detail 0 geometry) to nosnap; if you remove the wrong polygon, you’ll get a leak.

Ok, now how do you remove the face of a cube? Well, first, you must un-join the faces of that cube. Simply select the cube by clicking on it, then hit CTRL-J. This way, you actually un join all the faces of the brush. Now delete the face that was pointing downwards. You should obtain something looking like this:


One hint: before un-joining the brush, move it somewhere you won’t be bothered by other brushes. Usually, I move it upwards 2048 DEdit units. Then do the un-joining and deleting part:


First, I moved the brush up, so I won’t be bothered by other brushes. Then I selected the polies that I wanted to remove. One simple click usually does the trick:


Then, deleted the faces that were unseen, by hitting the DELETE key. That easy:


All the remaining faces (now single-sided geometry) must have the NOSNAP flag set to TRUE:


The NOSNAP flag tells the processor to leave all the vertices (the lines that make the outline of a polygon) as they are. By default, the processor tries to set them on the grid. Now that’s OK if you build on the grid or if you don’t use nosnap.

However, in nosnap, if you don’t turn this flag to TRUE, you’ll get the ‘Invalid brush found at … ‘ message. Even if you ignore the error and try to run the map, you’ll find yourself facing odd things, like walls that extend towards infinite and so on.

So, when using single-sided geometry, remember to turn the NOSNAP flag for that particular brush to TRUE.

Plus, you must process your map with the extra parameter -nosnapnocsg:


Otherwise you’ll get a processing error like ‘Invalid brush found at …’

After un joining, deleting and setting the NOSNAP flag to true, you have two options:

  • rejoin the remaining faces (select all the polies and hit J)
  • leave them unjoined but group the together in s folder (select all the polies and hit CTRL-ALT-G)

Now this marks the separation point for two methods of work:

My way:

First one rejoins the polies and sets them to Detail 1, no matter if they were polies from the walls (that should make the hull) or prefabs (that were supposed to stay Detail 1). Now this will definitely leave your level leaking. All you have to do is make a simple hull (rectangular section) that follows the main layout of the level:


Ok, so this image should show you the extra hull I was talking earlier, and  the fact that it has a very simple rectangular section:


Here you should be able to see how the extra hull (the outer Detail 0 brushes) follow the main layout of the map, in order to create a good visibility zoning scheme.

This asks for the additional effort to create an extra hull, that follows the layout of the map. However, the simplicity of the hull (it has a simple rectangular section for crying out loud!) should make this easier. The time taken for a full optimization is very short (my 12,000 polies SP project takes few seconds through the Full Optimization stage from it’s
5 min. of total processing time).

Windebieste’s way:

From what I’ve seen from the ‘posse’ project, Windebieste works in a different way: he only rejoins the prefabs and sets them to Detail 1. The polies that make the outer walls will remain Detail 0 and UNJOINED, eventually grouped together into a folder. This way, those polies will actually create the outer hull:


It spares you the effort to manually create the hull. However, it takes a little bit more time to process; the ‘Full Optimization’ stage takes almost a minute for the ‘posse’ project (8000+ polies). Remember, if you use this method you must leave the Detail 0 polies unjoined! Join them and you’ll leak.

Now the worst thing you can do is compare the two nosnap methods. They give pretty much the same result in pretty much the same time.

However, the superiority of the nosnap method against solid-brush (classic) way of mapping was proved when working at the ‘posse’ project: the map couldn’t be processed (Full Optimization) while having those huge sections build in the classic way. However, after Windebieste turned’em to nosnap, the map processed in around 5 minutes, Full Optimization.

The .zip file contains three .ed files and this page. First .ed is a room build with solid brushes, the second is a nosnap version of the room using the first nosnap method, while the third .ed file has the same room made nosnap using the second method. My advice is to try to turn the solid-brush room to nosnap yourselves. Just for practice. Expect some errors (most likely you’ll forget something in your first attempts). What I expect of you however, is to overcome the errors encountered and acquire one of the two methods of nosnap work.

Another nosnap tutorial can be found on modmaker’s page. Best of luck and I hope you’ll get hooked on nosnap.


1 thought on “Nosnap recap

  1. Pingback: Building terrain using heightmaps | Herr_Alien's Office

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s