[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 488: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4787: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3922)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4789: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3922)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4790: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3922)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4791: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3922)
InsideQC Forums • View topic - Q1 BSP tree

Q1 BSP tree

Discuss the construction of maps and the tools to create maps for 3D games.

Moderator: InsideQC Admins

Q1 BSP tree

Postby Cobalt » Thu Feb 05, 2015 6:41 pm

Can anyone here explain this or add to my impression of it? I had chatted with LH about it and from what I understand its responsible for how Q1 detects collisions with respect to setsize in that, only point ,player and Shambler size hulls will perform a collision. As a side note, I have concluded that you CAN setsize to any size within reason and dont have to stay in those bouinds as long as the ent is NOT moving. The collision issues where objects start falling through walls haphazardly happen when they are spawned inside another bounding box of another ent or are moving with a non point, player or shambler size.

Lord Havoc says that the Q3 map tree has resolved this and it will detect any hull size collisions. Is there a way to "hack" this in the q1 engine so that all the sizes are collidable in the same way , or would the maps have to be converted to the q3 system?
User avatar
Cobalt
 
Posts: 445
Joined: Wed Jun 10, 2009 2:58 am
Location: New England, USA

Re: Q1 BSP tree

Postby Spike » Thu Feb 05, 2015 7:19 pm

Q2+Q3 don't actually use the bsp tree for collision, it only uses the tree to efficiently find convex brushes against which you might collide, this means that it can safely follow the wrong nodes and no actual harm comes from it.

Q1 uses pure bsp collision and as a result contains 3 separate bsp trees, not just one - point, player, shambler. the brushes that originally formed the map are expanded by the size of the hull before the tree is built. But the real pain is that the most precise tree - the point tree - has the clip brushes removed. clip brushes work by only existing in player+shambler hulls, thus allowing point-sized projectiles through but not monsters nor players.
this is the same problem you find with polygon collision methods too.
While its possible to convert a Q1 map into a Q2 one, doing so always looses the clip brushes, and that often makes the map not worth playing as you end up getting stuck on every corner.

For comparison, doom didn't use its bsp tree for collisions at all. Doom used a 2d blockmap thing that has lists of the various linedefs embedded in them. it just does 2d 'poly' collisions, and its players are cylinders.
.
Spike
 
Posts: 2914
Joined: Fri Nov 05, 2004 3:12 am
Location: UK

Re: Q1 BSP tree

Postby Cobalt » Fri Feb 06, 2015 12:36 am

Thanks Spike.

So I guess its possible but with alot of work.

When you explained the 2d Doom collision thing, it reminded me of the funct in QC EntitiesTouching (), which is what the doors use to detect collisions with each other I believe. I recently modified that code to detect collision with absmin / absmax which seems to me more or less how a .touch field works , at least in my experience. Why couldnt we call a funct like that every frame as the ent moves and compare to world for example, and do collision that way?
Or is this really just the same problem again?
User avatar
Cobalt
 
Posts: 445
Joined: Wed Jun 10, 2009 2:58 am
Location: New England, USA

Re: Q1 BSP tree

Postby frag.machine » Fri Feb 06, 2015 4:07 am

You can split collision handling in Quake in two approachs:

a) entity versus entity - you can set any arbitrary AABB with setsize(), and the engine will use it (be aware though of details like MOVETYPE_FLYMISSILE adding 16 units to the AABB you specified, for example);

b) entity versus world - as Spike said, your AABB is rounded to point, player or shambler size, and collision is tested against the appropriate hull. The relevant hull info is retrieved walking thru the BSP tree.

BTW I never understood why Quake just dont always use the point size hull for collision. If I understand correctly Q2 and Q3 just work this way. Is there any real advantage in terms of performance or memory usage to use the point/player/shambler scheme ? Or was it just a weird idea that could not be ditched without screwing legacy maps ?
I know FrikaC made a cgi-bin version of the quakec interpreter once and wrote part of his website in QuakeC :) (LordHavoc)
User avatar
frag.machine
 
Posts: 2120
Joined: Sat Nov 25, 2006 1:49 pm

Re: Q1 BSP tree

Postby Spike » Fri Feb 06, 2015 4:51 am

.
Spike
 
Posts: 2914
Joined: Fri Nov 05, 2004 3:12 am
Location: UK

Re: Q1 BSP tree

Postby frag.machine » Fri Feb 06, 2015 5:31 am

