luxtorpeda-dev / luxtorpeda

Steam Play compatibility tool to run games using native Linux engines
GNU General Public License v2.0
720 stars 19 forks source link

Make Luxtorpeda download required Steam files #238

Closed Jpxe closed 1 year ago

Jpxe commented 1 year ago

Feature Request

As asked by this user: https://github.com/luxtorpeda-dev/packages/issues/994#issuecomment-1712529072

This feature would allow Luxtorpeda to download Steam files and runtimes if an engine requires them. Such as:

Could also potentially be used for more requirements like:

Solution

  1. Potential: Luxtorpeda checks if a user has the necessary Steam binaries and runtimes installed.
  2. Luxtorpeda downloads the necessary files and then launches the engine

Additional Context

I've tested this out a bit and installation is possible using either of these commands:

Jpxe commented 1 year ago

I belive these are the AppIDs needed currently:

Name AppID
Source SDK Base 2013 Singleplayer 243730
Steam Linux Runtime 1.0 (Scout) 1070560
Steam Linux Runtime 2.0 (Soldier) 1391110
Steam Linux Runtime 3.0 (Sniper) 1628350
Half-Life 2: Episode One 380
Half-Life 2: Episode Two 420
Enemy Territory: QUAKE Wars Demo 2.0 10050

Example of how to download Steam Linux Runtime 3.0 (Sniper) from a bash script:

#!/bin/bash

# Define the App ID
app_id="1628350"

# Steam command to install the game using the variable
steam "steam://dev/console/ +app_install $app_id"
Jpxe commented 1 year ago

I've also looked into if it is possible to check if it's already installed. And it is with the console commands app_status <AppID> for a specific AppID or apps_installed for a list of all installed apps. I haven't found a way to get the information outside of Steam, it only prints in the internal console. So it seems like we would have to check the VDF files for this functionality.

However, since the install command is quick and there's no problem if the app is already installed, I say we just run it steam "steam://dev/console/ +app_install <AppID>" every time an engine needs it.

d10sfan commented 1 year ago

Thanks for the commands, I do already have some checks that can see if its installed which is what the engines use if it requires. So I could add some logic there where if one is missing, run the install, then run the find command one more time. If one is missing then, then just throw an error.

d10sfan commented 1 year ago

etqw is the way it is because steam does not provide the linux binaries, so I don't think that;ll be helped by this feature but the rest makes sense.

The engines could be made simpler by this change since they could assume that the app needed is always installed.

d10sfan commented 1 year ago

Some additional details in https://github.com/luxtorpeda-dev/packages/pull/996

d10sfan commented 1 year ago

I've added this in this PR - https://github.com/luxtorpeda-dev/luxtorpeda/pull/239

This uses the existing app id searching that was already there plus calling the steam://install (through xdg-open). If it does not find an app, it'll request with that, and then wait 5 minutes (waiting for it to be found and for the directory to exist). Note that the vdf exists as soon as install starts, so just that was not a guarantee that it was complete.

Please feel free to test it out and let me know what you think if you'd like. Soon, I'll create a new client release most likely.

Screenshot_20230909_213614

Jpxe commented 1 year ago

How do I test this? I've downloaded and compiled the debug build. I guess I need to switch the branch?

d10sfan commented 1 year ago

There should be a build artifact on the latest action that you can use. If not you should be able to build with cargo build and copy the so file in target/debug to your steam compat tools luxtorpeda folder, replacing the one already there. Using the makefile for the godot part isn't required for this since there aren't any UI changes

Jpxe commented 1 year ago

I got it to work, it started downloading both apps needed for hl2 downfall but then lux closed/crashed. I restarted it and got this error in console:

2023-09-11 00:56:06 INFO luxtorpeda::command run returned with exit status: 127
ERROR: [RUST] file '/home/jpx/.cargo/registry/src/index.crates.io-6f17d22bba15001f/gdnative-core-0.11.3/src/object/bounds.rs' at line 77: panic occurred: "assume_safe called on an invalid pointer"
   at: <unset> (src/lib.rs:48)
thread '<unnamed>' panicked at 'assume_safe called on an invalid pointer', /home/jpx/.cargo/registry/src/index.crates.io-6f17d22bba15001f/gdnative-core-0.11.3/src/object/bounds.rs:77:9
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
thread panicked while processing panic. aborting.
/home/jpx/.local/share/Steam/compatibilitytools.d/luxtorpeda-dev/luxtorpeda.sh: line 16: 56331 Aborted                 (core dumped) "$DIR/luxtorpeda.x86_64" "$@"
Uploaded AppInterfaceStats to Steam
Jpxe commented 1 year ago

Here's some more output in a gist: https://gist.github.com/Jpxe/ef0c49c19b74a9322ab3ff3de5852d1b And some screenshots: Screenshot_20230911_005441 Screenshot_20230911_005342 Screenshot_20230911_005322 Screenshot_20230911_005227

d10sfan commented 1 year ago

Strange I'll see if I can replicate that, it looks like it got an error from the game launching and then crashed after that. If you run it again does it work? And can you replicate that if you uninstall those two and let it install them again?

Jpxe commented 1 year ago

I'm not at my computer anymore. I'll try to retest it and get back to you tomorrow.

d10sfan commented 1 year ago

From your gist, it looks like the source sdk is crashing, not sure why luxtorpeda is crashing for you as well. I tested with another game and it closes cleanly like expected if the game crashes.

So you may have some issues with launching source games in general? You may try launching another one just to see if it works as expected.

d10sfan commented 1 year ago

Another thing you might try and look at is adding some logs to your debug build, possibly around here:

match command::run_wrapper(cmd_args, &game_info, &sender_err) {
                Ok(()) => {}
                Err(err) => {
                    error!("command::run_wrapper err: {:?}", err);

                    let status_obj = StatusObj {
                        error: Some(err.to_string()),
                        ..Default::default()
                    };
                    let status_str = serde_json::to_string(&status_obj).unwrap();
                    sender_err.send(status_str).unwrap();
                }
            };
        });

to see if it got there and why it's crashing for you. You could also try this build built by github actions (https://github.com/luxtorpeda-dev/luxtorpeda/actions/runs/6134725511), to see if it's something wrong with your env.

Jpxe commented 1 year ago

So I tried again. I download the GitHub actions build you linked and I also deleted all Steam files and reinstalled Steam just in case.

  1. First I tried HL2 Downfall in Lux with both dependencies already installed. Worked ok!
  2. Then I deleted Sorce SDK base 2013 & and all runtimes.
  3. I pressed start on Downfall.
  4. Got a popup to install Source SDK (but it is behind the Lux window so easy to miss)
  5. It only started to download the Source SDK (or I missed the other)
  6. Source SDK got to about 80% downloaded then I got an error both in Lux GUI and in terminal:

