Jump to content
Dante Unbound: Share Bug Reports and Feedback Here! ×

Optimizing Cache without the Launcher [PC]


lemonforest

Recommended Posts

I used Process Explorer from SysInternals to grab the command sent when the launcher performs an action. The command line switches can also be seen in the associated log and the entire command passed from the launcher can be found in the launcher.log in your %localappdata%\warframe folder. I had already optimized last night, after my play session, so I cannot be absolutely certain that this will work as expected (i.e. using command line vs launcher thus allowing scheduling). The arguments passed are taken from your Launcher settings, so if you're using a different localization, graphics API, engine, etc, those will be different.

From a steam installed environment, the commands passed from the Launcher to optimize is;

  • "C:\Program Files (x86)\Steam\steamapps\common\Warframe\Warframe.x64.exe" -silent -log:/Defrag.log -graphicsDriver:dx11 -cluster:public -language:en -deferred:1 -applet:/EE/Types/Framework/CacheDefraggerAsync /Tools/CachePlan.txt

Normally I would escape the special characters and ditch the double quotes but part of the path name ends up being passed as arguments, verifiable in the associated log with the [Warning] tag. However, it does still appear to work if you do wish to escape special chars, again, as verified in the associated log. It also appears that you do not have to change the working directory beforehand but it's still good practice should you go the batch file way.

The arguments passed;

  • -silent (no observed difference when omitted)
  • -log:/[name] (the name of the log file it will create in your %localappdata%\warframe folder. handy if you want a different log name than the launcher will use)
  • -graphicsDriver:[dx11/dx12] (graphics API as set in the Launcher)
  • -cluster:public (you won't change this unless you're messing with the test cluster)
  • -language:[your location] en for mine as that's clearly my language. Other permutations are ru,zh,de,es,fr based on Windows Code Pages. (p.s. to DE - it's time for unicode)
  • -deferred:[1/0] (graphics engine, enhanced:1 classic:0)
  • -applet:/EE/Types/Framework/[action to perform] (verify/optimize/update)
  • /Tools/CachePlan.txt invalid argument, the log file confirms this. It's possibly missing its dash operator or is unused leftovers

If you haven't yet guessed, there are at least 3 things we can perform via command line arguments now. Verify files, optimize game data and get rid of unused assets, and update the game data.  There may be a separate process involved when the Launcher itself is updated. These can be entered into Task Scheduler as an action in a New Task and either ran with a trigger or just on demand.

  • "C:\Program Files (x86)\Steam\steamapps\common\Warframe\Warframe.x64.exe" -silent -log:/Repair.log -graphicsDriver:dx11 -cluster:public -language:en -deferred:1 -applet:/EE/Types/Framework/CacheRepair
  • "C:\Program Files (x86)\Steam\steamapps\common\Warframe\Warframe.x64.exe" -silent -log:/Defrag.log -graphicsDriver:dx11 -cluster:public -language:en -deferred:1 -applet:/EE/Types/Framework/CacheDefraggerAsync /Tools/CachePlan.txt
  • "C:\Program Files (x86)\Steam\steamapps\common\Warframe\Warframe.x64.exe" -silent -log:/Preprocess.log -graphicsDriver:dx11 -cluster:public -language:en -deferred:1 -applet:/EE/Types/Framework/ContentUpdate

If this works as expected, yay I can schedule the game to optimize or update overnight or whenever I'm not using it. If it does not work as expected, meh it'll just get burried and forgotten in the forum abyss and I'll just continue to re-launch the Launcher and optimize after my play session as I've been doing. The Launcher calls the update command after the optimization check if you'd like to more closely mimic the Launcher behavior.

 

EDIT after the hotfix we just got;
The launcher looks to be responsible for fetching assets. Manually running the ContentUpdate line didn't pull in the hotfix. It may be used when ordering assets for the game after they're downloaded. One thing that I did notice is that, in both manually running or doing so from the launcher, the optimize log indicates /Tools/CachePlan.txt is an unknown arg. It's most likely leftovers or missing the dash parameter you see with the other args. More importantly, running the optimize command manually does appear to do the job.

Link to comment
Share on other sites

On 1/30/2021 at 5:17 AM, Digressive said:

This is a great post! I'm going to play around with some of these settings myself. Having WF update and optimize on a schedule at night would be great.

Thank you for this!

Np! The commands that the launcher last executed are in it's log file. Had I known that, I wouldn't have needed to use procexp64. It only saves the last launch so if you manually execute verify and optimize, you'll have all the cli with args as it pertains to your config in the launcher (localization language, engine, dx version.)

I'm fairly certain that the launcher itself is responsible for fetching game assets since the update applet it calls makes no reference to aggressive downloading. It does make sense, sort of, that the launcher handles the asset download. Since it supports peer clients, it's easier to spawn new threads.  That said, I'm still surprised that it doesn't have a similar framework applet which it calls.  You might get lucky and find an external library binary which accepts api calls. I'm not at my computer right now and don't recall all the files in the launcher location.  You'll also notice that not all arguments are required and that the defrag applet has an invalid or missing tag for the cacheplan.txt. I've submitted it under PC bugs but I think it's already overlooked and buried.

 

FWIW, I made Task Scheduler entries and added a desktop shortcut to easily manually run them. I think verify and defrag are the only useful ones. The launcher will call the contentupdate applet regardless of having manually ran it. It's just part of the launcher workflow. I also used differing log file names for those. The idea is that I can trigger the defrag applet (which is less defrag and more get rid of unused assets) to run not right before I want to play.

Final note thing; I'm actually quite shocked that this didn't garner more attention on the forum with volume of complaints about the Launcher Optimize process.

Link to comment
Share on other sites

  • 1 month later...

If you've ever wanted to run WF without also having Steam running, telling all your friends that you're in game when it's still updating or racking up steam hours that don't count (etc), it looks like simply yanking out one argument from the launcher keeps it from talking to steam. There is no Steam overlay and expect controllers to not work correctly should you choose to play without the Steam argument. To my mind however, it's another tool in the pursuit scheduling updates when you're doing other, not-Warframe things. Like sleeping and thinking about Warframe...

Original command based upon my install paths;

  • "C:\Program Files (x86)\Steam\steamapps\common\Warframe\Tools\Launcher.exe" -cluster:public -registry:Steam

Modified command (pasted into WINKEY+R -> open; pasting into CMD, or if you've got Windows 10 then just paste and hit enter (or click it) after clicking the Win Logo);

  • "C:\Program Files (x86)\Steam\steamapps\common\Warframe\Tools\Launcher.exe" -cluster:public

 

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...