Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Steam not logging Godot usage time correctly. #18233

Closed
edg-l opened this issue Apr 16, 2018 · 51 comments · Fixed by #79126
Closed

Steam not logging Godot usage time correctly. #18233

edg-l opened this issue Apr 16, 2018 · 51 comments · Fixed by #79126

Comments

@edg-l
Copy link

edg-l commented Apr 16, 2018


Bugsquad note: This issue has been confirmed several times already. No need to confirm it further.


Godot version:
3.0.2 (steam)

OS/device including version:
Windows 10

Issue description:
Steam can't log correctly the time spent on Godot. It stops logging the time after you start a project, i guess because it spawns a new process. This also happened in godot 2.

I would like to see this fixed, since i like to know how much time i spend on things.

I found the same issue discussed on steam forums, I even read that this was going to get fixed in godot 3.0 but ofc it's not.

Related discussions:

@akien-mga
Copy link
Member

For anyone who wants to investigate, it seems to work fine on Linux, Steam manages to follow the process forking when opening a project from the project manager. But Windows doesn't seem to handle it (at least Windows 10 - there are reports of it working fine on Windows 7), and some OSX users seem to experience the issue too.

@ThunderFD
Copy link

ThunderFD commented Apr 26, 2018

yeah I'd really love if this was fixed somehow ...

here's a link to a comment on steam summing it up:
https://steamcommunity.com/app/404790/discussions/0/412448158161884844/?ctp=2#c3211505894119922106

@Dimonasdf
Copy link
Contributor

I am currently launching second project editor just to log the time, which does not feel very right and also I sometimes forget to do so. I really hope this is going to be fixed some time soon.

@Mochnant
Copy link

Mochnant commented Jul 7, 2018

It does not work fine on Windows 7. It only tracks time at the project management window. When opening a project it does not track, and Steam does not show as in "Godot Engine".

Would like to see this fixed. Time tracking is a big part of why I used Steam for the distribution.

@wingedadventurer
Copy link
Contributor

Couldn't a simple fix be that Steam logs time in the console that is constantly open when engine is running?

@Stralle
Copy link

Stralle commented Jan 22, 2019

Yeah, that should be done as @wingedadventurer said.

@aaronfranke
Copy link
Member

I experience this issue on Linux when starting Godot with a .desktop file that shows the terminal. My goal was to be able to keep the terminal open to read error messages if the engine crashes, so I launched Godot with the following .desktop file:

[Desktop Entry]
Version=1.0
Type=Application
Name=Godot 3.0 Bad
Icon=/home/aaronfranke/Documents/Godot/icon.png
Exec=sh -c "/home/aaronfranke/Documents/Godot/3.0/Godot; sleep 5"
Categories=Game;Development;Godot;
Terminal=true

This causes the editor to instantly close 5 seconds after I open a project.

@ghost
Copy link

ghost commented Mar 17, 2019

I have made a duplicate of this issue, probably because I have searched for the keywords "Steam" and "hour", not "time". Sorry, for that.

What I will probably do myself to solve this problem is to make a small wrapper that starts Godot, replace the Godot Steam binary with this wrapper, which waits until there is no Godot binary running for 10 seconds, then exits.

Also, I thought this bug was fixed already. I remember it working correctly before 3.1, but that's just probably my brain being messed up.

@Dentrax
Copy link
Contributor

Dentrax commented Mar 19, 2019

@reduz @akien-mga

Still not counting in v3.1 stable on Windows 10.

@ghost
Copy link

ghost commented Mar 25, 2019

I have created the wrapper for my personal needs, but in case someone else needs it too, I have uploaded it here:
https://github.com/UnleavenedEagle/SimpleWrapperLauncher/

@Mochnant
Copy link

Mochnant commented Apr 6, 2019

I would really love to see this fixed. Coming up on a year now with no action.

Thanks for the work around, @UnleavenedEagle !

@AnnsAnns
Copy link

AnnsAnns commented Apr 20, 2019

Given that people finding this on steam will only see people with 3-4 hours at max (even though those people may have spend thousands of hours in the engine), this may actual affect potential users. When I first read through the reviews I was confused why exactly nobody on steam used Godot for more than a few hours.

@Mochnant
Copy link

That's a good point, @tumGER. I have managed to actually log time with @UnleavenedEagle's fix, so hopefully that will encourage the devs to make this change.

@cybereality
Copy link
Contributor