Screenshot of error: Screenshot_20230912_225957

Terminal output of error:

0:58:56 [INFO] request_steam_app_id_install checking app of 243730 installed tries = 58
20:59:01 [INFO] request_steam_app_id_install checking app of 243730 installed tries = 59
20:59:06 [ERROR] request_steam_app_id_install. app not found of 243730.
20:59:06 [ERROR] get_app_id_deps_paths. app id 243730 not found. error = Custom { kind: Other, error: "request_steam_app_id_install. app not found of 243730." }
20:59:06 [ERROR] run_game. error: get_app_id_deps_paths not completed, error: Custom { kind: Other, error: "get_app_id_deps_paths. app id 243730 not found. error = Custom { kind: Other, error: \"request_steam_app_id_install. app not found of 243730.\" }" }
  1. I waited for Source SDK to finish downloading.
  2. Lux still running and showing the errror. I pressed the ok button, lux closes, game button goes back to play, new log output:
WARNING: ObjectDB instances leaked at exit (run with --verbose for details).
     at: cleanup (core/object.cpp:2070)
ERROR: Resources still in use at exit (run with --verbose for details).
   at: clear (core/resource.cpp:417)
Uploaded AppInterfaceStats to Steam
  1. I press play in Steam again.
  2. This time I get the download window for the runtime. I press install.
  3. Game launches and works

Some suggestions:

As for the errors I'm getting, I'll try to retest it again. Here's a gist of the terminal output: https://gist.github.com/Jpxe/ef76edbc416e37ae4e3826367013a855

Jpxe commented 1 year ago

I tested again and both download windows appeared. But lux crashed. Tried restarting Steam and pressing play, lux crashed immediately.

Second try:

