Difference between revisions of "Multiplayer Vehicle Fixes"

From Valve Developer Community
Jump to: navigation, search
m (Brief discussion)
m (recat)
Line 1: Line 1:
[[Category:Programming]]
 
==Brief discussion==
 
 
 
These fixes are to correct some issues with using Valves vehicle code in a multiplayer game.
 
These fixes are to correct some issues with using Valves vehicle code in a multiplayer game.
 
A true way of doing vehicles in Source Multiplayer would be to write prediction code for the client, but this is not possible with the current engine. The only other option would be to write your own vehicle movement code, which is no easy task for complicated vehicles like the buggy. Research was made into the possibility of predicted physics simulations between the server and client with poor results. Half-Life 2 Rally closed 27 Dec 2006 and has written a list of critical problems they experienced [http://hlrally.net/ here].
 
A true way of doing vehicles in Source Multiplayer would be to write prediction code for the client, but this is not possible with the current engine. The only other option would be to write your own vehicle movement code, which is no easy task for complicated vehicles like the buggy. Research was made into the possibility of predicted physics simulations between the server and client with poor results. Half-Life 2 Rally closed 27 Dec 2006 and has written a list of critical problems they experienced [http://hlrally.net/ here].
Line 93: Line 90:
 
}
 
}
 
</pre>
 
</pre>
 +
 +
[[Category:Networking]]

Revision as of 12:54, 28 March 2008

These fixes are to correct some issues with using Valves vehicle code in a multiplayer game. A true way of doing vehicles in Source Multiplayer would be to write prediction code for the client, but this is not possible with the current engine. The only other option would be to write your own vehicle movement code, which is no easy task for complicated vehicles like the buggy. Research was made into the possibility of predicted physics simulations between the server and client with poor results. Half-Life 2 Rally closed 27 Dec 2006 and has written a list of critical problems they experienced here.

Laggy Vehicle View

A couple of changes will fix the laggy view, but present different issues. One being the cameras position no longer interpolating to where it should.

Open cl_dll/c_prop_vehicle.cpp

Find C_PropVehicleDriveable::C_PropVehicleDriveable() constructor.

Replace

	m_ViewSmoothingData.bDampenEyePosition = true;

with

	m_ViewSmoothingData.bDampenEyePosition = false;


Open cl_dll/c_prop_vehicle.h

In class C_PropVehicleDriveable replace

	virtual bool IsPredicted() const { return false; }

with

	virtual bool IsPredicted() const { return true; }

Vehicle Camera affecting other players

A simple fix is to make sure the vehicles view changes only affect the local player.

Open cl_dll/c_prop_vehicle.cpp

Find void VehicleViewSmoothing


Replace

	if ( !bExitAnimOn )
	{
		Vector localEyeOrigin;
		QAngle localEyeAngles;

		pData->pVehicle->GetAttachmentLocal( eyeAttachmentIndex, localEyeOrigin, localEyeAngles );
  		engine->SetViewAngles( localEyeAngles );
	}

with

	if ( pPlayer->IsLocalPlayer() )
	{
		if ( !bExitAnimOn )
		{
			Vector localEyeOrigin;
			QAngle localEyeAngles;

			pData->pVehicle->GetAttachmentLocal( eyeAttachmentIndex, localEyeOrigin, localEyeAngles );
  			engine->SetViewAngles( localEyeAngles );
		}
	}


Find C_PropVehicleDriveable::GetVehicleViewPosition


Replace

	VehicleViewSmoothing( m_hPlayer, pAbsOrigin, pAbsAngles, m_bEnterAnimOn, m_bExitAnimOn, &m_vecEyeExitEndpoint, &m_ViewSmoothingData, &m_flFOV );

with

	if( m_hPlayer->IsLocalPlayer() )
	{
		VehicleViewSmoothing( m_hPlayer, pAbsOrigin, pAbsAngles, m_bEnterAnimOn, m_bExitAnimOn, &m_vecEyeExitEndpoint, &m_ViewSmoothingData, &m_flFOV );
	}