It seems to work for me on Ubuntu 19.10. I have 113 hours clocked.

However, I agree that it would be nice to get this fixed across the board, since it could have an influence on new users reading reviews (as your play time is shown when you write a review).

Also, I notice that there are several games on Steam that use launchers (like GTA5, Tomb Raider, etc.) so there must be a way they are doing it, since those games do track time correctly.

@viteo
Copy link

viteo commented Jan 16, 2020

Found a workaround for Windows:
https://steamcommunity.com/sharedfiles/filedetails/?id=1970276543

@ARPasescu
Copy link

To add to this, now that 3.2 has launched, you now have an option to hide the console window in the editor settings (console still starts but gets hidden a couple seconds after Godot launches). Not sure whether this breaks some of the workarounds that make Steam track the console window instead of the project manager window.

But yeah, this is getting ridiculous now. A big portion of the overall engine downloads probably comes from Steam because of how nice and convenient it is. This HAS to be fixed, it's trailing along almost two years now. I've probably spent hundreds of hours working in this given that I seemingly spent 14 hours in the project manager alone, which usually stays open for about a second. Tracking time is a big part of the Steam experience which is marred because of something seemingly easy to fix.

@Calinou
Copy link
Member

Calinou commented Jan 31, 2020

@Rriik We're still looking for someone to propose a workaround we can integrate without any downsides or quirks 🙂

If it can't be submitted via a pull request, please write a comment describing all the required steps here and Akien will take a look.

@ghost
Copy link

ghost commented Feb 3, 2020

@Rriik My method is still working. I'm not sure about @viteo's method, but I've tried it out before, and there was a little flaw with it, that is it didn't exit the wrapper console after Godot has been closed, you had to close it manually and if you didn't close it, it would keep running even after Godot exited.

@Calinou When you start Godot via Steam, it launches Godot with the arguments "C:\Program Files (x86)\Steam\steamapps\common\Godot Engine\godot.windows.opt.tools.64.exe" --path %USERPROFILE% -p. When selecting the project, Godot will start a new Godot process with the arguments "C:\Program Files (x86)\Steam\steamapps\common\Godot Engine\godot.windows.opt.tools.64.exe" "--path" "C:/MyGodotProject" "--editor0", and exits the first process. As the original process exits, Steam assumes that the application has exited. This is the cause of the problem.

You can solve this by letting the first process only exit when the second process exits, and only exiting the project list window and not the process after selecting a project.

@Calinou
Copy link
Member

Calinou commented Feb 3, 2020

@UnleavenedEagle This would require a significant rework to keep the project manager process running after a project was opened. Also, remember that you can go back to the project manager while a project is open by using Project > Quit to Project List. In this case, what would happen to the running project manager process with the hidden window? In theory, it could be shown again, but we need some way to signal this to the hidden window from the editor.

@thinkier-tim
Copy link

thinkier-tim commented Feb 20, 2020

@Calinou As I understand it, the typical method of signaling a separate application is to use networking. For example, the recommended approach when someone wants to create an MDI application with Godot is to network multiple applications together. To be honest, that sounds like an awful lot of work to squash one teeny-tiny bug - there should be multiple benefits to such a massive undertaking.

Using a wrapper executable (such as UnleavenedEagle's C# script) as the parent of all the applications seems to be a functional workaround (both in Windows and in Linux; unsure about MacOS - and yes, this is also an issue on Linux-based Steam); perhaps wrapping the Godot executable in a small "launcher" executable could be a viable solution? I'm unsure as to what functionality (error messages, etc.) might be lost if the engine itself were not the top-level application, but I see no difference in application behavior except that Steam is able to properly track my time "in game" when the wrapper is in use.

As for the severity of this (arguably trivial) issue, having such an obvious problem with Steam integration in an application designed for creating games (which might then be published on Steam) says potentially unpretty (and arguably untrue) things about that application and its competency at achieving the stated goal. I love Godot, and I'm not trying to offend anyone when I say this is likely not doing wonderful things for Godot's image in the Steam community.

I'm not confident enough to contribute myself, but an eager and knowledgeable contributor might see this as low-hanging fruit. I'll keep my fingers crossed that these "teething issues" with Steam integration are fixed quickly :-)

@Arknark
Copy link

Arknark commented Jun 19, 2020

I have created the wrapper for my personal needs, but in case someone else needs it too, I have uploaded it here:
https://github.com/UnleavenedEagle/SimpleWrapperLauncher/