[2023-09-12 23:26:49] Client version: 1694466342
[2023-09-12 23:26:49] Loaded SDL version 3.0.0-2074-ge063f662e
[2023-09-12 23:26:49] GetWin32Stats: display was not open yet, good
[2023-09-12 23:26:49] ComputeStartupMode: found registry default startup mode: 0
[2023-09-12 23:26:49] Switching to desktopui (from legacy vgui mode)
[2023-09-12 23:26:49] GetWin32Stats: display was not open yet, good
[2023-09-12 23:26:49] Steam Runtime Launch Service: starting steam-runtime-launcher-service
[2023-09-12 23:26:49] Steam Runtime Launch Service: steam-runtime-launcher-service is running pid 80202
[2023-09-12 23:26:49] Failed to init SteamVR because it isn't installed
[2023-09-12 23:26:49] GLibLog: domain:Gtk  msg:gtk_disable_setlocale() must be called before gtk_init()
[2023-09-12 23:26:49] GLibLog: domain:Gtk  msg:Unable to locate theme engine in module_path: "adwaita",
[2023-09-12 23:26:49] GLibLog: domain:Gtk  msg:Unable to locate theme engine in module_path: "adwaita",
[2023-09-12 23:26:49] GLibLog: domain:Gtk  msg:Unable to locate theme engine in module_path: "adwaita",
[2023-09-12 23:26:49] local (potentially out of sync) copy of roaming config loaded - 306 bytes.
[2023-09-12 23:26:49] roaming config store loaded successfully - 306 bytes.
[2023-09-12 23:26:49] migrating temporary roaming config store
[2023-09-12 23:26:49] System startup time: 16.18 seconds
[2023-09-12 23:28:56] ExecCommandLine: "'/home/jpx/.local/share/Steam/ubuntu12_32/steam'"
[2023-09-12 23:29:24] GameAction [AppID 587650, ActionID 1] : LaunchApp changed task to ProcessingInstallScript with ""
[2023-09-12 23:29:24] GameAction [AppID 587650, ActionID 1] : LaunchApp changed task to SiteLicenseSeatCheckout with ""
[2023-09-12 23:29:24] GameAction [AppID 587650, ActionID 1] : LaunchApp changed task to CreatingProcess with ""
[2023-09-12 23:29:24] GameAction [AppID 587650, ActionID 1] : LaunchApp waiting for user response to CreatingProcess ""
[2023-09-12 23:29:25] GameAction [AppID 587650, ActionID 1] : LaunchApp continues with user response "CreatingProcess"
[2023-09-12 23:29:25] Game process added : AppID 587650 "/home/jpx/.local/share/Steam/ubuntu12_32/reaper SteamLaunch AppId=587650 -- /home/jpx/.local/share/Steam/ubuntu12_32/steam-launch-wrapper -- '/home/jpx/.local/share/Steam/steamapps/common/SteamLinuxRuntime_sniper'/_v2-entry-point --verb=waitforexitandrun -- '/home/jpx/.local/share/Steam/compatibilitytools.d/luxtorpeda'/luxtorpeda.sh waitforexitandrun  '/home/jpx/.local/share/Steam/steamapps/common/Half-Life 2 DownFall/hl2.exe' -game downfall", ProcID 81158, IP 0.0.0.0:0
[2023-09-12 23:29:25] GameAction [AppID 587650, ActionID 1] : LaunchApp changed task to WaitingGameWindow with ""
[2023-09-12 23:29:25] GameAction [AppID 587650, ActionID 1] : LaunchApp changed task to Completed with ""
[2023-09-12 23:29:26] ExecCommandLine: "'~/.steam/root/ubuntu12_32/steam' 'steam://install/243730'"
[2023-09-12 23:29:26] ExecuteSteamURL: "steam://install/243730"
[2023-09-12 23:29:41] ExecCommandLine: "'~/.steam/root/ubuntu12_32/steam' 'steam://install/1070560'"
[2023-09-12 23:29:41] ExecuteSteamURL: "steam://install/1070560"
[2023-09-12 23:30:02] Game process removed: AppID 587650 "/home/jpx/.local/share/Steam/ubuntu12_32/reaper SteamLaunch AppId=587650 -- /home/jpx/.local/share/Steam/ubuntu12_32/steam-launch-wrapper -- '/home/jpx/.local/share/Steam/steamapps/common/SteamLinuxRuntime_sniper'/_v2-entry-point --verb=waitforexitandrun -- '/home/jpx/.local/share/Steam/compatibilitytools.d/luxtorpeda'/luxtorpeda.sh waitforexitandrun  '/home/jpx/.local/share/Steam/steamapps/common/Half-Life 2 DownFall/hl2.exe' -game downfall", ProcID 81158 
[2023-09-12 23:30:02] ThreadGetProcessExitCode: no such process 81346
[2023-09-12 23:30:02] ThreadGetProcessExitCode: no such process 81337
[2023-09-12 23:30:02] ThreadGetProcessExitCode: no such process 81314
[2023-09-12 23:30:02] ThreadGetProcessExitCode: no such process 81290
[2023-09-12 23:30:02] ThreadGetProcessExitCode: no such process 81160
[2023-09-12 23:30:02] ThreadGetProcessExitCode: no such process 81159
[2023-09-12 23:30:11] CAPIJobRequestUserStats - Server response failed 2
[2023-09-12 23:30:12] CAPIJobRequestUserStats - Server response failed 2
[2023-09-12 23:30:12] CAPIJobRequestUserStats - Server response failed 2
[2023-09-12 23:30:13] CAPIJobRequestUserStats - Server response failed 2
[2023-09-12 23:30:13] CAPIJobRequestUserStats - Server response failed 2
[2023-09-12 23:30:13] CAPIJobRequestUserStats - Server response failed 2
[2023-09-12 23:30:13] CAPIJobRequestUserStats - Server response failed 2
[2023-09-12 23:30:14] CAPIJobRequestUserStats - Server response failed 2
[2023-09-12 23:30:15] CAPIJobRequestUserStats - Server response failed 2
[2023-09-12 23:30:15] CAPIJobRequestUserStats - Server response failed 2
[2023-09-12 23:30:16] CAPIJobRequestUserStats - Server response failed 2
[2023-09-12 23:30:16] CAPIJobRequestUserStats - Server response failed 2
[2023-09-12 23:30:17] CAPIJobRequestUserStats - Server response failed 2
[2023-09-12 23:30:17] CAPIJobRequestUserStats - Server response failed 2
[2023-09-12 23:30:18] CAPIJobRequestUserStats - Server response failed 2
[2023-09-12 23:30:18] CAPIJobRequestUserStats - Server response failed 2
[2023-09-12 23:30:19] CAPIJobRequestUserStats - Server response failed 2
[2023-09-12 23:36:37] GameAction [AppID 587650, ActionID 2] : LaunchApp changed task to ProcessingInstallScript with ""
[2023-09-12 23:36:37] GameAction [AppID 587650, ActionID 2] : LaunchApp changed task to SiteLicenseSeatCheckout with ""
[2023-09-12 23:36:37] GameAction [AppID 587650, ActionID 2] : LaunchApp changed task to CreatingProcess with ""
[2023-09-12 23:36:37] GameAction [AppID 587650, ActionID 2] : LaunchApp waiting for user response to CreatingProcess ""
[2023-09-12 23:36:37] GameAction [AppID 587650, ActionID 2] : LaunchApp continues with user response "CreatingProcess"
[2023-09-12 23:36:37] Game process added : AppID 587650 "/home/jpx/.local/share/Steam/ubuntu12_32/reaper SteamLaunch AppId=587650 -- /home/jpx/.local/share/Steam/ubuntu12_32/steam-launch-wrapper -- '/home/jpx/.local/share/Steam/steamapps/common/SteamLinuxRuntime_sniper'/_v2-entry-point --verb=waitforexitandrun -- '/home/jpx/.local/share/Steam/compatibilitytools.d/luxtorpeda'/luxtorpeda.sh waitforexitandrun  '/home/jpx/.local/share/Steam/steamapps/common/Half-Life 2 DownFall/hl2.exe' -game downfall", ProcID 81815, IP 0.0.0.0:0
[2023-09-12 23:36:37] GameAction [AppID 587650, ActionID 2] : LaunchApp changed task to WaitingGameWindow with ""
[2023-09-12 23:36:37] GameAction [AppID 587650, ActionID 2] : LaunchApp changed task to Completed with ""
[2023-09-12 23:36:40] Game process updated : AppID 587650 "/home/jpx/.local/share/Steam/ubuntu12_32/reaper SteamLaunch AppId=587650 -- /home/jpx/.local/share/Steam/ubuntu12_32/steam-launch-wrapper -- '/home/jpx/.local/share/Steam/steamapps/common/SteamLinuxRuntime_sniper'/_v2-entry-point --verb=waitforexitandrun -- '/home/jpx/.local/share/Steam/compatibilitytools.d/luxtorpeda'/luxtorpeda.sh waitforexitandrun  '/home/jpx/.local/share/Steam/steamapps/common/Half-Life 2 DownFall/hl2.exe' -game downfall", ProcID 82031, IP 0.0.0.0:0
[2023-09-12 23:36:57] Game process removed: AppID 587650 "/home/jpx/.local/share/Steam/ubuntu12_32/reaper SteamLaunch AppId=587650 -- /home/jpx/.local/share/Steam/ubuntu12_32/steam-launch-wrapper -- '/home/jpx/.local/share/Steam/steamapps/common/SteamLinuxRuntime_sniper'/_v2-entry-point --verb=waitforexitandrun -- '/home/jpx/.local/share/Steam/compatibilitytools.d/luxtorpeda'/luxtorpeda.sh waitforexitandrun  '/home/jpx/.local/share/Steam/steamapps/common/Half-Life 2 DownFall/hl2.exe' -game downfall", ProcID 82031 
[2023-09-12 23:36:57] ThreadGetProcessExitCode: no such process 82031
[2023-09-12 23:36:57] ThreadGetProcessExitCode: no such process 82030
[2023-09-12 23:36:57] ThreadGetProcessExitCode: no such process 81974
[2023-09-12 23:36:57] ThreadGetProcessExitCode: no such process 81972
[2023-09-12 23:36:57] ThreadGetProcessExitCode: no such process 81947
[2023-09-12 23:36:57] ThreadGetProcessExitCode: no such process 81817
[2023-09-12 23:36:57] ThreadGetProcessExitCode: no such process 81816

Third try:

