]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Corrections and documentation for gravity etc in physicsCPMA.cfg and physicsQ3.cfg
authorbones_was_here <bones_was_here@xonotic.au>
Thu, 16 Feb 2023 16:27:59 +0000 (02:27 +1000)
committerbones_was_here <bones_was_here@xonotic.au>
Fri, 17 Feb 2023 07:41:13 +0000 (17:41 +1000)
Adds sv_track_canjump to configs that lacked it.

physicsCPMA.cfg
physicsOverkill.cfg
physicsQ3.cfg
physicsX.cfg
physicsX010.cfg
physicsX07.cfg
physicsXDF.cfg
physicsXDFLight.cfg

index 30a18cab993a223fbb779e3a3febefdc3043d58e..559ce3a37c78464f241c7f476e19595047b08c82 100644 (file)
@@ -1,13 +1,37 @@
 g_mod_physics CPMA
 // these values match CPMA
 
-sv_gravity 800
+// CPMA uses gravity 800 but the strength of Q3 gravity is frametime-dependent.
+// It also differs slightly between ascending and descending, which we don't attempt to replicate.
+// Modern CPMA has frametime-independent physics that ~match 125fps frametime-dependent.
+// DeFRaG still has frametime-dependent physics and DFWC rules mandate 125fps.
+// 125 * round(800/125) = 750 simulates 125fps Q3 gravity in Xonotic,
+// tested mathematically by k9 and ingame with printf by bones_was_here.
+
+// Jump height:
+// Taking into account the effect of velocity snapping, a general formula for origin.z k frames after jumping can be derived:
+// kT(270 + (round(gT) - GT)/2) - 1/2 k^2 T round(gT)
+// Inputting g=750, T=1/125 and solving on the 45th frame, we find that the jump height in Quake 3 is 48.528 units.
+// Q3 test results: 48.527999872 in every test (at end of frame).
+// Xonotic test results: 48.6 as expected by (270^2)/(2*750) (see: physicsX.cfg)
+
+// Jump distance/duration:
+// The above formula can also be used to calculate that landing in Q3 occurs after 89.93333... 8ms frames,
+// for a duration of 720ms at end of frame, as predicted by (2*270)/750 (see: physicsX.cfg),
+// so the expected distance is 230.4 units at 320ups.
+// Q3 test results: 230.405274 230.405274 230.404723 230.404969 (at end of frame when ONGROUND is set).
+// Xonotic test results: 230.39637 in every test (Xonotic can set ONGROUND earlier in the frame, when the collision occurs).
+
+sv_gravity 750
+
 sv_maxspeed 320
 sv_maxairspeed 320
 sv_stopspeed 100
-sv_accelerate 15
+sv_accelerate 15 // from cpm1_dev_docs
 sv_airaccelerate 1
-sv_friction 8
+// The cpm1_dev_docs.zip (only CPMA source code release) used friction 8,
+// but friction is 6 in all ~modern CPMA releases, and in DeFRaG CPM.
+sv_friction 6
 edgefriction 1
 sv_stepheight 18
 sv_jumpvelocity 270
@@ -17,11 +41,11 @@ sv_waterfriction 1
 sv_airaccel_sideways_friction 0
 sv_airaccel_qw 1
 sv_airaccel_qw_stretchfactor 0
-sv_airstopaccelerate 2.5
-sv_airstrafeaccelerate 70
-sv_maxairstrafespeed 30
+sv_airstopaccelerate 2.5   // from cpm1_dev_docs
+sv_airstrafeaccelerate 70  // from cpm1_dev_docs strafeaccelerate
+sv_maxairstrafespeed 30    // from cpm1_dev_docs wishspeed
 sv_airstrafeaccel_qw 0
-sv_aircontrol 150
+sv_aircontrol 150          // from cpm1_dev_docs
 sv_aircontrol_penalty 0
 sv_aircontrol_power 2
 sv_aircontrol_backwards 0
@@ -34,10 +58,13 @@ sv_warsowbunny_backtosideratio 0.8
 sv_friction_on_land 0
 sv_friction_slick 0
 sv_doublejump 0
-sv_jumpspeedcap_min ""
+// match the downhill ramp jumping behaviour of CPMA
+sv_jumpspeedcap_min 0
 sv_jumpspeedcap_max ""
-sv_jumpspeedcap_max_disable_on_ramps 0
+// CPMA has ramp jumping
+sv_jumpspeedcap_max_disable_on_ramps 1
+// FIXME: Q3 teleporters _set_ speed to 400, not cap it
 g_teleport_maxspeed 400
-sv_track_canjump 0
+sv_track_canjump 1
 sv_gameplayfix_stepdown_maxspeed 0
 g_movement_highspeed_q3_compat 1
