droptofloor(): refactor and use correct conditions for each BSP format
Behaviour changes:
Although startsolid is used by Q3 and Q2, it's too strict for Quake
which used allsolid, so we now use the correct conditions for each BSP
format.
The downtrace endpoint is now calculated after
sv_gameplayfix_droptofloorstartsolid_nudgetocorrect.
The downtrace endpoint is now offset when using the
sv_gameplayfix_droptofloorstartsolid fallback path, otherwise it would
trace a diagonal line for entities whose origin is not horizontally centred
in their bbox.
droptofloor(): add/improve warnings for badly placed entities
In the past, sv_gameplayfix_droptofloorstartsolid and
sv_gameplayfix_droptofloorstartsolid_nudgetocorrect were enabled by
default when playing Quake, which seems to have led to some maps
depending on them.
These need to be off by default in Quake to avoid gameplay changes,
but we can at least warn people about map entity issues.
With the expansion approach we need to compare to separation to make
"good location" detection reliable, partly to avoid float precision
problems, partly to avoid compatibility problems with normal TraceBox.
For example: we drop an entity to floor successfully with TraceBox, but
then NudgeOutOfSolid decides it's in solid.
Also updated the startsolid conditions to suit the 2-pass approach.
bones_was_here [Tue, 24 Jan 2023 01:45:32 +0000 (11:45 +1000)]
Combine NetConn_UpdateSockets_Client() and NetConn_cl_netport_Callback()
These blocks must run together to avoid bug https://gitlab.com/xonotic/darkplaces/-/issues/376
Also, after a057e4757b55a90cbcdc287b3fdf54ccc2682315 the only
NetConn_UpdateSockets_Client() call site was in NetConn_cl_netport_Callback().
Due to previous improvements by LH & Cloudwalk, the behaviour is now better:
the new QC command appears in the console in addition to the engine one,
the new command takes priority and what's going on is clearer.
When the CSQC VM shuts down, the registered command is removed.
bones_was_here [Mon, 7 Nov 2022 09:23:16 +0000 (19:23 +1000)]
Improve reliability and documentation of portal camera eyes
Not all traces will succeed so we need to add the eye if a trace
succeeded within some recent time period, instead of only adding it when
a trace succeeded in the current frame.
Ashley 'LadyHavoc' Hale [Tue, 10 May 2022 20:31:29 +0000 (13:31 -0700)]
Optimize VectorNormalize macros by not doing the sqrt on 0 length, this also means it should be more friendly to the CPU intrinsics for 1/sqrt in a single instruction
bones_was_here [Sun, 27 Mar 2022 15:46:28 +0000 (01:46 +1000)]
Merge PR 'Add a third masterextra and default it to dpm.dpmaster.org'
dpm.dpmaster.org has been serving as a xonotic master (as
dpm4.xonotic.xyz and dpm6.xonotic.xyz) for three months now, and I offer
it here in hopes it's of use.
Gary Moon [Sun, 20 Mar 2022 18:49:32 +0000 (14:49 -0400)]
Add a third masterextra and default it to dpm.dpmaster.org
dpm.dpmaster.org has been serving as a xonotic master (as
dpm4.xonotic.xyz and dpm6.xonotic.xyz) for three months now, and I offer
it here in hopes it's of use.
bones_was_here [Fri, 18 Mar 2022 07:28:57 +0000 (17:28 +1000)]
Add cvar snd_cdautopause: optional CD track pause during game pause
Previously it was mandatory and if not desired, had to be hacked around
with stuffcmd.
Also fixes:
- the CD track always being resumed when resuming from game pause,
even when muted, Ref: CDAudio_SetVolume()
- bgmvolume < 0 not pausing the CD track
Starting CL_MeshEntities any later can cause the bug during r_restart.
ca03733fba98709e25d9a02882ac947f4144af6a effectively added dependency
of the Models module on the CL_MeshEntities module,
at least in certain situations where starting the Models module
results in calls to Draw_CachePic() and DrawQ_*()
which trigger the bug when they call Mod_Mesh_GetTexture().
Cloudwalk [Mon, 21 Feb 2022 02:30:56 +0000 (21:30 -0500)]
README, sdl, sys, makefile: Bring up macOS support
* Fixed up the makefile to support modern macOS builds
* Fixed up sys.h to detect macOS properly
* Added macOS build instructions. Dependencies are now fetched using Homebrew.
* Remove now-unneeded SDLMain.h and .m files
Cloudwalk [Fri, 4 Feb 2022 04:07:56 +0000 (23:07 -0500)]
README: Remove Discord invite link. The Discord server is now deprecated
I'm unable to sustain the DarkPlaces engine community on Discord. They have
falsely disabled my main account and now my second account, this time
without an email explaining the reason. I have a 3rd account that is still
active. They have not responded to my emails asking for them to review
the ban of my main account and they have the gall to nuke my second
account as well.
They are flooded with support tickets likely because it is incredibly easier
to hijack a Discord account than any other account due to the simple fact
that Discord does NOT require email verification to change passwords. God
only knows what other horrors lie beneath that Eldritch abomination of
duct-taped JavaScript.
I was not banned from Discord as I was able to create the third account using
the same IP address. They ban IPs if you're banned from Discord. I can no
longer, in good conscience, give this shit, incompetent, bullshit company
a single neuron of mindshare going forward. Other arrangements for a community
hangout are to be determined but are not available at this time. The IRC,
obviously, remains available.
Until they get their shit together (if they do), FUCK Discord and FUCK
everything they stand for.
bones_was_here [Sun, 16 Jan 2022 20:54:53 +0000 (06:54 +1000)]
Merge PR 'sv_gameplayfix_stepmultipletimes 1: Prevent players moving too far/fast when stepping up a staircase'
After the player made some horizontal progress, and before stepping up, it's necessary to recalculate the remaining time and distance for the move. Previously the step up made the player travel (up to) nearly the move's full distance, again.
bones_was_here [Sun, 16 Jan 2022 20:52:00 +0000 (06:52 +1000)]
Merge PR 'sv_gameplayfix_stepmultipletimes 1: Make stepping up while jumping reliable'
When the player is hard up against a solid surface trying to climb up, they are blocked from gaining any significant speed by the solid, so the distance they could potentially move into the solid at that speed can be well under 0.03125 units, causing the step up to fail.
The same can happen when the player is stepping up with less than 0.03125 units of distance left on their move, causing them to stop dead when climbing stairs at speed with sv_gameplayfix_stepmultipletimes 1.
bones_was_here [Wed, 12 Jan 2022 15:26:38 +0000 (01:26 +1000)]
Doxygen: disable CALL_GRAPH and CALLER_GRAPH
Many of these graphs are too huge and complex to be readable,
and they use > 8GiB on disk and a lot of CPU time to generate.
They can be enabled for specific funcs if required.
After the player made some horizontal progress, and before stepping up, it's necessary to recalculate the remaining time and distance for the move. Previously the step up made the player travel (up to) nearly the move's full distance, again.
Fixes https://github.com/DarkPlacesEngine/darkplaces/issues/9
sv_gameplayfix_stepmultipletimes 1: players travel further than their velocity should allow #9
When the player is hard up against a solid surface trying to climb up, they are blocked from gaining any significant speed by the solid, so the distance they could potentially move into the solid at that speed can be well under 0.03125 units, causing the step up to fail.
The same can happen when the player is stepping up with less than 0.03125 units of distance left on their move, causing them to stop dead when climbing stairs at speed with sv_gameplayfix_stepmultipletimes 1.
Fixes https://github.com/DarkPlacesEngine/darkplaces/issues/8
Stepping up is unreliable #8