[2023-09-12 23:41:10] Client version: 1694466342
[2023-09-12 23:41:10] Loaded SDL version 3.0.0-2074-ge063f662e
[2023-09-12 23:41:10] GLibLog: domain:GLib  msg:unsetenv() is not thread-safe and should not be used after threads are created
[2023-09-12 23:41:10] GetWin32Stats: display was not open yet, good
[2023-09-12 23:41:10] ComputeStartupMode: found registry default startup mode: 0
[2023-09-12 23:41:10] Switching to desktopui (from legacy vgui mode)
[2023-09-12 23:41:10] GetWin32Stats: display was not open yet, good
[2023-09-12 23:41:10] Steam Runtime Launch Service: starting steam-runtime-launcher-service
[2023-09-12 23:41:10] Steam Runtime Launch Service: steam-runtime-launcher-service is running pid 82387
[2023-09-12 23:41:10] Failed to init SteamVR because it isn't installed
[2023-09-12 23:41:10] local (potentially out of sync) copy of roaming config loaded - 306 bytes.
[2023-09-12 23:41:10] GLibLog: domain:Gtk  msg:gtk_disable_setlocale() must be called before gtk_init()
[2023-09-12 23:41:10] GLibLog: domain:Gtk  msg:Unable to locate theme engine in module_path: "adwaita",
[2023-09-12 23:41:10] GLibLog: domain:Gtk  msg:Unable to locate theme engine in module_path: "adwaita",
[2023-09-12 23:41:10] GLibLog: domain:Gtk  msg:Unable to locate theme engine in module_path: "adwaita",
[2023-09-12 23:41:10] roaming config store loaded successfully - 306 bytes.
[2023-09-12 23:41:10] migrating temporary roaming config store
[2023-09-12 23:41:10] System startup time: 15.65 seconds
[2023-09-12 23:43:12] ExecCommandLine: "'/home/jpx/.local/share/Steam/ubuntu12_32/steam'"
[2023-09-12 23:43:33] CAPIJobRequestUserStats - Server response failed 2
[2023-09-12 23:44:03] GameAction [AppID 587650, ActionID 1] : LaunchApp changed task to ProcessingInstallScript with ""
[2023-09-12 23:44:03] GameAction [AppID 587650, ActionID 1] : LaunchApp changed task to SiteLicenseSeatCheckout with ""
[2023-09-12 23:44:03] GameAction [AppID 587650, ActionID 1] : LaunchApp changed task to CreatingProcess with ""
[2023-09-12 23:44:03] GameAction [AppID 587650, ActionID 1] : LaunchApp waiting for user response to CreatingProcess ""
[2023-09-12 23:44:03] GameAction [AppID 587650, ActionID 1] : LaunchApp continues with user response "CreatingProcess"
[2023-09-12 23:44:03] Game process added : AppID 587650 "/home/jpx/.local/share/Steam/ubuntu12_32/reaper SteamLaunch AppId=587650 -- /home/jpx/.local/share/Steam/ubuntu12_32/steam-launch-wrapper -- '/home/jpx/.local/share/Steam/steamapps/common/SteamLinuxRuntime_sniper'/_v2-entry-point --verb=waitforexitandrun -- '/home/jpx/.local/share/Steam/compatibilitytools.d/luxtorpeda'/luxtorpeda.sh waitforexitandrun  '/home/jpx/.local/share/Steam/steamapps/common/Half-Life 2 DownFall/hl2.exe' -game downfall", ProcID 83134, IP 0.0.0.0:0
[2023-09-12 23:44:03] GameAction [AppID 587650, ActionID 1] : LaunchApp changed task to WaitingGameWindow with ""
[2023-09-12 23:44:03] GameAction [AppID 587650, ActionID 1] : LaunchApp changed task to Completed with ""
[2023-09-12 23:44:05] Game process removed: AppID 587650 "/home/jpx/.local/share/Steam/ubuntu12_32/reaper SteamLaunch AppId=587650 -- /home/jpx/.local/share/Steam/ubuntu12_32/steam-launch-wrapper -- '/home/jpx/.local/share/Steam/steamapps/common/SteamLinuxRuntime_sniper'/_v2-entry-point --verb=waitforexitandrun -- '/home/jpx/.local/share/Steam/compatibilitytools.d/luxtorpeda'/luxtorpeda.sh waitforexitandrun  '/home/jpx/.local/share/Steam/steamapps/common/Half-Life 2 DownFall/hl2.exe' -game downfall", ProcID 83134 
[2023-09-12 23:44:05] ThreadGetProcessExitCode: no such process 83291
[2023-09-12 23:44:05] ThreadGetProcessExitCode: no such process 83266
[2023-09-12 23:44:05] ThreadGetProcessExitCode: no such process 83136
[2023-09-12 23:44:05] ThreadGetProcessExitCode: no such process 83135
d10sfan commented 1 year ago

On the first thing it looks like that's because the download look longer than 5 minutes which is the current timeout. I could increase that to something much longer.

Once that's taken care of it should work.

For the auto download that's on steams side so I don't have any control of that. As well letting the user pick is probably the best option since most people have multiple libraries.

I could add some additional details to the progress screen that they need to look at the steam window to start the download. I don't have the name of the app at that point but could at least say to look out for a download dialog

d10sfan commented 1 year ago

Also the logs you mentioned about resources not being freed is normal, that's a godot issue on close that I haven't figured out but it does not hurt anything, since it's on close

d10sfan commented 1 year ago

I might be able to minimize and show the window, I'll have to see what godot supports on that.

Thanks for testing, I'll have another build soon with some changes

d10sfan commented 1 year ago

There's a new build here: https://github.com/luxtorpeda-dev/luxtorpeda/actions/runs/6167481918

It adds some more details to the progress screen and increases the timeout, along with making it configurable. I didn't see a way with Godot to control the window show/hide state, so left that out.

Let me know how that goes, thanks!

Jpxe commented 1 year ago

I'll see if I can try it out later today.

It is possible to get Steam to download automatically/without prompting the user to press ok:

  • steam "steam://dev/console/ +app_install <AppID>" - will download directly and in the background. Works even when user doesn't have console enabled. Does nothing if it's already installed.

I think this command and auto download might be the best option. Especially when the popup isn't in the front and is easy to miss.

d10sfan commented 1 year ago

With the download automatically, I prefer to let the user decide with the prompt, in case they don't want to install it for whatever reason, as well that lets them pick their library

Jpxe commented 1 year ago

There's a new build here: https://github.com/luxtorpeda-dev/luxtorpeda/actions/runs/6167481918

It adds some more details to the progress screen and increases the timeout, along with making it configurable. I didn't see a way with Godot to control the window show/hide state, so left that out.

Let me know how that goes, thanks!

Both dependencies started to download ok but then Lux GUI crashed immediately. Log here: luxoutput.log

Jpxe commented 1 year ago

The one that I've been testing and that crashed was HL2: Downfall. I just tested Minerva and it downloaded HL1 ep1 without problems, lux gui didn't crash and game started. Not sure what's the difference causing the crashes.. Here's the updated log: luxoutput.log

d10sfan commented 1 year ago

