g_mod_physics CPMA // these values match CPMA // 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 // from cpm1_dev_docs sv_airaccelerate 1 // 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 sv_jumpvelocity_crouch 0 sv_wateraccelerate 4 sv_waterfriction 1 sv_airaccel_sideways_friction 0 sv_airaccel_qw 1 sv_airaccel_qw_stretchfactor 0 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 // from cpm1_dev_docs sv_aircontrol_penalty 0 sv_aircontrol_power 2 sv_aircontrol_backwards 0 sv_aircontrol_sidewards 0 sv_airspeedlimit_nonqw 0 sv_warsowbunny_turnaccel 0 sv_warsowbunny_accel 0.1593 sv_warsowbunny_topspeed 925 sv_warsowbunny_backtosideratio 0.8 sv_friction_on_land 0 sv_friction_slick 0 sv_doublejump 0 // match the downhill ramp jumping behaviour of CPMA sv_jumpspeedcap_min 0 sv_jumpspeedcap_max "" // CPMA has ramp jumping sv_jumpspeedcap_max_disable_on_ramps 1 g_teleport_maxspeed 400 g_teleport_minspeed 400 sv_track_canjump 1 sv_gameplayfix_stepdown_maxspeed 0 g_movement_highspeed_q3_compat 1