Remove legacy Quake bbox expansion & related item placement and networking upgrades
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 |
---|---|
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