index be6ea49633831011627d7976ff60ca5d00a1c27e..aa97fb15b4882198f22757aea2be809eca3e5a08 100644 (file)
@@ -52,5 +52,6 @@ sv_jumpspeedcap_min ""
 sv_jumpspeedcap_max ""
 sv_jumpspeedcap_max_disable_on_ramps 1
 g_teleport_maxspeed 0
+sv_track_canjump 0
 sv_gameplayfix_stepdown_maxspeed 400
 g_movement_highspeed_q3_compat 0
index 76ee484ec6261c15864e660e499ee7806e6583df..08fdde547eda7a7f2f9b193f52f2ef3851992875 100644 (file)
@@ -1,7 +1,8 @@
 g_mod_physics Q3
 // these values match Quake3
 
-sv_gravity 800
+// See physicsCPMA.cfg for the source of this sv_gravity setting
+sv_gravity 750
 sv_maxspeed 320
 sv_maxairspeed 320
 sv_stopspeed 100
@@ -17,8 +18,10 @@ sv_waterfriction 1
 sv_airaccel_sideways_friction 0
 sv_airaccel_qw 1
 sv_airaccel_qw_stretchfactor 0
-sv_airstopaccelerate 0
-sv_airstrafeaccelerate 0
+// Q3A doesn't have airstopaccelerate and strafeaccelerate
+// but they're added in cpm1_dev_docs.zip with values 1 and 1 in VQ3 mode
+sv_airstopaccelerate 1
+sv_airstrafeaccelerate 1
 sv_maxairstrafespeed 0
 sv_airstrafeaccel_qw 0
 sv_aircontrol 0
@@ -35,9 +38,11 @@ sv_friction_on_land 0
 sv_friction_slick 0
 sv_doublejump 0
 sv_jumpspeedcap_min ""
-sv_jumpspeedcap_max ""
+// VQ3 has no ramp jumping
+sv_jumpspeedcap_max 270
 sv_jumpspeedcap_max_disable_on_ramps 0
-g_teleport_maxspeed 320
-sv_track_canjump 0
+// FIXME: Q3 teleporters _set_ speed to 400, not cap it
+g_teleport_maxspeed 400
+sv_track_canjump 1
 sv_gameplayfix_stepdown_maxspeed 0
-g_movement_highspeed_q3_compat 0
+g_movement_highspeed_q3_compat 1
index 252c2e7e9bc044d6806ea7e7ae596afac22eab26..21ded2a8c859376b438e9b49d7db39e7393bd3b3 100644 (file)
@@ -53,5 +53,6 @@ sv_jumpspeedcap_min ""
 sv_jumpspeedcap_max ""
 sv_jumpspeedcap_max_disable_on_ramps 1
 g_teleport_maxspeed 0
+sv_track_canjump 0
 sv_gameplayfix_stepdown_maxspeed 400
 g_movement_highspeed_q3_compat 0
index 8b81ca0421b71b4c5f9225313ed8a4559571cb0d..e350037e60e2da0591270e83014e2c1fcfc6595e 100644 (file)
@@ -46,5 +46,6 @@ sv_jumpspeedcap_min ""
 sv_jumpspeedcap_max ""
 sv_jumpspeedcap_max_disable_on_ramps 1
 g_teleport_maxspeed 0
+sv_track_canjump 0
 sv_gameplayfix_stepdown_maxspeed 400
 g_movement_highspeed_q3_compat 0
index aa582bd991ddad8e5dac2cae8ef7ba86aaeaa6f3..c7c2250e7c91a74f47cc64a8f6600f2a2f39464c 100644 (file)
@@ -52,5 +52,6 @@ sv_jumpspeedcap_min ""
 sv_jumpspeedcap_max ""
 sv_jumpspeedcap_max_disable_on_ramps 1
 g_teleport_maxspeed 0
+sv_track_canjump 0
 sv_gameplayfix_stepdown_maxspeed 400
 g_movement_highspeed_q3_compat 0
index 8bbe28eaa41d1807e79c4e6dcd4f7ac3c38e00cc..1436bbdcb85bd00952a04855674d21957a779820 100644 (file)
@@ -44,6 +44,7 @@ sv_jumpspeedcap_min 0
 sv_jumpspeedcap_max 0.5
 sv_jumpspeedcap_max_disable_on_ramps 1
 g_teleport_maxspeed 600
+sv_track_canjump 0
 sv_gameplayfix_stepdown_maxspeed 400
 // needed for correct q3 haste simulation
 g_movement_highspeed_q3_compat 1
index dd657afaf71a97178c029cb38b957a4874dbd31b..1c86e786d1051d79643a7d0199ff4669421f7674 100644 (file)
@@ -44,5 +44,6 @@ sv_jumpspeedcap_min ""
 sv_jumpspeedcap_max ""
 sv_jumpspeedcap_max_disable_on_ramps 1
 g_teleport_maxspeed 0
+sv_track_canjump 0
 sv_gameplayfix_stepdown_maxspeed 400
 g_movement_highspeed_q3_compat 0