[nexuiz-commits] r6680 - in trunk/data: . qcsrc/server
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Thu May 7 04:28:55 EDT 2009
Author: div0
Date: 2009-05-07 04:28:53 -0400 (Thu, 07 May 2009)
New Revision: 6680
Added:
trunk/data/physicsWarsow.cfg
trunk/data/physicsWarsowClassicBunny.cfg
Modified:
trunk/data/physics15.cfg
trunk/data/physics151.cfg
trunk/data/physics151b.cfg
trunk/data/physics16rc1.cfg
trunk/data/physics25.cfg
trunk/data/physicsCPMA.cfg
trunk/data/physicsHavoc.cfg
trunk/data/physicsQ.cfg
trunk/data/physicsQ3.cfg
trunk/data/physicsQBF.cfg
trunk/data/physicsQBFplus.cfg
trunk/data/physicsQBR.cfg
trunk/data/qcsrc/server/cl_physics.qc
trunk/data/qcsrc/server/sv_main.qc
Log:
Wsw-like physics modes (needs current engine from svn)
Modified: trunk/data/physics15.cfg
===================================================================
--- trunk/data/physics15.cfg 2009-05-07 07:15:02 UTC (rev 6679)
+++ trunk/data/physics15.cfg 2009-05-07 08:28:53 UTC (rev 6680)
@@ -1,3 +1,4 @@
+// Nexuiz 1.5 physics
sv_maxspeed 400
sv_maxairspeed 50
sv_accelerate 5.5
@@ -6,10 +7,13 @@
edgefriction 1
sv_stepheight 34
sv_jumpvelocity 300
+sv_wateraccelerate -1
+sv_waterfriction -1
sv_airaccel_sideways_friction 0
sv_airaccel_qw 0
sv_airstopaccelerate 0
sv_airstrafeaccelerate 0
sv_maxairstrafespeed 0
sv_aircontrol 0
+sv_warsowbunny_turnaccel 0
set sv_friction_on_land 0.25
Modified: trunk/data/physics151.cfg
===================================================================
--- trunk/data/physics151.cfg 2009-05-07 07:15:02 UTC (rev 6679)
+++ trunk/data/physics151.cfg 2009-05-07 08:28:53 UTC (rev 6680)
@@ -1,3 +1,4 @@
+// experimental post-Nexuiz 1.5 physics (never released)
sv_maxspeed 400
sv_maxairspeed 50
sv_accelerate 5.5
@@ -6,10 +7,13 @@
edgefriction 1
sv_stepheight 34
sv_jumpvelocity 300
+sv_wateraccelerate -1
+sv_waterfriction -1
sv_airaccel_sideways_friction 0
sv_airaccel_qw 0
sv_airstopaccelerate 0
sv_airstrafeaccelerate 0
sv_maxairstrafespeed 0
sv_aircontrol 0
-sv_friction_on_land 0
+sv_warsowbunny_turnaccel 0
+set sv_friction_on_land 0
Modified: trunk/data/physics151b.cfg
===================================================================
--- trunk/data/physics151b.cfg 2009-05-07 07:15:02 UTC (rev 6679)
+++ trunk/data/physics151b.cfg 2009-05-07 08:28:53 UTC (rev 6680)
@@ -1,3 +1,4 @@
+// experimental post-Nexuiz 1.5 physics (never released)
sv_maxspeed 400
sv_maxairspeed 25
sv_accelerate 5.5
@@ -6,10 +7,13 @@
edgefriction 1
sv_stepheight 34
sv_jumpvelocity 300
+sv_wateraccelerate -1
+sv_waterfriction -1
sv_airaccel_sideways_friction 0
sv_airaccel_qw 0
sv_airstopaccelerate 0
sv_airstrafeaccelerate 0
sv_maxairstrafespeed 0
sv_aircontrol 0
+sv_warsowbunny_turnaccel 0
set sv_friction_on_land 0
Modified: trunk/data/physics16rc1.cfg
===================================================================
--- trunk/data/physics16rc1.cfg 2009-05-07 07:15:02 UTC (rev 6679)
+++ trunk/data/physics16rc1.cfg 2009-05-07 08:28:53 UTC (rev 6680)
@@ -1,3 +1,4 @@
+// experimental post-Nexuiz 1.5 physics (never released)
sv_maxspeed 400
sv_maxairspeed 50
sv_accelerate 5.5
@@ -6,10 +7,13 @@
edgefriction 1
sv_stepheight 34
sv_jumpvelocity 300
+sv_wateraccelerate -1
+sv_waterfriction -1
sv_airaccel_sideways_friction 0
sv_airaccel_qw 0
sv_airstopaccelerate 0
sv_airstrafeaccelerate 0
sv_maxairstrafespeed 0
sv_aircontrol 0
-sv_friction_on_land 0.2
+sv_warsowbunny_turnaccel 0
+set sv_friction_on_land 0.2
Modified: trunk/data/physics25.cfg
===================================================================
--- trunk/data/physics25.cfg 2009-05-07 07:15:02 UTC (rev 6679)
+++ trunk/data/physics25.cfg 2009-05-07 08:28:53 UTC (rev 6680)
@@ -1,3 +1,4 @@
+// Nexuiz 2.5 physics
sv_maxspeed 400
sv_maxairspeed 220
sv_accelerate 8
@@ -6,10 +7,13 @@
edgefriction 1
sv_stepheight 34
sv_jumpvelocity 300
+sv_wateraccelerate -1
+sv_waterfriction -1
sv_airaccel_sideways_friction 0.35
sv_airaccel_qw 0.95
sv_airstopaccelerate 0
sv_airstrafeaccelerate 0
sv_maxairstrafespeed 0
sv_aircontrol 0
+sv_warsowbunny_turnaccel 0
set sv_friction_on_land 0
Modified: trunk/data/physicsCPMA.cfg
===================================================================
--- trunk/data/physicsCPMA.cfg 2009-05-07 07:15:02 UTC (rev 6679)
+++ trunk/data/physicsCPMA.cfg 2009-05-07 08:28:53 UTC (rev 6680)
@@ -7,10 +7,13 @@
edgefriction 1
sv_stepheight 18
sv_jumpvelocity 270
+sv_wateraccelerate -1
+sv_waterfriction -1
sv_airaccel_sideways_friction 0
sv_airaccel_qw 1
sv_airstopaccelerate 2.5
sv_airstrafeaccelerate 70
sv_maxairstrafespeed 30
sv_aircontrol 150
+sv_warsowbunny_turnaccel 0
set sv_friction_on_land 0
Modified: trunk/data/physicsHavoc.cfg
===================================================================
--- trunk/data/physicsHavoc.cfg 2009-05-07 07:15:02 UTC (rev 6679)
+++ trunk/data/physicsHavoc.cfg 2009-05-07 08:28:53 UTC (rev 6680)
@@ -1,3 +1,4 @@
+// Nexuiz Havoc physics (work in progress)
sv_maxspeed 400
sv_maxairspeed 220
sv_accelerate 8
@@ -6,10 +7,13 @@
edgefriction 1
sv_stepheight 34
sv_jumpvelocity 300
+sv_wateraccelerate -1
+sv_waterfriction -1
sv_airaccel_sideways_friction 0.65
sv_airaccel_qw 0.95
sv_airstopaccelerate 0
sv_airstrafeaccelerate 0
sv_maxairstrafespeed 0
sv_aircontrol 0
+sv_warsowbunny_turnaccel 0
set sv_friction_on_land 0
Modified: trunk/data/physicsQ.cfg
===================================================================
--- trunk/data/physicsQ.cfg 2009-05-07 07:15:02 UTC (rev 6679)
+++ trunk/data/physicsQ.cfg 2009-05-07 08:28:53 UTC (rev 6680)
@@ -1,3 +1,4 @@
+// Quake 1
sv_maxspeed 400
sv_maxairspeed 250
sv_accelerate 5.5
@@ -6,10 +7,13 @@
edgefriction 1
sv_stepheight 34
sv_jumpvelocity 300
+sv_wateraccelerate -1
+sv_waterfriction -1
sv_airaccel_sideways_friction 0
sv_airaccel_qw 1
sv_airstopaccelerate 0
sv_airstrafeaccelerate 0
sv_maxairstrafespeed 0
sv_aircontrol 0
+sv_warsowbunny_turnaccel 0
set sv_friction_on_land 0
Modified: trunk/data/physicsQ3.cfg
===================================================================
--- trunk/data/physicsQ3.cfg 2009-05-07 07:15:02 UTC (rev 6679)
+++ trunk/data/physicsQ3.cfg 2009-05-07 08:28:53 UTC (rev 6680)
@@ -7,10 +7,13 @@
edgefriction 1
sv_stepheight 18
sv_jumpvelocity 270
+sv_wateraccelerate -1
+sv_waterfriction -1
sv_airaccel_sideways_friction 0
sv_airaccel_qw 1
sv_airstopaccelerate 0
sv_airstrafeaccelerate 0
sv_maxairstrafespeed 0
sv_aircontrol 0
+sv_warsowbunny_turnaccel 0
set sv_friction_on_land 0
Modified: trunk/data/physicsQBF.cfg
===================================================================
--- trunk/data/physicsQBF.cfg 2009-05-07 07:15:02 UTC (rev 6679)
+++ trunk/data/physicsQBF.cfg 2009-05-07 08:28:53 UTC (rev 6680)
@@ -1,3 +1,4 @@
+// Quake, Bunny Fixed (feels very slow)
sv_maxspeed 400
sv_maxairspeed 250
sv_accelerate 5.5
@@ -6,10 +7,13 @@
edgefriction 1
sv_stepheight 34
sv_jumpvelocity 300
+sv_wateraccelerate -1
+sv_waterfriction -1
sv_airaccel_sideways_friction 0.8
sv_airaccel_qw 1
sv_airstopaccelerate 0
sv_airstrafeaccelerate 0
sv_maxairstrafespeed 0
sv_aircontrol 0
+sv_warsowbunny_turnaccel 0
set sv_friction_on_land 0
Modified: trunk/data/physicsQBFplus.cfg
===================================================================
--- trunk/data/physicsQBFplus.cfg 2009-05-07 07:15:02 UTC (rev 6679)
+++ trunk/data/physicsQBFplus.cfg 2009-05-07 08:28:53 UTC (rev 6680)
@@ -1,3 +1,4 @@
+// Quake, Bunny Fixed Plus (faster using forward hopping)
sv_maxspeed 400
sv_maxairspeed 220
sv_accelerate 5.5
@@ -6,10 +7,13 @@
edgefriction 1
sv_stepheight 34
sv_jumpvelocity 300
+sv_wateraccelerate -1
+sv_waterfriction -1
sv_airaccel_sideways_friction 0.5
sv_airaccel_qw 0.93
sv_airstopaccelerate 0
sv_airstrafeaccelerate 0
sv_maxairstrafespeed 0
sv_aircontrol 0
+sv_warsowbunny_turnaccel 0
set sv_friction_on_land 0
Modified: trunk/data/physicsQBR.cfg
===================================================================
--- trunk/data/physicsQBR.cfg 2009-05-07 07:15:02 UTC (rev 6679)
+++ trunk/data/physicsQBR.cfg 2009-05-07 08:28:53 UTC (rev 6680)
@@ -1,3 +1,4 @@
+// Quake, Bunny Reintroduced (Nexuiz 2.0 to 2.4.2 physics)
sv_maxspeed 400
sv_maxairspeed 220
sv_accelerate 5.5
@@ -6,10 +7,13 @@
edgefriction 1
sv_stepheight 34
sv_jumpvelocity 300
+sv_wateraccelerate -1
+sv_waterfriction -1
sv_airaccel_sideways_friction 0.3
sv_airaccel_qw 0.93
sv_airstopaccelerate 0
sv_airstrafeaccelerate 0
sv_maxairstrafespeed 0
sv_aircontrol 0
+sv_warsowbunny_turnaccel 0
set sv_friction_on_land 0
Added: trunk/data/physicsWarsow.cfg
===================================================================
--- trunk/data/physicsWarsow.cfg (rev 0)
+++ trunk/data/physicsWarsow.cfg 2009-05-07 08:28:53 UTC (rev 6680)
@@ -0,0 +1,19 @@
+// these values match Warsow 0.42
+sv_maxspeed 320
+sv_maxairspeed $sv_maxspeed
+sv_accelerate 15
+sv_airaccelerate 1
+sv_friction 8
+edgefriction 1
+sv_stepheight 18
+sv_jumpvelocity 280
+sv_wateraccelerate 10
+sv_waterfriction 1
+sv_airaccel_sideways_friction 0
+sv_airaccel_qw 1
+sv_airstopaccelerate 2.5
+sv_airstrafeaccelerate 70
+sv_maxairstrafespeed 30
+sv_aircontrol 150
+sv_warsowbunny_turnaccel 9 // activates warsow movement mode
+set sv_friction_on_land 0
Added: trunk/data/physicsWarsowClassicBunny.cfg
===================================================================
--- trunk/data/physicsWarsowClassicBunny.cfg (rev 0)
+++ trunk/data/physicsWarsowClassicBunny.cfg 2009-05-07 08:28:53 UTC (rev 6680)
@@ -0,0 +1,19 @@
+// these values match Warsow 0.42 GS_CLASSICBUNNY
+sv_maxspeed 320
+sv_maxairspeed $sv_maxspeed
+sv_accelerate 15
+sv_airaccelerate 1
+sv_friction 8
+edgefriction 1
+sv_stepheight 18
+sv_jumpvelocity 280
+sv_wateraccelerate 10
+sv_waterfriction 1
+sv_airaccel_sideways_friction 0
+sv_airaccel_qw 1
+sv_airstopaccelerate 2.5
+sv_airstrafeaccelerate 70
+sv_maxairstrafespeed 30
+sv_aircontrol 150
+sv_warsowbunny_turnaccel 0
+set sv_friction_on_land 0
Modified: trunk/data/qcsrc/server/cl_physics.qc
===================================================================
--- trunk/data/qcsrc/server/cl_physics.qc 2009-05-07 07:15:02 UTC (rev 6679)
+++ trunk/data/qcsrc/server/cl_physics.qc 2009-05-07 08:28:53 UTC (rev 6680)
@@ -11,6 +11,12 @@
float sv_airstrafeaccelerate;
float sv_maxairstrafespeed;
float sv_aircontrol;
+float sv_warsowbunny_airforwardaccel;
+float sv_warsowbunny_accel;
+float sv_warsowbunny_topspeed;
+float sv_warsowbunny_turnaccel;
+float sv_warsowbunny_backtosideratio;
+
.float ladder_time;
.entity ladder_entity;
.float gravity;
@@ -395,6 +401,46 @@
self.velocity = vel_straight * wishdir + vel_z * '0 0 1' + vel_perpend;
}
+void PM_AirAccelerate(vector wishdir, float wishspeed)
+{
+ vector curvel, wishvel, acceldir, curdir;
+ float addspeed, accelspeed, curspeed, f;
+ float dot;
+
+ if(wishspeed == 0)
+ return;
+
+ curvel = self.velocity;
+ curvel_z = 0;
+ curspeed = vlen(curvel);
+
+ if(wishspeed > curspeed * 1.01)
+ {
+ wishspeed = min(wishspeed, curspeed + sv_warsowbunny_airforwardaccel * sv_maxspeed * frametime);
+ }
+ else
+ {
+ f = max(0, (sv_warsowbunny_topspeed - curspeed) / (sv_warsowbunny_topspeed - sv_maxspeed));
+ wishspeed = max(curspeed, sv_maxspeed) + sv_warsowbunny_accel * f * sv_maxspeed * frametime;
+ }
+ wishvel = wishdir * wishspeed;
+ acceldir = wishvel - curvel;
+ addspeed = vlen(acceldir);
+ acceldir = normalize(acceldir);
+
+ accelspeed = min(addspeed, sv_warsowbunny_turnaccel * sv_maxspeed * frametime);
+
+ if(sv_warsowbunny_backtosideratio < 1)
+ {
+ curdir = normalize(curvel);
+ dot = acceldir * curdir;
+ if(dot < 0)
+ acceldir = acceldir - (1 - sv_warsowbunny_backtosideratio) * dot * curdir;
+ }
+
+ self.velocity += accelspeed * acceldir;
+}
+
.vector movement_old;
.float buttons_old;
.vector v_angle_old;
@@ -874,30 +920,59 @@
wishspeed = wishspeed * 0.5;
if (time >= self.teleport_time)
{
- // CPM: air control
- float wishspeed2;
- wishspeed2 = wishspeed;
- if(sv_airstopaccelerate)
- if(self.velocity * wishdir < 0)
- airaccel = sv_airstopaccelerate;
- if(self.movement_x == 0 && self.movement_y != 0)
+ if(sv_warsowbunny_turnaccel)
{
- if(sv_maxairstrafespeed)
- wishspeed = min(wishspeed, sv_maxairstrafespeed);
- if(sv_airstrafeaccelerate)
- airaccel = sv_airstrafeaccelerate;
+ float accelerating, decelerating, aircontrol;
+ float wishspeed2;
+
+ accelerating = (self.velocity * wishdir > 0);
+ decelerating = (self.velocity * wishdir < 0);
+ aircontrol = FALSE;
+ wishspeed2 = wishspeed;
+
+ if(accelerating && self.movement_y == 0 && self.movement_x != 0)
+ {
+ PM_AirAccelerate(wishdir, wishspeed);
+ }
+ else
+ {
+ if(sv_airstopaccelerate)
+ if(self.velocity * wishdir < 0)
+ airaccel = sv_airstopaccelerate;
+ if(self.movement_x == 0 && self.movement_y != 0)
+ {
+ if(sv_maxairstrafespeed)
+ wishspeed = min(wishspeed, sv_maxairstrafespeed);
+ if(sv_airstrafeaccelerate)
+ airaccel = sv_airstrafeaccelerate;
+ if(sv_aircontrol)
+ aircontrol = TRUE;
+ }
+
+ PM_Accelerate(wishdir, wishspeed, airaccel, sv_airaccel_qw, sv_airaccel_sideways_friction / maxairspd);
+ if(aircontrol)
+ CPM_PM_Aircontrol(wishdir, wishspeed2);
+ }
}
- // !CPM
-
- PM_Accelerate(wishdir, wishspeed, airaccel, sv_airaccel_qw, sv_airaccel_sideways_friction / maxairspd);
- if(sv_aircontrol)
- CPM_PM_Aircontrol(wishdir, wishspeed2);
-
- /*
- f = wishspeed;// - (self.velocity * wishdir);
- if (f > 0)
- self.velocity = self.velocity + wishdir * min(f, airaccel * frametime * wishspeed);
- */
+ else
+ {
+ // CPM: air control
+ if(sv_airstopaccelerate)
+ if(self.velocity * wishdir < 0)
+ airaccel = sv_airstopaccelerate;
+ if(self.movement_x == 0 && self.movement_y != 0)
+ {
+ if(sv_maxairstrafespeed)
+ wishspeed = min(wishspeed, sv_maxairstrafespeed);
+ if(sv_airstrafeaccelerate)
+ airaccel = sv_airstrafeaccelerate;
+ }
+ // !CPM
+
+ PM_Accelerate(wishdir, wishspeed, airaccel, sv_airaccel_qw, sv_airaccel_sideways_friction / maxairspd);
+ if(sv_aircontrol)
+ CPM_PM_Aircontrol(wishdir, wishspeed2);
+ }
}
}
Modified: trunk/data/qcsrc/server/sv_main.qc
===================================================================
--- trunk/data/qcsrc/server/sv_main.qc 2009-05-07 07:15:02 UTC (rev 6679)
+++ trunk/data/qcsrc/server/sv_main.qc 2009-05-07 08:28:53 UTC (rev 6680)
@@ -163,6 +163,11 @@
sv_airstrafeaccelerate = cvar("sv_airstrafeaccelerate");
sv_maxairstrafespeed = cvar("sv_maxairstrafespeed");
sv_aircontrol = cvar("sv_aircontrol");
+ sv_warsowbunny_airforwardaccel = cvar("sv_warsowbunny_airforwardaccel");
+ sv_warsowbunny_accel = cvar("sv_warsowbunny_accel");
+ sv_warsowbunny_topspeed = cvar("sv_warsowbunny_topspeed");
+ sv_warsowbunny_turnaccel = cvar("sv_warsowbunny_turnaccel");
+ sv_warsowbunny_backtosideratio = cvar("sv_warsowbunny_backtosideratio");
teamplay = cvar ("teamplay");
if(teams_matter && !teamplay)
More information about the nexuiz-commits
mailing list