GTASA LoadRemoval
7 years ago
Lithuania

So, since there were no script for livesplit to remove loading times for the game, I thought it's a good idea to make one.

Basically, the script is based on gameplay timer, which means, whenever it stops game is trying to load something (like various models, animations, other stuff). The most noticeable loads are before cutscenes and loading game worlds.

I recorded a short video with the script running if anyone is interested:

Currently it should work for 1.0/1.01/3.00 and current steam versions. German versions and 2.0 aren't supported (I didn't have a chance to play with those yet).

Download link: https://github.com/Blantas/san-andreas-loadremoval-for-livesplit

If you see any bugs or want to say something else related to the script, feel free to leave a reply here.

EDIT:

The game gets paused when game suspends game timer (uses CTimer::Suspend()) or other loads happen by directly calling CStreaming::LoadAllRequestedModels() function. The load removal component detects both ways of game getting paused. Game suspends game timer while: ¤ Loading IPL files. ¤ Loading collision data. ¤ Updating world after using EntryExit. ¤ Handling Trip Skip process. ¤ Loading path data. ¤ Handling 038B opcode (loads any requested models). ¤ Loading mission script (probably unused?). ¤ Handling 0417 opcode (loads mission script). ¤ Loading item prices from shopping.dat file. ¤ Loading ped's models. ¤ Blending ped's textures. ¤ Reducing ped's palette size. ¤ Loading cutscene data from cuts.img file. ¤ Deleting cutscene data. ¤ Loading cutscene data. ¤ Loading mission text. ¤ Loading mission pack text (probably unused). ¤ Saving taken photo into drive.

So all tasks mentioned above get detected as well as all loads which are done by using CStreaming::LoadAllRequestedModels function (loading collisions, models, textures, text, scripts, etc.).

The priority of detecting loads in this component is checking if CStreaming::LoadAllRequestedModels function is active. If script doesn't detect any loads, then it checks if game timer is paused (game might be doing one of the tasks from the list above).

Edited by the author 6 years ago
darkgeorge12, Reset and 7 others like this
Pomorskie, Poland

ffzseemsGood

Germany

I think the way this can be tested is if the "no-load-time" is the same for different hardware - you'd time from the mini-cutscene where the mission text appears until the moment the instruction text disappears ("get to x"), skipping the cs asap (verifiable in scrlog). (That's just one idea).

Lag does not pause the timer? Really only loading screens and replays do?

Edited by the author 7 years ago
Hampshire, England

I'm not familiar with how livesplit scripting works, but it seems that I can't use both tdvua's auto splitter and this at the same time? Is it possible to merge them?

Lithuania

Both scripts can be used together and would work fine. I use tduva's for splitting and mine for load less time.

Hampshire, England

How do you use multiple scripts Blantas?

Lithuania

Yes, like coollertmb, said. Actually both can be added via layout editing, but since tduva's splitter is official, it's easier to activate that one in the splits.

Germany

It seems to stop during lag? I had some serious lag and just stood at some place and my timers went apart ("game time" and "real time"). I used two LiveSplit windows if that makes any difference.

Lithuania

i put in scriptable auto splitter and selected the load removal - nothing changes, why?

Serbia

You need to compare against game time Reset ^

Lithuania

BrokeBack

And how do you add another timer in livesplit & make 1 loadless and 1 not without having 2 livesplits open?

Edited by the author 7 years ago
Lithuania

You add two timers into yourlayout. One should have REAL TIME timing method, the other one GAME TIME. Here's a simple layout - https://www.dropbox.com/s/q2xf7re3ukmhodk/LoadRemoval_Demo.lsl?dl=0 (the path of the scriptable auto splitter in the layout needs to be updated though).

Pomorskie, Poland

Why not just use Alternative Timing Method (https://github.com/Dalet/LiveSplit.AlternateTimingMethod/releases)? It makes the layout look much, much nicer, and requires no setup except installing it and adding it into the layout.

Blantas likes this
England

If you have the load remover directly linked to livesplit then it records both in game time and real time on the same split. You just need to check which one is displayed.

Pretty sure you have shortcut keys as well which switch between the 2.

Germany

I'm sorry to say but the "loadless" LiveSplit component is insufficient.

For testing purposes, I removed the LOAD_MODELS_NOW from the Vertical Bird script with Sanny Builder and got a "loading time"¤ of 0.05s instead of the 0.3s from before(for the loading between the intro cs and the cs with Toreno and CJ in front of the mansion, from now on called "Toreno load"). It should not make any difference, though (the models etc have to be loaded anyways). The 10-frame car recording loading was not detected, either.

¤time with loads - time without loads according to Blantas's component

Let's step back. No modding in the following part of this post unless said so explicitly. ^^ Definitions: "the timer" = some timer that was thought to always stop when stuff is loaded. When "the timer" is paused, loading is detected, there is no other way of detecting loads implemented into Blantas' component. "the component" = Blantas' loadless LiveSplit component

Loading consists of two parts:

  • First you request stuff, e.g. REQUEST_MODEL 382, etc.
  • Then you need to wait until it is loaded. Two ways: --- "force way": LOAD_MODELS_NOW freezes the game in order to load the requested stuff faster. This probably freezes "the timer", so it is detected. --- "natural way": just wait until the game has loaded the required stuff "naturally" (it might decide to do other things as well). This does not seem to freeze "the timer" so it should not be detectable.

The "Toreno load" uses both:

  • the "force way" for models/stuff: has been detected(now add modding: if you remove LOAD_MODELS_NOW it is not detected anymore).
  • and the "natural way" for "car recordings": it took 10 frames according to SCRLog - those were not detected.

Interestingly, though, all other loads in Verti Bird never use the "force way" but there, a lot of loading was detected. How does that work? I do not know. But if the component does not detect some loads, it is not a loadless timer.

I noticed that "load times" vary quite strongly. If I disregard the first Verti Bird start right after re-starting the game, I got a range of ~300ms. So always do multiple tests and average it out.

I got barely any effect of modding in Big Smoke (all the first loads combined without any differentiation) and that uses the "force way" quite a lot: modded(without LOAD_MODELS_NOW): 2.3 2.6 2.5 2.4 [seconds] unmodded: 2.7

Edited by the author 7 years ago
Blantas likes this
Germany

The lag counting might be undebatedly wrong because lag can stop the timer for a frame just for it to be incremented twice the next frame and that probably gives you a boost which is supposed to even out the lag(Nick says that the ingame timer "speeding up" is like the speeditup cheat). At exteme lag I remember that I have noticed that myself while playing and good players probably notice it often.

Lithuania

The 1.2 update is out now. It should fix some of the previous problems.

Download link: https://github.com/Blantas/san-andreas-loadremoval-for-livesplit

Edited by the author 7 years ago
Andra and Zachoholic like this
Lithuania

Update 1.3: Added support for current Windows Store version (1.0.0.9).

Download link: https://github.com/Blantas/san-andreas-loadremoval-for-livesplit

Zachoholic likes this
Game stats
Followers
3,250
Runs
3,019
Players
487
Latest news
Changes to the GTA:SA leaderboard

The GTA:SA community has been deteriorating over a long period of time. Many top runners are not currently present on the leaderboard. This issue has not been seriously addressed yet, but an attempt will be made to remedy it now.

As of this news post, the San Andreas leaderboard will function in

1 year ago
Latest threads
Posted 1 year ago
0 replies
Posted 1 year ago
Posted 4 years ago
0 replies
Posted 5 years ago
0 replies