Closed
Description
This issue began with work on orientation, which was not being updated correctly. The scope has since expanded to include all movement
This will need
- Correct Position Update math (math in
physicsStep(...)
) - (interp-v2, sending junk vals) Correctly send interpolated movement values in EntityUpdateCodec (
storeUnknownBinTree(...)
) - Magic all of these values together
- Correctly store ControlBits states (keypresses and releases) with keypresses time.
- Do we need MotionStates (surface and physics params) for this to work? Probably.
- Do we need TimeStates (record of when keys were pressed relative to server time) for this to work? Probably.
- (interp-v2) Store InputStates to vector InputStateStorage
- (interp-v2, I think 😜) Correct Velocity calculations -- Currently the velocity the client believes you to have, does not match with the server's expectation
- Verify stops to server/client -- it appears as though the client doesn't always recognize that you've stopped moving (may relate to ControlBits)
- Store Position updates to PosUpdates for interpolation
- Calculate Interpolation values from PosUpdates (return BinTree)
- Does EntityUpdateCodec send m_update_pos_and_cam every time? Or only for special updates?
- Correct Entity Rotation upon spawn (Fixed by Fix the entity orientation serialization and calculations. #104)
- Correct Entity Rotation during movement in EntityUpdateCodec (addressed by Corrected update of orientation for other entities #166)
- Verify Speed calculations
- Verify Drag calculations
- Verify Gravity calculations
- Client does not recognize ABS_TIME, though it is sent by the server
Bonus
- Send Animations
- Send NetFX
- Correctly calculate jumping (this is going to be a whole other set of algos)
Useful testing commands (require Access Level 9)
/controldebug 1
- outputs to client console and shows markers in the world with position deltas/entdebugclient 1
- displays GUI window that shows active data, and displays reticle on entity/moveto {x} {y} {z}
- moves entity to position/postest
- Outputs server values for position. Only available on my broxen/segs/interp-v2 branch/interp
- Runs an interpolation test. Only available on my broxen/segs/interp-v2 branch
SEGS version
78c7fd5 and later
Tracking
Progress taking place in https://github.com/broxen/Segs/tree/movement