This isn't much of a tutorial, but an informative page you can read; An attempt at explaining how CPM physics work:
Air Physics
Changed by the movement keys pressed.
[Forward or Back] AND [Left or Right] (i.e. Diagonally) - works like Quake 3 Arena (also known as Vanilla Quake 3, or VQ3), Quake Live, Uberstrike (eww, don't play it its a ripoff), Tremulous etc. - Use this to gain speed quickly via normal strafe jumping.
Forward/Back only - "Air Control" - or so it's called. It diverts the horizontal vector direction to the centerline of your camera at a fixed horizontal vector component (if you're fast you don't turn as fast). The mathematics for acceleration is the same as the Quake-3 style however isn't recommended as it makes you turn in the direction you're facing. Aircontrol doesn't work if your camera horizontal angle is larger than 90 degrees from your vector, i.e. it will need to slow you down, it will just functions like the diagonal keys.
Left/Right only - Works like Quake 1/QuakeWorld/Team Fortress/Half Life/Counterstrike etc. - Used for turning tight corners. This also can be used to gain speed the "bunnyhopping" way. It turns slightly faster than the AirControl but if you turn a tad too fast you "stall" and start losing your speed without turning any faster, and if the angle is too great you bleed off your speed quickly (like an airplane in a high-speed turn). The mechanics in how the acceleration is done is the same as the Q3-Arena style, only that its straight line speed limit (before it cuts off unless you try to turn) is smaller (from 10 m/s to 1 m/s) and straight line acceleration is larger (from 1m/s/s to 70m/s).
Fastest rate of turn happens when your acceleration vector is perpendicular (90 degrees) to the direction you're going, however you don't accelerate. It's highly unlikely you'll encounter exactly 90 degrees for a long time anyway and you don't get much rotation rate improvement over getting full acceleration, so simply just turn at a rate where you don't start slowing down but doing so slowly doesn't really have any significant disadvantage, but if you're turning slowly you might as well use the diagonal movement key combination to accelerate.
"Double Jump"
More sensible to call it "Step Jump" as most people understand "double jump" as a secondary jump where you jump on an imaginary platform "in-air/space" like how the Scout in TF2 dodges in air or how Crash Bandicoot gets to higher places.
The "Double Jump" (DJ) is basically a timer in which you can get a boosted jump whilst the timer is active after recently jumping. By CPM standards the timer lasts 400 msec long and you get a 37% increase in jump speed for nearly a double height in the double jump (height = 1.3703703703..2 = 1.88 times normal jump height on double jump). There's actually a defined variable but I can't remember what its exact value is since I converted it into a multiplier when entering it into Tremulous source code to make it easier to implement. All I remembered was writing this:
//CPM: 100/270 (normal jumpvel is 270, doublejump default 100) = 0.37037
Which probably meant adding "100 units per second" ontop of the default jump value of "270" making "370" and I did some innovative fancy maths so the jump height was the same when multiplying the jump speed by the double jump modifier that I came up with. I could've made a mistake, who knows, the actual value could be just 1.37. Which is what I use anyway in my GPP-1.1 mod.
"Wall Clipping"
I'm not sure why another somewhat deceptive name. Even half-beat strafing (a method in lazier straight line strafe jumping for higher speeds) suits its actual thing more than this. Because when you clip something, it means you're cutting it off.
Basically what happens when you touch a wall, your velocity component that's normal into the wall gets chopped off so you're sliding along the wall instead. That's a velocity clip.
What happened with CPM is they uhh... well, re-implemented a "bug" that i.d. tech left in the code. I think.
The "bug" also unintentionally existed in Unvanquished and Tremulous too when the human does the dodge manouvre [only noticable in unvanquished since they had two timers and they didn't change the other to hide the bug "on the ground" as in tremulous, the bug for some reason removed the ground friction in unvanquished making the bug more exploitable], and in the marauder's jump timer [which allowed it to stick to walls in gpp, it also applied to 1.1 but the timer ends just before the wall jump function is allowed to be executed].
How it works:
1. Player jumps
2. Timer is set, I think Vanilla Quake was either 200 or 250 (Tremulous' marauder bug is the other of the two values) and CPM is 400 msec, the timer can also be triggered by human dodging in Tremulous 1.2 GamePlay Preview
3. Walls no longer clip your velocity. However you will still appear to slide along surfaces as a "trace" function (traces ahead for collisions with the <world>) acts as a backup. Without it you might as well have noclip and fall through floors n' stuff. In the early unvanquished alpha when the human still retained the human dodge, it also removed ground friction for some reason as I said previously.
4. If you did touch a wall, once you reach the corner of the wall and no wall further exists, since there's nothing to "trace" onto and nudge you back, your character continues travelling at full speed you previously were at before you touched the wall (assuming you didn't accellerate/decellerate during the event).
5. Timer ends and normal physics resume.
You can also get a similar effect by telefragging/teleporting into someone (i.e. godmode, if that protects against it, or a buildable, in the case of Tremulous) without actually killing them or yourself whilst you're in air at the moment of getting stuck . You can do a similar thing as you do in strafe jumping to gather speed inside a buildable in Tremulous to get out of the buildable or player and you end up flying out of it. The speed required depends on how far is the edge of the buildable or player in which where the next server frame (before tracing the buildable) is already outside the buildable or player. In other words if you're 16 units in from the y-axis surface of the buildable or player and you're aiming exactly on the <world>'s X axis, and server framerate (sv_fps) equals 20, you require at least (16 + half your boundry box on the X axis, for a human in tremulous or a player in quake 3 it would be 16 ) * 20 = 640 ups before you can warp out of the player.
MORE FEATURES: TODO
Example of CPM Physics (or alike) in Games:
Quake 3 Arena modifications, Challenge ProMode Arena (Obviouosly) and DeFRaG (Racing mod)
Quake Live: Pro-Quake Live (Only for Premiums, suck you i.d. tech!), Quake Live Race mode (at least this one is free although there are no race servers in australia)
Xonotic (comes with a working speed limiter, has the capability of simulating physics from other games like warsow, quake 2 etc.)
War§ow (different air control, else practically the same)
TF2 mod: Defrag (Abandoned) (Partially like CPM, but not quite)
Reflex
My implementions into Tremulous:
Tremulous Mods:
1.1: GPP-1.1 "Fusion Arena/ProTrem" - with my own gameplay balancing and minor modifications to the air control system such as air control and side strafe also allows for normal acceleration (for "half-beat" strafe jumping) and other stuff
1.2 Gameplay Preview: Cuboid - With request by theinvsblman (rotacak) to finish off the implemention, ask him for gameplay balance issues as I have no control for that
Previous attempt at explaining: http://forum.grangerhub.com/viewtopic.php?id=201
Webpage Visits: