Skip to content

[Movement] Rubberbanding movement and Interpolation #94

Closed
@broxen

Description

This issue began with work on orientation, which was not being updated correctly. The scope has since expanded to include all movement

screenshot 48

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

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions