Skip to content

Remove legacy Quake bbox expansion & related item placement and networking upgrades

bones_was_here requested to merge bones_was_here/sv_legacy_bbox_expand_4 into master

This is a much nicer version of !1131 (merged) which was mostly reverted prior to tagging 0.8.6. This version supports true zero-size projectiles and doesn't need to change any projectile sizes or collision logic. Item placement should be ideal when the server runs DP master, it can also run on div0-stable with less than ideal results on some maps. 0.8.6 clients are fully compatible.

items: Apply vertical offset on Q3 maps to match Q3 bbox floor height

The lack of this caused high-placed items to be stuck in a "ceiling" brush in a few cases (problematic for droptofloor). It also meant suspended items were too high, causing cases where a jump pad sent the player slightly under the item, with nothing they could do to reach it.

Rewrite the QC port of droptofloor()

This uses DP_QC_NUDGEOUTOFSOLID to achieve better results (especially noticeable with sv_legacy_bbox_expand 0) in less CPU time.

Documents the design. Removes legacy code paths. Adds warnings for badly placed items. Implements Quake-compliant behaviour for each BSP format.

See also: darkplaces!144 (merged)

Removes hacky workaround for #2774 (closed) and thus depends on !1245 (merged)

DP master DP div0-stable
master_stormkeep-0.8.6_1 div0-stable_stormkeep-0.8.6_1
master_stormkeep-0.8.6_2 div0-stable_stormkeep-0.8.6_2
master_stormkeep-0.8.6_3 div0-stable_stormkeep-0.8.6_3

Disable sv_legacy_bbox_expand

This gives QC full control of bboxes and makes SVQC and CSQC behaviour consistent.

Groups all the sv_gameplayfix cvars together in xonotic-server.cfg.

Adds a note about sv_gameplayfix_droptofloorstartsolid (cvar for unused engine feature).

Remove legacy Quake bbox expansion: bmodel entities

Removes duplication of the box + '1 1 1' and boxesoverlap code. This is handled in WarpZoneLib_ExactTrigger_Touch().

Remove legacy Quake bbox expansion: physics

Remove legacy Quake bbox expansion: bot navigation

Remove legacy Quake bbox expansion: items (and buffs)

Adds a Small 48x48x48 item bbox which is used for 5 and 25 health and armor items. This is the biggest horizontal size that fits in the 25h alcove on finalrage.

Changes powerup, buff and mega pickups to all have the same height. This will make it cheaper to network item bboxes to CSQC.

items: remove blind nudging of items during spawn

In some cases this isn't enough to fix a bad placement, in rare cases it can cause a bad placement because it doesn't consider the brushwork near the item.

It's replaced by smart nudging (DP_QC_NUDGEOUTOFSOLID).

items: use correct bboxes in CSQC

This only needs to send 2 bits because there's now only 3 item bbox sizes. Fixes some prediction errors for items with physics (loot).

Remove legacy Quake bbox expansion: CTF

This adds a feature: if the flag is dropped in a place its bbox doesn't fit, the player's bbox (crouched or full size) is used as a fallback. This prevents it getting stuck so physics can still move it, and it will be expanded to full size if it's moved to a place where it does fit.

This MR adds this to flags only, because they already had half the code. I'll add it to other big ents that players can drop (keys, balls, powerups) in another MR.

Remove legacy Quake bbox expansion: KH

Remove legacy Quake bbox expansion: KA

Gives ball a symmetrical bbox suitable for sv_legacy_bbox_expand 0

Remove legacy Quake bbox expansion: DOM

Edited by bones_was_here

Merge request reports