Worked easily and perfectly @UnleavenedEagle, thank you :)

@TaraSophieDev
Copy link

The problem's still here. I don't know much about how it works, but can't it be set to the CMD console where Godot is also runnin instead of the project manager?

@Arknark
Copy link

Arknark commented Jun 28, 2020

The problem's still here. I don't know much about how it works, but can't it be set to the CMD console where Godot is also runnin instead of the project manager?

Yeah, it stopped working randomly. I found another workaround:

After launching your project you'll notice that's when Steam stops reading that Godot is open, so if you launch Godot again and keep it on the launch screen, it'll keep logging your time.

@LazyAlarm
Copy link

This issue seemed to have been fixed in Godot 4.0 and was working great. But in Godot 4.1 it's broken again.

Same issue: works with the project manager. Stops tracking as soon as I open a project.

@wingedadventurer
Copy link
Contributor

i did a clean install of Windows, Steam, and Godot (4.1.3) and hours are tracked properly now. does that mean it is fixed?

@Vanawy
Copy link

Vanawy commented Dec 18, 2023

Not logging on
Godot v4.2.1.stable - Windows 10.0.22621

@thinkier-tim
Copy link

thinkier-tim commented Jan 15, 2024

The initial reports of this issue on Steam were made in 2016. Why is this still a problem in 2024?

@Calinou
Copy link
Member

Calinou commented Jan 15, 2024

The initial reports of this issue on Steam were made in 2016. Why is this still a problem in 2024?

We don't know a way to resolve the issue that has no downsides for non-Steam users and doesn't involve a Windows-only wrapper executable. I don't think a wrapper executable is a great solution to the problem as it involves a lot of added maintenance (such as managing its codebase that is completely separate from Godot).

The only reasonable alternative I see is merging the project manager and editor processes together, which is desired for some platforms (web editor, Android, future iOS port) but is a ton of work and would also come with some downsides.

@thinkier-tim
Copy link

thinkier-tim commented Jan 15, 2024

We don't know a way to resolve the issue that has no downsides for non-Steam users and doesn't involve a Windows-only wrapper executable.

1: Why would a wrapper executable be a Windows-only solution? What "codebase" do you envision for an app that simply babysits the process chain and exits when the last child does?

2: Why is a Steam-specific solution unacceptable? Steam users already get a "streamlined experience", with no option for a console window and no option for a language other than GDScript.

3: Leaving as it is makes it look like the project is either unwilling or unable to fix it. Are we malicious, or incompetent?

@AnnsAnns
Copy link

There is no reason to attack the maintainers, it instantly voids the valid arguments made beforehand. Yes, this issue does create some problems as we discussed 5 years ago but in the grand scheme of things it's still a tiny issue.

@thinkier-tim
Copy link

There is no reason to attack the maintainers, it instantly voids the valid arguments made beforehand. Yes, this issue does create some problems as we discussed 5 years ago but in the grand scheme of things it's still a tiny issue.

I'm not attacking anyone, I'm pointing out the optics of the situation. It looks like the devs don't care, and it looks like the software doesn't work. At best, there's a perception of "jank" and an impression of apathy, because of a supposedly minor issue that has existed for the better part of a decade.

If more than 2,000 contributors can't figure out how to tell Steam the editor is still running after a project to edit is selected, eight years after a dev responded and said they'd look into it... why should (potential) users think there aren't deeper "insurmountable issues" that make this entire product unsuitable for creating games... especially if they want to publish those games on Steam?

Is this really a problem that can't be fixed?

@AThousandShips
Copy link
Member

AThousandShips commented Jan 15, 2024

You were given clear reasons why this isn't trivial to fix and why it has negative consequences for everyone else, think about why you need to ignore every point raised in order to make your argument

And for what? Tracking use time for the editor in steam? Why is that so extremely important you think we are actively ignoring this hugely important issue because we haven't solved it yet?

You're welcome to fix it yourself if it's so easy 🙂 (also just go ahead and test the linked PR which might solve this instead of complaining 🙃)

@thinkier-tim
Copy link

You were given clear reasons why this isn't trivial to fix and why it has negative consequences for everyone else

