News | Forum | People | FAQ | Links | Search | Register | Log in
Coding Help
This is a counterpart to the "Mapping Help" thread. If you need help with QuakeC coding, or questions about how to do some engine modification, this is the place for you! We've got a few coders here on the forum and hopefully someone knows the answer.
First | Previous | Next | Last
Solid To Solid 
Yeah, this is the limit of how the Quake engine operates. You basically have two types of solid: SOLID_BBOX and SOLID_BSP. SOLID_BBOX collide with both, but SOLID_BSP only collide with SOLID_BBOX, they do not collide with each other.

This was necessary in 1996 because it allowed for a simple and speedy collision system, using pre-computation on BSP objects to avoid any complex intersection testing. Although a modern engine could in theory change that, in practice almost all maps involve doors or platforms that intersect the world geometry when they move. Not many authors would invest time writing a fairly complex feature that would immediately break anything pre-existing.

This probably prevents you from writing a mod which supports a general-purpose pushable BSP object. But all hope is not lost. You might be willing to settle for a "hack" - a setup in a particular map that gives the illusion that you've solved the impossible problem. Like any good magic trick, it involves fooling the audience by performing an elaborate amount of hidden preparation that defies belief.

In particular, you would need to constrain the pushable object to a limited section of the map, which you have caged in with invisible BBOX solids on the floors and all walls. These must be axis-aligned, no angles, so you have to build the area of the map with that limitation in mind (and ideally sell the illusion with misdirection - make the environment feel less boxy than it actually is). 
SOLID_BSP 
I made some progress with SOLID_BBOX but the player slides on top of the pushable instead of walking.

I'm now experimenting with SOLID_BSP and MOVETYPE_PUSH but this has problems with animating the fall. I'm trying to write something that will call SUB_CalcMove(). And brush collision detection will probably not work either. 
The Pushable Now Works Fairly Well! 
So I finally managed to make this work, with some simplifications and workarounds. The pushable drops on the ground with constant speed only and collision against walls is only checked from the bounding box's corners (so if the wall is narrower, it will go through the wall) but this is good enough for most maps. And I'm planning to still make a few more improvements.

The latest code is in my github if anyone wants to take a look:
https://github.com/ValentineQwerty/vqmdk/blob/master/qc/entities/pushables.qc 
Works Great! 
Fun for puzzles.
I could never archive this kind of thing.
Sorry not slopes. 
First | Previous | Next | Last
You must be logged in to post in this thread.
Website copyright © 2002-2026 John Fitzgibbons. All posts are copyright their respective authors.