On the one that's failing to launch, it isn't because of the client it looks like, it's because the engine is failing to launch:

When an error occurs in an engine, lux will exit, unless it's an error with a specific code, so that behavior is expected.

./run-downfall.sh: line 94: /home/jpx/.local/share/Steam/steamapps/common/SteamLinuxRuntime/scout-on-soldier-entry-point-v2: No such file or directory

As you can see, this is on the depot, so it should exist: https://steamdb.info/depot/1070561/

Does that file and path exist on your system?

Jpxe commented 1 year ago

It seems to be there so that's a little strange. Could Lux be checking for the file and closing before the download is finished?

Screenshot_20230915_185133

d10sfan commented 1 year ago

Currently, lux checks for the vdf being there and the folder being there. There might be a window where the files are being copied from the downloading space and the folder has been created.

I may have to put some metadata in the packages json to say for a particular app id, check if a certain file exists, and then if it does assume that it's ready. That might not be 100% though, because depending on how the files are copied, some might still be missing.

d10sfan commented 1 year ago

Do you know if there's some sort of signal we could use that the download is complete? Maybe a steam file that if no longer there that means the file is complete?

Jpxe commented 1 year ago

Do you know if there's some sort of signal we could use that the download is complete? Maybe a steam file that if no longer there that means the file is complete?

What about doing a file size check for all the needed files? You can get the file sizes from the depots on steamdb: https://steamdb.info/depot/1070561/

d10sfan commented 1 year ago

From looking at the data we're getting from the vdf, looks like that gives us a nice payload to look for:

{ app_id: 243730, path: "/run/media/dnimon/Storage/SteamLibrary/steamapps/common/Source SDK Base 2013 Singleplayer", name: Some("Source SDK Base 2013 Singleplayer"), universe: Some(Public), launcher_path: None, state_flags: Some([FullyInstalled]), last_updated: Some(SystemTime { tv_sec: 1695052190, tv_nsec: 0 }), update_result: Some(0), size_on_disk: Some(8192132063), build_id: Some(397216), bytes_to_download: Some(4973367280), bytes_downloaded: Some(4973367280), bytes_to_stage: Some(8192132063), bytes_staged: Some(8192132063), staging_size: Some(0), target_build_id: Some(397216), auto_update_behavior: KeepUpToDate, allow_other_downloads_while_running: UseGlobalSetting, scheduled_auto_update: None, full_validate_before_next_update: false, full_validate_after_next_update: false, installed_depots: {243731: Depot { manifest: 7649573089460931720, size: 7884009941, dlc_app_id: None }, 243734: Depot { manifest: 2038873838433757169, size: 308720478, dlc_app_id: None }}, staged_depots: {}, user_config: {"BetaKey": "upcoming", "additionalcontent": "380,220", "language": "english", "platform_override_dest": "", "platform_override_source": ""}, mounted_config: {"BetaKey": "upcoming", "additionalcontent": "380,220", "language": "english", "platform_override_dest": "", "platform_override_source": ""}, install_scripts: {}, shared_depots: {}, last_user: Some(SteamID(76561197990646384) {ID: 30380656, Instance: Desktop, Type: Individual, Universe: Public}) }

The main thing in there is state_flags: Some([FullyInstalled])

If I see that, I should be able to use that to consider it ready to go. I'll implement that soon and provide a build, if you can try that out and see what you think.

d10sfan commented 1 year ago

Implemented in https://github.com/luxtorpeda-dev/luxtorpeda/actions/runs/6225375926, once that's done, please give that a try and let me know what you think.

d10sfan commented 1 year ago

Any luck with the latest build?

Jpxe commented 1 year ago

Any luck with the latest build?

I did try it and got a crash again. It was likely the game engine. Lux closed/crashed but I later realized I had changed the lux config settings, and I think there was a setting for closing lux GUI directly after launch? so that's probably why.

I will try to test it again properly. I'm heading to work now but I should be able to look at it this evening. Do you have any recommendations for how to test a build like this? Last time I changed the vdf file to rename it to luxtorpeda-test in Steam

Jpxe commented 1 year ago

Tested Downfall, Minerva and Resistance Element. Souce SDK and Linux Runtime 1.0 download works. Lux didn't seem to check for/or download HL2EP1 so Minerva crashed when Lux tried to launch it. I downloaded it manually and then it worked. Resistance Element checked for HL2EP2 and downloaded it.

Fix HL2EP1 check and install for Minerva and then it looks good!

Jpxe commented 1 year ago

Are there any more games I should test?

Is it implemented for any of these?

d10sfan commented 1 year ago

