Git Product home page Git Product logo

Comments (9)

MikeMaximus avatar MikeMaximus commented on July 17, 2024 1

Thanks for the tips 👍

  • Good call, I will add a check empty for when.
  • In VB LudusaviWhen() is a dynamic array declaration, the array should be a little faster than the List.
  • I'm still pondering how to handle the bit field. I do want to have it choose the launch config based on the current architecture, I'm just currently unsure of the best method that's going to work for me in Windows and Linux.

Update

Evidently there's been a very easy way to check the OS architecture since .NET 4.0 and it seems to work in Mono as well. So GBM now considers the platform and prefers the launch configs with the matching bit and os before anything else.

from gbm.

MikeMaximus avatar MikeMaximus commented on July 17, 2024

Hey there, thanks for your work developing the manifest! It's already been really handy for me having access to it in GBM and hopefully for everyone else once I get the release ready.

Yes I think it would be great to have the executable in the manifest. As you pointed out it's not going to work when a game uses some kind of launcher executable, but more often than not it should provide the correct process to monitor.

Other data that would be handy is the executable's arguments and the OS the executable is for.

from gbm.

mtkennerly avatar mtkennerly commented on July 17, 2024

This is now available: mtkennerly/ludusavi-manifest@a046c18

Here's an example:

Some Game:
  launch:
    <base>/Game.exe:
      - when:
          - os: windows
            store: steam
      - arguments: '--win64'
        when:
          - bit: 64
            os: windows
            store: steam
        workingDir: <base>/subdir
  • Can be launched without arguments on any Windows
  • Can be launched with --win64 argument and specific working directory on 64-bit Windows

Let me know if you run into any issues with it :)

Launch data for 289 games is currently omitted because of this bug in steam-user: DoctorMcKay/node-steam-user#397 . You can see them by searching for irregular: true in the Steam cache file.

from gbm.

MikeMaximus avatar MikeMaximus commented on July 17, 2024

Thanks! I didn't run into any issues.

It's going to need some tweaking since I didn't have nearly enough coffee today, but GBM now makes its best guess for monitored process.

from gbm.

mtkennerly avatar mtkennerly commented on July 17, 2024

Awesome :D I did notice some things you may want to consider:

  • It looks like it always checks when(0).os. There may not be any cases of it right now, but the schema does allow when to be empty (although, in practice, the manifest updater should omit it when empty) or to contain more than one item (e.g., if 32-bit and 64-bit Windows use the same launch config).
  • This is probably just because I'm not familiar with VB, but in 3911cf9, the previous oWhen As List(Of LudusaviWhen) seemed like it was correct to me, since when is an array of objects.
  • It doesn't look like bit is currently being checked. You may want to check the user's system (or do conditional compilation based on GBM's 32/64-bit release) to avoid using 64-bit launch configuration on 32-bit systems (and maybe even to prefer 64-bit config on 64-bit systems).

from gbm.

mtkennerly avatar mtkennerly commented on July 17, 2024

Nice 👍 One last small thing about this part:

If Not oLudusaviLaunch.when Is Nothing Then
If oLudusaviLaunch.when(0).os Is Nothing Or oLudusaviLaunch.when(0).os = sOS Then

Is this missing a For Each oLudusaviWhen In oLudusaviLaunch.when, or is that handled elsewhere/implicitly? I think the following config would cause Game.exe to be added to oSecondaryRanked on a 64-bit system:

Some Game:
  launch:
    <base>/Game.exe:
      - when:
          - os: windows
            store: steam
          - bit: 64
            os: windows
            store: steam

...since this check looks like it's only for the first item in the when list:

If oLudusaviLaunch.when(0).os = sOS And oLudusaviLaunch.when(0).bit = iBit Then

from gbm.

MikeMaximus avatar MikeMaximus commented on July 17, 2024

Oops that's pretty sloppy, you're right it should be iterating through oLudusaviLaunch.when for that example. I believe I did that because I never noticed any instance of that example ever happening in the manifest, there was always only 1 instance of when. I had some trouble wrapping my head around the YAML structure for launch at first and what the hyphens indicate, this is my first time working with it.

There is one thing I noticed in the manifest I'm unsure about. A launch entry for Dragon Age Origins contains stray double quote in a path. The YAML parser doesn't seem to care but I thought I'd mention it.

launch:
    <base>/"docs:

from gbm.

mtkennerly avatar mtkennerly commented on July 17, 2024

Oddly enough, that's really what the Steam API reports (via app_info_print 47810):

		"launch"
		{
			"0"
			{
				"executable"		"DAOriginsLauncher.exe"
				"arguments"		""
				"description"		"Default"
			}
			"1"
			{
				"executable"		"\"docs"
				"description"		"View Support Information"
			}
		}

Might have been a typo when the developer was configuring things, or maybe their folder actually has a quote in it.

from gbm.

MikeMaximus avatar MikeMaximus commented on July 17, 2024

Ah alright. It must be a typo since Windows files systems can't even have a quote in a folder or file name.

from gbm.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.