No, I was given hand-wavy excuses as to why no one can possibly find a workable solution (this is sarcasm, in case it didn't come through)... but UnleavenedEagle's wrapper seemed to work quite well for many users, for many years. Unfortunately, that github account no longer exists, so users are back to "run the editor twice" as a workaround. Yes, really.

And for what? Tracking use time for the editor in steam? Why is that so extremely important you think we are actively ignoring this hugely important issue because we haven't solved it yet?

What do you have against people wanting to track their usage time via a system that exists specifically for doing exactly that? Why shouldn't Godot properly integrate with Steam?

According to steamdb, somewhere between 200,000 and 1.2 million people own the Steam version of the software... but only a few hundred appear to actually be using it. Steam is only aware of the software's existence for a few seconds per session. Half the Steam reviews have less than 30 minutes of use time. Many of the people talking in the forums about their various issues have less than an hour "in-game" listed on their profiles. It looks like no one uses the software, which convinces others they shouldn't use it, either; the phrase "not ready for prime time" comes to mind.

All of that aside, this is supposedly a piece of software you can use to make games. Steam is the game distribution platform; nothing else even comes close in terms of userbase size, availability of content, or ease of use... Is Godot not capable of making games that run properly through Steam? If the Engine itself doesn't work right, why should anyone believe the games created by that engine will?

You're welcome to fix it yourself if it's so easy 🙂 (also just go ahead and test the linked PR which might solve this instead of complaining 🙃)

The tests for that PR seem to pass with flying colors; also, I don't (and shouldn't) have the access rights required to merge it.
What's holding it back? Why hasn't it been touched in 4 months?
You were the last one to touch it, according to the log... Whose court is this ball actually in?

Just as importantly (to me, anyway): why are you attacking me over this?

@AThousandShips
Copy link
Member

No one is attacking you, get over yourself...

I meant to test it out, run it and see if it works, that's how things are tested, no one said you should merge it so stop being ridiculous

I just updated the milestone because we released 4.2, and it very clearly wasn't in it, it's not my responsibility

@Mochnant
Copy link

As a casual follower of this thread, I still cannot understand why this has lingered on, unfixed, for so long, other than the project maintainers just don't understand why (or even if) this is important. The idea that is is too difficult or too time consuming is hard for me to credit.

@thinkier-tim
Copy link

Maybe this is a matter of perspective; maybe the issue is that the people in charge perceive this as a feature request, while the users see it as broken.

You're right, though... it's not a huge issue. People already think Godot can't handle 3D; what's the big deal if they think Godot can't even handle being on Steam?

@Mochnant
Copy link

To be clear, I consider this as something broken, in need of fixing. It was one of the first things I noticed when I was checking into Godot in 2018(!) and came and found this bug.

It's a broken window. After it lingers long enough, it starts to suggest a pattern, rightly or wrongly.

@Calinou
Copy link
Member

Calinou commented Jan 15, 2024

Regarding the linked PR, it has a very practical consequence too: #79126 (comment)

It would mean we'd either have to create dedicated Steam builds and double the build time for desktop platforms, or make all official builds have support for interacting with the proprietary Steam DLL (which is legal and doesn't force us to distribute the DLL outside Steam, but may concern some users1). The shim code added in the PR that interacts with the Steam DLL is open source, but the Steam DLL isn't.

Footnotes

  1. Traces of Godot attempting to open the Steam DLL will appear if you use a program like strace on Godot, so it is traceable even if the Steam DLL never touches your system.

@thinkier-tim
Copy link

It would mean we'd ... have to create dedicated Steam builds and double the build time for desktop platforms

Isn't that an automated process?

Isn't the version of the software distributed on Steam already its own build? If not, why isn't it?
It has no support for C#, and doesn't provide the console window; it's already a separate feature set.

@Calinou
Copy link
Member

Calinou commented Jan 15, 2024

Isn't that an automated process?

It's an automated process, but it's a lengthy one as Godot takes a long time to build, even on high-end CPUs. The builds are also relatively large in terms of file size. Considering there are other topics that may require us to multiply our build matrix, having to double the number of desktop builds just for Steam doesn't feel like it's worth it.

C# builds would also need to be built separately to have Steam integration as well, further complicating the eventual integration of C# support in the Steam version.

and doesn't provide the console window; it's already a separate feature set.

Regarding the console wrapper, I'm not sure why it's missing. It could probably be added but you'd have to choose it explicitly using Browse local files (perhaps it could be exposed via a Steam launch option).

@thinkier-tim
Copy link

thinkier-tim commented Jan 15, 2024