If you search for "app_ids_deps": [ you'll see a list of games that use it in the packages json metadata. So feel free to test if you would like, thanks!

I'll look at the ep1, that may be something related to it being shared with half life 2, I'm asking for the app_id (380).

Could you provide a log of your attempt with minerva, where you try and want it to install ep1? As well, does it work on a normal case?

Jpxe commented 1 year ago

Here's the log for all the games I tested: lux6225375926.log

d10sfan commented 1 year ago

What were the results from those tests? did any of them fail?

Jpxe commented 1 year ago

Only Minerva. It's the log for the tests I did previously here: https://github.com/luxtorpeda-dev/luxtorpeda/issues/238#issuecomment-1730878274 I haven't done any new tests yet

d10sfan commented 1 year ago

I wonder if it's because half life 2 episode 1 is part of half life 2 so it's getting confused messages there. While it's downloading and then completed can you check the vdf file for the app id in your steam library and paste the results here

Jpxe commented 1 year ago

What vdf file is it in and where is it located?

d10sfan commented 1 year ago

It'll be on your steam library then steamapps/appmanifest_appid.acf

If you could copy the contents of that file when you first do the install of hl 2 ep1 and then when it's finished, that'd be great, thanks!

Jpxe commented 1 year ago

After I uninstalled HL2EP1 this is the content of appmanifest_380.acf:

"AppState"
{
    "appid"     "380"
    "universe"      "1"
    "name"      "Half-Life 2: Episode One"
    "StateFlags"        "68"
    "installdir"        "Half-Life 2"
    "LastUpdated"       "1695363706"
    "SizeOnDisk"        "1771279148"
    "StagingSize"       "0"
    "buildid"       "10293437"
    "LastOwner"     "76561197982408936"
    "UpdateResult"      "0"
    "BytesToDownload"       "0"
    "BytesDownloaded"       "0"
    "BytesToStage"      "0"
    "BytesStaged"       "0"
    "TargetBuildID"     "0"
    "AutoUpdateBehavior"        "0"
    "AllowOtherDownloadsWhileRunning"       "0"
    "ScheduledAutoUpdate"       "0"
    "InstalledDepots"
    {
        "389"
        {
            "manifest"      "6097040002094797798"
            "size"      "1148800633"
        }
        "380"
        {
            "manifest"      "8345042109147019893"
            "size"      "622478515"
        }
    }
    "UserConfig"
    {
        "language"      "english"
        "BetaKey"       "public"
    }
    "MountedConfig"
    {
        "language"      "english"
        "BetaKey"       "public"
    }
}

After installed (installed directly when I pressed install, so seems to be already on disk):

"AppState"
{
    "appid"     "380"
    "universe"      "1"
    "name"      "Half-Life 2: Episode One"
    "StateFlags"        "4"
    "installdir"        "Half-Life 2"
    "LastUpdated"       "1695363706"
    "SizeOnDisk"        "1771279148"
    "StagingSize"       "0"
    "buildid"       "10293437"
    "LastOwner"     "76561197982408936"
    "AutoUpdateBehavior"        "0"
    "AllowOtherDownloadsWhileRunning"       "0"
    "ScheduledAutoUpdate"       "0"
    "InstalledDepots"
    {
        "389"
        {
            "manifest"      "6097040002094797798"
            "size"      "1148800633"
        }
        "380"
        {
            "manifest"      "8345042109147019893"
            "size"      "622478515"
        }
    }
    "SharedDepots"
    {
        "221"       "220"
        "224"       "220"
    }
    "UserConfig"
    {
        "language"      "english"
        "BetaKey"       "public"
    }
    "MountedConfig"
    {
        "language"      "english"
        "BetaKey"       "public"
    }
}
Jpxe commented 1 year ago

So it seems like HL2EP1 is automatically installed if you install HL2EP2.

EDIT: yeah checking "BytesToDownload" shows that it's 0 both when uninstalled and installed. So i'ts actually never uninstalled if you have HL2EP2 installed.

I uninstalled HL2EP2 and that changed the behavior of HL2EP1: when I pressed uninstall it removed the VDF file completely. When I pressed install it starts downloading (instead of being done directly like previously).

Here's the VDF during HL2EP1 downloading and HL2EP2 uninstalled:

{
    "appid"     "380"
    "universe"      "1"
    "name"      "Half-Life 2: Episode One"
    "StateFlags"        "1026"
    "installdir"        "Half-Life 2"
    "LastUpdated"       "0"
    "SizeOnDisk"        "0"
    "StagingSize"       "0"
    "buildid"       "0"
    "LastOwner"     "76561197982408936"
    "UpdateResult"      "4"
    "BytesToDownload"       "3193618928"
    "BytesDownloaded"       "371435776"
    "BytesToStage"      "5591013505"
    "BytesStaged"       "677561643"
    "TargetBuildID"     "10293437"
    "AutoUpdateBehavior"        "0"
    "AllowOtherDownloadsWhileRunning"       "0"
    "ScheduledAutoUpdate"       "0"
    "InstalledDepots"
    {
    }
    "SharedDepots"
    {
        "221"       "220"
        "224"       "220"
    }
    "UserConfig"
    {
        "language"      "english"
        "BetaKey"       "public"
    }
    "MountedConfig"
    {
    }
}

Here's the VDF file after HL2EP1 download is completed and HL2EP2 still uninstalled:

"AppState"
{
    "appid"     "380"
    "universe"      "1"
    "name"      "Half-Life 2: Episode One"
    "StateFlags"        "4"
    "installdir"        "Half-Life 2"
    "LastUpdated"       "1695663507"
    "SizeOnDisk"        "1771279148"
    "StagingSize"       "0"
    "buildid"       "10293437"
    "LastOwner"     "76561197982408936"
    "UpdateResult"      "0"
    "BytesToDownload"       "3193618928"
    "BytesDownloaded"       "3193618928"
    "BytesToStage"      "5591013505"
    "BytesStaged"       "5591013505"
    "TargetBuildID"     "10293437"
    "AutoUpdateBehavior"        "0"
    "AllowOtherDownloadsWhileRunning"       "0"
    "ScheduledAutoUpdate"       "0"
    "InstalledDepots"
    {
        "389"
        {
            "manifest"      "6097040002094797798"
            "size"      "1148800633"
        }
        "380"
        {
            "manifest"      "8345042109147019893"
            "size"      "622478515"
        }
    }
    "SharedDepots"
    {
        "221"       "220"
        "224"       "220"
    }
    "UserConfig"
    {
        "language"      "english"
        "BetaKey"       "public"
    }
    "MountedConfig"
    {
        "language"      "english"
        "BetaKey"       "public"
    }
}
d10sfan commented 1 year ago

Interesting, thanks, what was the behavior of the client if you uninstalled ep2 and ep1? Does it work as expected?

And if you leave all of them installed, does minerva launch?

Jpxe commented 1 year ago

Interesting, thanks, what was the behavior of the client if you uninstalled ep2 and ep1? Does it work as expected?

Works as intended. It asked the download ep1 and then launched the game when the download had finished.

And if you leave all of them installed, does minerva launch?

Yes

Jpxe commented 1 year ago

It also worked after I "uninstalled" ep1 from steam.

d10sfan commented 1 year ago

Is there any case now where minvera is not working? Or is it working as expected now?

Thanks!

Jpxe commented 1 year ago

It's not working when I paus ep1 downloading. I think it's the same condition as the first time I didn't work.

Here's the log output:

/bin/sh\0-c\0/home/jpx/.local/share/Steam/ubuntu12_32/reaper SteamLaunch AppId=235780 -- /home/jpx/.local/share/Steam/ubuntu12_32/steam-launch-wrapper -- '/home/jpx/.local/share/Steam/steamapps/common/SteamLinuxRuntime_sniper'/_v2-entry-point --verb=waitforexitandrun -- '/home/jpx/.local/share/Steam/compatibilitytools.d/luxtorpeda'/luxtorpeda.sh waitforexitandrun  '/home/jpx/.local/share/Steam/steamapps/common/MINERVA/hl2.exe' -game metastasis\0
ERROR: ld.so: object '/home/jpx/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ERROR: ld.so: object '/home/jpx/.local/share/Steam/ubuntu12_64/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored.
ERROR: ld.so: object '/home/jpx/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ERROR: ld.so: object '/home/jpx/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
ERROR: ld.so: object '/home/jpx/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
WARNING: discarding _NET_WM_PID 2 as invalid for X11 window - use specialized XCB_X11_TO_PID function!
WARNING: discarding _NET_WM_PID 2 as invalid for X11 window - use specialized XCB_X11_TO_PID function!
WARNING: discarding _NET_WM_PID 2 as invalid for X11 window - use specialized XCB_X11_TO_PID function!
LD_PRELOAD found with /tmp/pressure-vessel-libs-4SJUB2/${PLATFORM}/gameoverlayrenderer.so
pid 22787 != 22786, skipping destruction (fork without exec?)
Initialize GDExtension API for Rust: Godot Engine v4.1.1.stable.official
Fossilize INFO: Overriding serialization path: "/home/jpx/.local/share/Steam/steamapps/shadercache/235780/fozpipelinesv6/steamapprun_pipeline_cache".
20:19:13 [INFO] setup_logging success
20:19:13 [INFO] config_file_path exists, reading
20:19:13 [INFO] luxtorpeda version: 66.1.0
20:19:13 [INFO] steam_app_id: "235780"
20:19:13 [INFO] original command: ["/home/jpx/.local/share/Steam/compatibilitytools.d/luxtorpeda/luxtorpeda.x86_64", "waitforexitandrun", "/home/jpx/.local/share/Steam/steamapps/common/MINERVA/hl2.exe", "-game", "metastasis"]
20:19:13 [INFO] working dir: Ok("/home/jpx/.local/share/Steam/steamapps/common/MINERVA")
20:19:13 [INFO] tool dir: "/home/jpx/.local/share/Steam/compatibilitytools.d/luxtorpeda"
20:19:13 [INFO] config_file_path exists, reading
20:19:13 [INFO] update_packages_json. found hash: 6e87e20934973bcca07d7c77ea041ffb6e947479a598e85af9475ca8434fd2d8
20:19:13 [INFO] update_packages_json. found hash and remote hash: 6e87e20934973bcca07d7c77ea041ffb6e947479a598e85af9475ca8434fd2d8 6e87e20934973bcca07d7c77ea041ffb6e947479a598e85af9475ca8434fd2d8
20:19:13 [INFO] packages_json_file exists, reading
20:19:13 [INFO] "/home/jpx/.config/luxtorpeda/user-packages.json"
20:19:13 [INFO] source-sdk-2013-235780-27.tar.xz found in cache (skip)
20:19:13 [INFO] packages_json_file exists, reading
20:19:13 [INFO] "/home/jpx/.config/luxtorpeda/user-packages.json"
20:19:13 [INFO] source-sdk-2013-235780-27.tar.xz found in cache (skip)
20:19:13 [INFO] Downloads is empty
20:19:13 [INFO] packages_json_file exists, reading
20:19:13 [INFO] "/home/jpx/.config/luxtorpeda/user-packages.json"
20:19:13 [INFO] json:
20:19:13 [INFO] Game { game_name: "MINERVA", engine_name: "Source SDK 2013", command: Some("./run-metastasis.sh"), command_args: [], download_config: None, cloud_not_available: true, cloud_supported: false, cloud_available: false, cloud_issue: false, download: [DownloadItem { name: "source-sdk-2013", url: "https://github.com/luxtorpeda-dev/packages/releases/download/source-sdk-2013-27/", file: "source-sdk-2013-235780-27.tar.xz", cache_by_name: false }], app_id: "235780", choices: None, notices: Some([Notice { label: Some("Requires Half-Life 2 Episode 1 to be installed."), key: Some("app_ids_deps"), value: None }]), controller_steam_default: false, use_original_command_directory: false, app_ids_deps: Some([243730, 1070560, 380]), setup: None, commands: None }
20:19:13 [INFO] config_file_path exists, reading
20:19:13 [INFO] hash_check_install is enabled, checking for source-sdk-2013, game_command_file_found: true
20:19:13 [INFO] source-sdk-2013.hash has been found, checking hash against file
20:19:13 [INFO] cached hash is ac8f24f6df671f71c4b4bc33daeb7700082d4edea635295ac6584819fd6faad2; install file hash is ac8f24f6df671f71c4b4bc33daeb7700082d4edea635295ac6584819fd6faad2
20:19:13 [INFO] hash for source-sdk-2013 is same, skipping install
20:19:13 [INFO] get_app_id_deps_paths. searching for app id 243730.
20:19:13 [INFO] get_app_id_deps_paths. app id 243730 found at "/home/jpx/.local/share/Steam/steamapps/common/Source SDK Base 2013 Singleplayer".
20:19:13 [INFO] get_app_id_deps_paths. searching for app id 1070560.
20:19:13 [INFO] get_app_id_deps_paths. app id 1070560 found at "/home/jpx/.local/share/Steam/steamapps/common/SteamLinuxRuntime".
20:19:13 [INFO] get_app_id_deps_paths. searching for app id 380.
20:19:13 [INFO] get_app_id_deps_paths. app id 380 found at "/home/jpx/.local/share/Steam/steamapps/common/Half-Life 2".
20:19:13 [INFO] run_game. get_app_id_deps_paths completed
20:19:13 [INFO] run: "./run-metastasis.sh" with args: [] ["-game", "metastasis"]
20:19:13 [INFO] config_file_path exists, reading
20:19:13 [INFO] controller_detection_change: 
~/.local/share/Steam/steamapps/common/MINERVA/metastasis ~/.local/share/Steam/steamapps/common/MINERVA
'../shorewave003a.vmt' -> 'materials/test/shorewave003a.vmt'
'../gameinfo.txt' -> 'gameinfo.txt'
~/.local/share/Steam/steamapps/common/MINERVA
Automatically detected sdkpath at /home/jpx/.local/share/Steam/steamapps/common/Source SDK Base 2013 Singleplayer
Automatically detected runtimepath at /home/jpx/.local/share/Steam/steamapps/common/SteamLinuxRuntime
Automatically detected hlpath at /home/jpx/.local/share/Steam/steamapps/common/Half-Life 2
~/.local/share/Steam/steamapps/common/MINERVA/metastasis ~/.local/share/Steam/steamapps/common/MINERVA
mkdir: cannot create directory 'bin': File exists
~/.local/share/Steam/steamapps/common/MINERVA
pid 22827 != 22823, skipping destruction (fork without exec?)
/home/jpx/.local/share/Steam/steamapps/common/SteamLinuxRuntime/scout-on-soldier-entry-point-v2[22823]: Command to run: /home/jpx/.local/share/Steam/steamapps/common/Half-Life\ 2/hl2.sh -game /home/jpx/.local/share/Steam/steamapps/common/MINERVA/metastasis -steam +mat_hdr_level 2 -game metastasis 
pid 22828 != 22823, skipping destruction (fork without exec?)
/home/jpx/.local/share/Steam/steamapps/common/SteamLinuxRuntime/scout-on-soldier-entry-point-v2[22823]: Using default scout runtime /home/jpx/.local/share/Steam/ubuntu12_32/steam-runtime
pid 22833 != 22823, skipping destruction (fork without exec?)
/home/jpx/.local/share/Steam/steamapps/common/SteamLinuxRuntime/scout-on-soldier-entry-point-v2[22823]: scout runtime version 'steam-runtime_0.20230801.56012'
pid 22849 != 22823, skipping destruction (fork without exec?)
/home/jpx/.local/share/Steam/steamapps/common/SteamLinuxRuntime/scout-on-soldier-entry-point-v2[22823]: Running: /home/jpx/.local/share/Steam/steamapps/common/SteamLinuxRuntime/var/steam-runtime/run.sh env LD_PRELOAD=/tmp/pressure-vessel-libs-4SJUB2/\$\{PLATFORM\}/gameoverlayrenderer.so steam-runtime-launcher-interface-0 scout-in-container:scout-on-soldier /home/jpx/.local/share/Steam/steamapps/common/Half-Life\ 2/hl2.sh -game /home/jpx/.local/share/Steam/steamapps/common/MINERVA/metastasis -steam +mat_hdr_level 2 -game metastasis 
20:19:13 [INFO] run returned with exit status: 127
ERROR: BUG: Unreferenced static string to 0: Physics2DConstraintSolveIslands
   at: unref (core/string/string_name.cpp:129)
ERROR: BUG: Unreferenced static string to 0: Physics2DConstraintSetup
   at: unref (core/string/string_name.cpp:129)
ERROR: BUG: Unreferenced static string to 0: @export_enum
   at: unref (core/string/string_name.cpp:131)
ERROR: BUG: Unreferenced static string to 0: @export_flags
   at: unref (core/string/string_name.cpp:131)
ERROR: BUG: Unreferenced static string to 0: @export_placeholder
   at: unref (core/string/string_name.cpp:131)
ERROR: BUG: Unreferenced static string to 0: @export
   at: unref (core/string/string_name.cpp:131)
ERROR: BUG: Unreferenced static string to 0: @export_multiline
   at: unref (core/string/string_name.cpp:131)
ERROR: BUG: Unreferenced static string to 0: @export_range
   at: unref (core/string/string_name.cpp:131)
ERROR: BUG: Unreferenced static string to 0: @warning_ignore
   at: unref (core/string/string_name.cpp:131)
ERROR: BUG: Unreferenced static string to 0: Variant
   at: unref (core/string/string_name.cpp:129)
ERROR: BUG: Unreferenced static string to 0: @icon
   at: unref (core/string/string_name.cpp:131)
Godot Engine v4.1.1.stable.official.bd6af8e0e - https://godotengine.org
Vulkan API 1.3.242 - Forward+ - Using Vulkan Device #0: NVIDIA - NVIDIA GeForce GTX 980

ERROR: Pages in use exist at exit in PagedAllocator: N7Variant5Pools11BucketLargeE
   at: ~PagedAllocator (./core/templates/paged_allocator.h:170)
ERROR: Pages in use exist at exit in PagedAllocator: N7Variant5Pools12BucketMediumE
   at: ~PagedAllocator (./core/templates/paged_allocator.h:170)
ERROR: Pages in use exist at exit in PagedAllocator: N7Variant5Pools11BucketSmallE
   at: ~PagedAllocator (./core/templates/paged_allocator.h:170)
ERROR: BUG: Unreferenced static string to 0: text_set
   at: unref (core/string/string_name.cpp:131)
ERROR: BUG: Unreferenced static string to 0: lines_edited_from
   at: unref (core/string/string_name.cpp:131)
ERROR: BUG: Unreferenced static string to 0: GodotPhysicsDirectSpaceState2D
   at: unref (core/string/string_name.cpp:131)
ERROR: BUG: Unreferenced static string to 0: interface_added
   at: unref (core/string/string_name.cpp:131)
ERROR: BUG: Unreferenced static string to 0: frame_pre_draw
   at: unref (core/string/string_name.cpp:131)
ERROR: BUG: Unreferenced static string to 0: frame_post_draw
   at: unref (core/string/string_name.cpp:131)
ERROR: BUG: Unreferenced static string to 0: SceneReplicationInterface
   at: unref (core/string/string_name.cpp:131)
ERROR: BUG: Unreferenced static string to 0: physics_frame
   at: unref (core/string/string_name.cpp:131)
ERROR: BUG: Unreferenced static string to 0: bus_layout_changed
   at: unref (core/string/string_name.cpp:131)
ERROR: BUG: Unreferenced static string to 0: SceneCacheInterface
   at: unref (core/string/string_name.cpp:131)
ERROR: BUG: Unreferenced static string to 0: SceneRPCInterface
   at: unref (core/string/string_name.cpp:131)
ERROR: BUG: Unreferenced static string to 0: fallback_changed
   at: unref (core/string/string_name.cpp:131)
ERROR: BUG: Unreferenced static string to 0: completed
   at: unref (core/string/string_name.cpp:131)
ERROR: BUG: Unreferenced static string to 0: child_entered_tree
   at: unref (core/string/string_name.cpp:131)
Uploaded AppInterfaceStats to Steam

Here's the vdf for 380:

"AppState"
{
    "appid"     "380"
    "universe"      "1"
    "name"      "Half-Life 2: Episode One"
    "StateFlags"        "1026"
    "installdir"        "Half-Life 2"
    "LastUpdated"       "0"
    "SizeOnDisk"        "0"
    "StagingSize"       "0"
    "buildid"       "0"
    "LastOwner"     "76561197982408936"
    "UpdateResult"      "4"
    "BytesToDownload"       "3193618928"
    "BytesDownloaded"       "118542624"
    "BytesToStage"      "5591013505"
    "BytesStaged"       "300073414"
    "TargetBuildID"     "10293437"
    "AutoUpdateBehavior"        "0"
    "AllowOtherDownloadsWhileRunning"       "0"
    "ScheduledAutoUpdate"       "0"
    "InstalledDepots"
    {
    }
    "SharedDepots"
    {
        "221"       "220"
        "224"       "220"
    }
    "UserConfig"
    {
        "language"      "english"
        "BetaKey"       "public"
    }
    "MountedConfig"
    {
    }
}
d10sfan commented 1 year ago

On the file, is that when you were paused, or in a different state?