I know FrikaC made a cgi-bin version of the quakec interpreter once and wrote part of his website in QuakeC :) (LordHavoc)
User avatar
frag.machine
 
Posts: 2120
Joined: Sat Nov 25, 2006 1:49 pm

Re: Q1 BSP tree

Postby Cobalt » Fri Feb 06, 2015 5:58 am

User avatar
Cobalt
 
Posts: 445
Joined: Wed Jun 10, 2009 2:58 am
Location: New England, USA

Re: Q1 BSP tree

Postby Cobalt » Fri Feb 06, 2015 6:57 pm

User avatar
Cobalt
 
Posts: 445
Joined: Wed Jun 10, 2009 2:58 am
Location: New England, USA

Re: Q1 BSP tree

Postby Spiney » Sat Feb 07, 2015 2:01 pm

Q3 lightstyles are fairly usable, they're simply shaders generated by the compiler.
As such, they don't influence the lightgrid and take some perf hit (though should be fine on a modernized renderer, i suppose).
http://q3map2.robotrenegade.com/docs/sh ... tyles.html

Q3 bsp and Q1 toolchains/mapping culture don't mix that well though.

*upd: triggered shader...
http://www.simonoc.com/pages/articles/trigshaders1.htm
http://www.quake3world.com/forum/viewto ... 10&t=44384
tl:dr; globally triggerable shaders in Q3 = sure, triggerable lightstyles in Q3 = nope.
Last edited by Spiney on Sun Feb 08, 2015 3:27 pm, edited 2 times in total.
Spiney
 
Posts: 63
Joined: Mon Feb 13, 2012 1:35 pm

Re: Q1 BSP tree

Postby Spike » Sat Feb 07, 2015 3:35 pm

q3 lightstyles are perhaps usable, but they're still not switchable.
wads+textures is another issue for Q1 mappers trying to create Q3bsps instead, which is probably a bigger annoyance to anyone trying to make q3 bsps with a q1 .map tool.
.
Spike
 
Posts: 2914
Joined: Fri Nov 05, 2004 3:12 am
Location: UK

Re: Q1 BSP tree

Postby mankrip » Sun Feb 08, 2015 5:40 am

Very informative thread. I always forget to think about the collision hulls stuff, even though they make it harder to create games with different gameplay.

Q2 BSP seems to be the way to go for original games. Still familiar to Q1 mappers, but without such gameplay limitations.
Ph'nglui mglw'nafh mankrip Hell's end wgah'nagl fhtagn.
==-=-=-=-=-=-=-=-=-=-==
/ /
User avatar
mankrip
 
Posts: 915
Joined: Fri Jul 04, 2008 3:02 am

Re: Q1 BSP tree

Postby Cobalt » Fri Feb 27, 2015 4:15 pm

Hrm, thanks to those who replied. I guess there really is no upgrade or modification possible either via an engine hack or alteration of the BSP spec that would resolve the clipping issues or collision issues I was looking to overcome. Sounds like any attempt to do so would mean rewriting many things and simpler to use q2 or q3 map formats...however to my knowledge the original Quake ID maps have not been converted to any of those and I am guessing its just not possible to do so.
User avatar
Cobalt
 
Posts: 445
Joined: Wed Jun 10, 2009 2:58 am
Location: New England, USA

Re: Q1 BSP tree

Postby Dr. Shadowborg » Fri Feb 27, 2015 7:29 pm

User avatar
Dr. Shadowborg
InsideQC Staff
 
Posts: 1120
Joined: Sat Oct 16, 2004 3:34 pm

Re: Q1 BSP tree

Postby goldenboy » Sat Feb 28, 2015 3:24 pm

It is quite possible to convert q1 -> q3 and the Quake maps are GPL anyway.
User avatar
goldenboy
 
Posts: 924
Joined: Fri Sep 05, 2008 11:04 pm
Location: Kiel

Re: Q1 BSP tree

Postby mankrip » Sun Mar 01, 2015 12:16 am

Dr. Shadowborg: It's only a problem if you distribute the registered episode's textures with them.

Use some placeholder textures with the same names instead, and you're fine.
Ph'nglui mglw'nafh mankrip Hell's end wgah'nagl fhtagn.
==-=-=-=-=-=-=-=-=-=-==
/ /
User avatar
mankrip
 
Posts: 915
Joined: Fri Jul 04, 2008 3:02 am

Next

Return to Mapping

Who is online

Users browsing this forum: No registered users and 1 guest