A little extra work to properly support what is arguably the largest software distribution network on the planet, the target of a huge proportion of the Godot userbase's efforts, the raison d'être for why many are using Godot in the first place... "doesn't feel like it's worth it"?
That seems... a bit short-sighted, to me.

Regarding the console wrapper, I'm not sure why it's missing. It could probably be added but you'd have to choose it explicitly using Browse local files (perhaps it could be exposed via a Steam launch option).

In the official downloads from the website, the "console" implementation is a separate executable; one which is not provided via the Steam install process. As far as I am aware, there is no Steam launch option that will launch an executable which was not downloaded.

If the console is already a built-on wrapper, then what's the show-stopper on simply wrapping the whole enchilada in something to babysit the process chain? UnleavenedEagle's wrapper solution was "quick and dirty", but appeared to work quite well, with (as far as I could tell) zero side effects other than adding a few MB to overall memory usage.

It feels like a reasonable assumption that the extra memory required could be reduced to a few KB, if it wasn't necessary to (re)include all the boilerplate and support libraries just to have a "parent" process watching all the children.

@thinkier-tim
Copy link

C# builds would also need to be built separately to have Steam integration as well, further complicating the eventual integration of C# support in the Steam version.

Let's keep the goalposts in one place, yeah?

This is a separate issue, one which is completely irrelevant to the issue at hand; there is not now and has never been C# support in the Steam version of Godot. Please don't point at this as a reason why the Steam version can't behave in a fashion that lets Steam see the engine is "running".

@viteo
Copy link

viteo commented Jan 16, 2024

Top Rated All Time guide on Steam is litterally "how to make babysit-process" for Godot.

Here is a temporary solution.

I would agree that Steam stats might influence the popularity of the engine. But I'm also assuming that a large portion of the audience doesn't use it through Steam at all.

@Minoxs
Copy link

Minoxs commented Mar 1, 2024

Just throwing my 2 cents here, but honestly, having Godot show up in the top charts of steam would bolster a lot of confidence to the engine. I still see a lot of people thinking of Godot as a neat side project when it's actually a very feature complete engine.

It might seem stupid that people get hung up on these little things (like counting time) rather than the big new features that could be made, but, just like games, it's the little things that really make a thing stand out.

I also can't quite understand what's so difficult about simply distributing to steam the already built binaries that are distributed on the website. Downloading from the website comes with a *_console.exe that if run through steam will always keep track of the time (because the console is never closed). Why not take that and use it? Why not make it an option?

@RPicster
Copy link
Contributor

Just throwing my 2 cents here, but honestly, having Godot show up in the top charts of steam would bolster a lot of confidence to the engine. I still see a lot of people thinking of Godot as a neat side project when it's actually a very feature complete engine.

It might seem stupid that people get hung up on these little things (like counting time) rather than the big new features that could be made, but, just like games, it's the little things that really make a thing stand out.

I also can't quite understand what's so difficult about simply distributing to steam the already built binaries that are distributed on the website. Downloading from the website comes with a *_console.exe that if run through steam will always keep track of the time (because the console is never closed). Why not take that and use it? Why not make it an option?

I understand the point that people using it through Steam want to know their use time. I love having my 4000+ hours in Aseprite, it gives great bragging rights.

But thinking that it will have an impact on the Steam platform is absurd. There are millions of players pumping hours into games, the couple of hundred (at best) Godot developers that use it through Steam is a very small part.

@Calinou
Copy link
Member

Calinou commented Mar 29, 2024

I also can't quite understand what's so difficult about simply distributing to steam the already built binaries that are distributed on the website. Downloading from the website comes with a *_console.exe that if run through steam will always keep track of the time (because the console is never closed). Why not take that and use it? Why not make it an option?

The Steam binaries are the exact same binaries as the binaries distributed on the official website. We don't maintain separate Steam builds as having to compile separate binaries would take a lot of time.

The console wrapper isn't used by Steam though as this requires a separate window to always be open while the editor is running. On top of polluting alt-tab cycling, closing the console will close the editor without any warning, which can lead to data loss. Blender had similar issues when it had an always-visible console back in its early days.

@akien-mga
Copy link
Member

There's an open PR already I still have to assess #79126, but so far I've prioritized more important engine functionality than an external tool sokng time tracking.

I'll lock this because it's getting too heated, it will be solved eventually when I can prioritize it.

@godotengine godotengine locked as too heated and limited conversation to collaborators Apr 3, 2024
@akien-mga akien-mga added this to the 4.3 milestone Jun 3, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.