Practical Experiment
#12989 posted by Preach on 2013/06/01 12:08:40
A little func_ bonus content from that blog post. I tried some very simple experiments into how the order of brushes in the map file affects the BSP output. It's easy to replicate, just create a single 6 brush box, with a 7th cube floating inside(texture this one differently so you can recognise it). Export the map, and use a text editor to cut & paste the floating brush entry up and down the brush order - you can create 7 different map files in this way.
I then tried compiling all 7 maps with Rebb's compiler, first without the new switch. In this case, there actually was a small change in the number of markfaces: when the floating box was moved high enough in the map file, the number of marksurfaces fell from 193 to 191. Yup, that's a 1% saving!.
When I repeated the compilation with -forcegoodtree turned on, the marksurfaces held at 177 for all 7 map files, but that's a 9% saving over the earlier worst map. Seeing no variation does not seem surprising after the last post, where we saw that the "slow" method considers all brushes at once. But there were variations in other quantities like edges and clipnodes. How?
Well, I can think of two possible explanations. One is that these other quantities depend on some other part of the compiler we haven't considered, and bit that is sensitive to order of brushes. I think the more likely explanation is that even when always applying the "slow" method there are still occasional "ties" where two splits look as good as each other, and the compiler picks one solely on order in the map file.
This is consistent with the observation that all the faces in our test are axis-aligned, so we don't ever test the code in the "fast" method which compiles brushes strictly in order. It appears that the variations in the former compilations were only due to ties being broken by brush order. The fast way appears to generate more ties than the slow way (which is believable from the code), and these ties might result in greater variation (an interesting result).
Hakkarin
#12990 posted by necros on 2013/06/01 15:56:21
Yes, that is what those two menu items do.
Save selected saves the selected brushes to a map file and save region saves the current region.
Please Define
#12991 posted by RickyT33 on 2013/06/01 16:11:30
'region'
Region
#12992 posted by Rick on 2013/06/01 16:49:19
Region selection is in the "View" menu. It's basically a way to hide large chunks of the map at once. You can select only a specific area to be visible while editing, this can de-clutter your view of the map a lot.
I've only used the "set xy" option, so I don't really know how the others work. The "set xy" will hide everything that's not in the current xy 2D view
I've never tried saving a region, can't think of any good reason why I'd want to. I guess it just saves the currently viewable stuff in a new map.
Preach : Interesting !
#12993 posted by rebb on 2013/06/01 17:45:32
Thanks for those articles, looking forward to the follow-ups :)
If it turns out that the experimental switches like "-forcegoodtree" are indeed not having yet unknown side-effects, like causing one's offspring to be born with a tail, maybe it could be implemented in other tools as well - the code change needed is very minimal.
Ah - That's Like Hammers Visgroups
#12994 posted by RickyT33 on 2013/06/01 22:14:30
QuArK...
#12995 posted by JPL on 2013/06/02 09:22:09
.. has also this feature: it is possible to hide some part of the design in the editor (3 options are actually possible: visible, hide, or greyed).
Also, vis-grouping allows to be indeed more flexible. It is possible to build only a selected part of the design to check that it looks correct.
Well, I guess more or less all editors have this kind of features :)
#12996 posted by necros on 2013/06/02 16:10:00
I've always liked quarks tree view that makes map components look like a file system.
And Again...
#12997 posted by mfx on 2013/06/02 16:43:36
i still like quarks texture applying.
Moving Platforms
#12998 posted by hakkarin on 2013/06/02 17:43:24
I tried messing around to figure out how to do it but can't figure this one out. How do I get brushes to move around like you see in many of the areas in the game? (Quake). I am talking about things like platforms that move back and forth and also things like those those cubes at the end of E1M2 that move around. How do I create those?
Hakkarin
#12999 posted by mfx on 2013/06/02 17:58:07
thats a lot of questions..
head over to:
quakewiki.org/wiki/mapping
in entities you'll find what you looking for
googling the unofficial quake specs should be helpful too.
Hakkarin
#13000 posted by mfx on 2013/06/02 18:00:56
func_train and Path_corner to be more unprecise
Moving Platforms
#13001 posted by Rick on 2013/06/02 18:03:37
For platforms that only move in one direction like back and forth, or up and down, you can just use a door. For more complex motion you'll need to use a func_train with multiple path_corner entities.
That's One Question To Be Precise
#13002 posted by negke on 2013/06/02 18:07:23
Moving platforms are func_train entities. They move along an interlinked set of path_corner entities. The plaform starts at the path_corner it targets (if it has a targetname itself, it will only start moving after being triggered); each path_corner targets the next one, and the last one the first. If the platform is supposed to stop at the last path_corner, set "wait" "-1" there.
Da Fuk
#13003 posted by negke on 2013/06/02 18:07:47
Slow typer...
Random Marksurfaces
#13004 posted by Preach on 2013/06/07 01:46:32
OK, my next foray into the realm of messing with BSP compilers, and the first real success (sort of).
http://tomeofpreach.wordpress.com/2013/06/07/random-algorithms-and-bsp/
Now with graphs! Yes graphs!
#13005 posted by necros on 2013/06/08 21:45:21
Very interesting research into the BSP process, Preach.
It's weird how the results we so different from a box map and a full size one.
Have you tried this test with maybe some small maps like DM maps?
Other Tests
#13006 posted by Preach on 2013/06/08 22:50:39
Afraid I didn't try any map in-between. I'd go and give it a shot now, although I expect that the result would be more like the latter than the former. Unfortunately I can't do that easily right now, because I've been revising the code for a future post, and don't have the original compiled at the moment...
#13007 posted by necros on 2013/06/08 23:49:59
I was mainly interested in pinpointing where it started to become 'bad' and to try to pinpoint what it is about full maps that don't show up in box maps.
Cutoff Point
#13008 posted by Preach on 2013/06/09 00:27:52
I may have some insight into that from the new tests. It seems like there's a very fine balance to strike with random input - it seems to work best for trying out different ways of resolving "ties". I guess that in the simplest of test maps there really isn't any difference between just tie-breaking and randomising everything - but I think as soon as you add any real detail then the difference matters.
Just To Say
#13009 posted by ijed on 2013/06/09 02:33:22
I'm following this as well, thanks for the work.
Nothing solid to add though.
Ijed
#13010 posted by spy on 2013/06/09 07:06:40
is it possible to make rmq using some modern free engine?
i remember i've seen e1m1 on crytek eng
Shit Wrong Thread
#13011 posted by spy on 2013/06/09 07:07:37
And That Promised New Method
#13012 posted by Preach on 2013/06/10 00:54:55
http://tomeofpreach.wordpress.com/2013/06/09/quasi-randomised-algorithms-and-bsp/
So here's the way I was talking about, it gets you some improvement, even in the average case, over the deterministic compile run. I'm pretty sure that because the randomness is so low level, it's almost always a case of multiple tying brushes, and the randomisation changing how the tie is broken.
It's not mentioned in the post, but I did check and this version also performs well on the simple test map file. We achieve the same minimum of 160 (over 100 tests), and I'm beginning to suspect that can't be bettered. The graph shows an improvement in the average case, similar to the one that's in the article. So that's reassuring.
Not Ijed
#13013 posted by gb on 2013/06/13 09:50:48
is it possible to make rmq using some modern free engine?
that would end up being a free quake replacement, and zenimax would probably sue you for theft of IP.
|