Collision detection: Movement jerks when moving uphill on terrain

Issue #83 open
Former user created an issue

Using SVN 353 on Gentoo Linux x86_64, I see the following behavior: When moving on certain parts of the map uphill in an approximate 45° angle on terrain, the movement jerks periodically (i.e. the player is moving up and down and moves sideways downhill sometimes). The exact phaenomenon differs from time to time.

This can be reproduced with the attached map. If one spawns in that map using DeathMatch and walks straight up for about 8 seconds, then turns around 180° there will be a hill up left which has a black texture. Walking towards that black texture always shows the described effect.

Comments (4)

  1. Anonymous

    In [changeset:"50d0ec3f90ab1892f65e608b61adbf841654454d/git"]:
    {{{

    !CommitTicketReference repository="git" revision="50d0ec3f90ab1892f65e608b61adbf841654454d"

    Math3D/Brush: Avoid getting stuck in terrain.

    The player could occasionally get stuck in terrain, e.g. in map TechDemo.
    This change helps, as it is now virtually always possible to get un-stuck again,
    e.g. by moving sideways or backwards, but it is still possible to get to a
    complete standstill with the forward-key held down.
    More work is required to get to the root of this problem.

    References #83.
    }}}

  2. Carsten Fuchs

    This problem existed at least since 2011 as reported, and became most likely more pronounced after branch remove-25.4-map-scaling was merged at [6540c3f] on 2015-04-05 (because not all epsilon values were adjusted likewise, thus causing subtly different results than before).

    Possible actions and ideas:

    • Tweak the player's origin in all directions by +/- 0.1 (or any other epsilon value) whenever stuck, foregoing the clever but cumbersome attempts to avoid getting stuck in the first place.

    • Create detailed debug logs of these occasions. As this is difficult to reproduce, logging could be activated e.g. when the original player position was not in solid, and the origin after the move ''is'' in solid. \ As the logging alone might require a lot of code that must be accessed from several modules (cpp files), putting all code into a class and pair of files of its own might be helpful.

    • Review if the terrain-related StartSolid handling is proper and sound, as this is different from that of the ClipSys. (Also see change [9d7bc31] of 2015-04-24: "ClipSys: In TraceResultT, clarify that Fraction == 0.0 is still different from StartSolid == true.")

    • See branches:

      • revise-clipsys, merged at [d756efe] on 2015-05-05
      • remove-25.4-map-scaling, merged at [6540c3f] on 2015-04-05
  3. Log in to comment