Jump to content
    1. Welcome to GTAForums!

    1. GTANet.com

    1. GTA Online

      1. Los Santos Drug Wars
      2. Updates
      3. Find Lobbies & Players
      4. Guides & Strategies
      5. Vehicles
      6. Content Creator
      7. Help & Support
    2. Red Dead Online

      1. Blood Money
      2. Frontier Pursuits
      3. Find Lobbies & Outlaws
      4. Help & Support
    3. Crews

    1. Grand Theft Auto Series

      1. Bugs*
      2. St. Andrews Cathedral
    2. GTA VI

    3. GTA V

      1. Guides & Strategies
      2. Help & Support
    4. GTA IV

      1. The Lost and Damned
      2. The Ballad of Gay Tony
      3. Guides & Strategies
      4. Help & Support
    5. GTA San Andreas

      1. Classic GTA SA
      2. Guides & Strategies
      3. Help & Support
    6. GTA Vice City

      1. Classic GTA VC
      2. Guides & Strategies
      3. Help & Support
    7. GTA III

      1. Classic GTA III
      2. Guides & Strategies
      3. Help & Support
    8. Portable Games

      1. GTA Chinatown Wars
      2. GTA Vice City Stories
      3. GTA Liberty City Stories
    9. Top-Down Games

      1. GTA Advance
      2. GTA 2
      3. GTA
    1. Red Dead Redemption 2

      1. PC
      2. Help & Support
    2. Red Dead Redemption

    1. GTA Mods

      1. GTA V
      2. GTA IV
      3. GTA III, VC & SA
      4. Tutorials
    2. Red Dead Mods

      1. Documentation
    3. Mod Showroom

      1. Scripts & Plugins
      2. Maps
      3. Total Conversions
      4. Vehicles
      5. Textures
      6. Characters
      7. Tools
      8. Other
      9. Workshop
    4. Featured Mods

      1. Design Your Own Mission
      2. OpenIV
      3. GTA: Underground
      4. GTA: Liberty City
      5. GTA: State of Liberty
    1. Rockstar Games

    2. Rockstar Collectors

    1. Off-Topic

      1. General Chat
      2. Gaming
      3. Technology
      4. Movies & TV
      5. Music
      6. Sports
      7. Vehicles
    2. Expression

      1. Graphics / Visual Arts
      2. GFX Requests & Tutorials
      3. Writers' Discussion
      4. Debates & Discussion
    1. Announcements

    2. Support

    3. Suggestions

[General] Issues with recording and replaying moving entities from scripts


ikt
 Share

Recommended Posts

I'm dealing with a slight annoyance in my ghost car/replay script: At high speeds, the replayed vehicle has a noticeable amount of jitter.

The script works by recording the time since starting the recording, position, rotation and other details each frame, and saving that. At a later point, the script starts playing the recording again. The correct frame to replay is found, by getting the two frames surrounding the current GameTime with respect to the start of the recording. It then interpolates between those frames with the current GameTime for the current frame.

At lower vehicle speeds, this looks perfectly smooth, but at high speeds, jitter starts happening, as seen in the linked video.

I've gone and checked a few possible causes: Is my linear interpolation the issue? Is my frame selection bad? Is the replay linear and doesn't it go back a frame sometimes?

It turned out to be the recording, or the data, or so I think it is. The time delta and the distance deltas don't add up, and calculating a speed based on these values resulted in large differences in speed. Could it have been the precision? The GameTimer native only returns an integer, and at my 144Hz, a frame takes 6-9 milliseconds. The system timer can go to microseconds.

I then tried to use the system timer, foregoing time-modifying events like pausing or slow motion, but even then, the issues remained the same: the recorded timestamp for a set of frames did not match the distance traveled in those frames. I have tried to see if I somehow got my delta-T's mixed up, but they do belong to the frame they're recorded in.

 

I'm at a loss here. What can I do to eliminate the jitter in recording/replay? I feel the solution lies in getting a more accurate GameTime, one which agrees with the actual positions of the entity I'm recording - but there seems to be no native for that.

Does anybody have an idea how to solve this?

Link to comment
Share on other sites

Managed to solve the issue - keeping my own timer and using GET_FRAME_TIME to get accurate readings. Since I also ran into rounding issues with floats, I ended up using doubles everywhere (and still store my timestamps based on milliseconds).

Everything works great now, even at stupid speeds like 1000 kph. GET_FRAME_TIME also keeps working nicely with timescale changes and pausing, so this is perfect.

Link to comment
Share on other sites

On 6/28/2021 at 5:01 PM, ikt said:

Managed to solve the issue - keeping my own timer and using GET_FRAME_TIME to get accurate readings. Since I also ran into rounding issues with floats, I ended up using doubles everywhere (and still store my timestamps based on milliseconds).

Everything works great now, even at stupid speeds like 1000 kph. GET_FRAME_TIME also keeps working nicely with timescale changes and pausing, so this is perfect.

Sadly you are the only person here, at least who is visible, who can help at your level.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • 1 User Currently Viewing
    0 members, 0 Anonymous, 1 Guest

×
×
  • Create New...

Important Information

By using GTAForums.com, you agree to our Terms of Use and Privacy Policy.