[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