prediction works thusly:
client frame start:
if player ent updated:
read what the server's entity state is
save origin, velocity, input frame somewhere
before drawing:
reset pmove variables back to the last known state
for each input frame (serverframe <= frame < clientframe):
read input frame (angles/movement/jump)
update origin+velocity running your prediction code
add view offset, step smoothing, and optionally error correction
update view origin to predicted move and angles to final angles
note: as an optimisation, you could only reset when the ent is updated.
server:
the server changes for prediction are not finalised - there's no direct support in fte.
if you wish to add your own prediction, you'd have to undo any changes done between playerprethink and playerpostthink, and presumably run it at the start of playerpostthink - but this isn't 100% in the case where input frames were initially dropped (using two+ input packets in one client packet). There'd be some qc callback function and some special globals identical to csqc names for consistancy and code sharing.
the engine provides a builtin which runs the engine's standard movement for you, based on the contents of globals.
http://fteqw.svn.sourceforge.net/viewvc ... iew=markup
UpdateLocalMovement updates vieworg and input_angles
Predicting other players is harder and my test mod doesn't attempt it, although it could be done quakeworld-style by just extending the most recent input packet from that client a little.