WIP: feat(recomplauncher): DLSS and FSR 4 options for the setup step #354

Draft
elripalda wants to merge 1 commit from elripalda/Longshot:recomplauncher-dlss-fsr4 into main
First-time contributor

Why

Players who set up Longshot through RecompLauncher can't get DLSS or FSR 4. The launcher runs LongshotBuilder --cli --prepare --game {game} with no way to ask for either, and it's the first thing people ask about on its Discord.

What changed

  • recomplauncher.json: prepare.options, two ticks RecompLauncher shows on its setup screen. When a tick is on, the launcher adds its args after the prepare step's own, so the Builder gets the make_game.py flags that already exist for this (LongshotBuilder --cli hands everything after --cli to make_game.py, builder/LongshotBuilder/Program.cs):
    • NVIDIA DLSS: --fetch-ngx-sdk --accept-nvidia-license, shown only on NVIDIA cards ("gpu": "nvidia").
    • AMD FSR 4: --fsr --fetch-fsr-runtime --accept-amd-license, shown only on AMD cards on Windows ("gpu": "amd", "os": ["windows"]), since the runtime fetch is Windows only.
  • recomplauncher.json: each tick has a license (NVIDIA's DLSS SDK license, AMD's FidelityFX SDK license, both at a fixed commit). RecompLauncher puts the license name next to the tick as a link, and a tick with a license always starts off, so the player accepts it themselves before anything is downloaded.
  • Nothing else in the file changes.

Flags and settings

Flag What it does Default now Recommendation Helps on Doesn't help on Untested on
prepare.options dlss (RecompLauncher setup tick) Builds with DLSS: adds --fetch-ngx-sdk --accept-nvidia-license Off Off by default: NVIDIA's license has to be accepted by the player NVIDIA RTX cards, Windows and Linux Other GPUs (not shown there) Everything so far: needs RecompLauncher Beta 46
prepare.options fsr4 (RecompLauncher setup tick) Builds with FSR 4: adds --fsr --fetch-fsr-runtime --accept-amd-license Off Off by default: AMD's license has to be accepted by the player AMD Radeon RX 9000 on Windows Linux, NVIDIA, Intel (not shown there) Everything so far: needs RecompLauncher Beta 46

No new environment variable, menu row or ini key.

Measurements

Nothing to measure yet: RecompLauncher reads prepare.options from Beta 46, which isn't out. Once it is, the comparison is what a RecompLauncher setup builds on the same PC with main's file and with this one.

main: cf605c85 (2026-11-13)
this PR: recomplauncher-dlss-fsr4 @ cde1ec80
Hardware: (to fill: an RTX PC on Windows, an RX 9000 PC on Windows)
Scene: RecompLauncher's setup screen, then the built game's upscaler row
Method: one RecompLauncher setup with each side's file, the tick on for this PR; RecompLauncher's setup log and longshot_log.txt
How to reproduce: (to fill once Beta 46 is out)

main @ cf605c85 this PR @ cde1ec80
Ticks on the setup screen, RTX on Windows none (to fill)
DLSS in the built game no (to fill)
Ticks on the setup screen, RX 9000 on Windows none (to fill)
FSR 4 in the built game no (to fill)

Testing

Tested: no build yet, only the file and the source it relies on. The file parses, and with prepare.options taken out it is the same as main's, key for key. It validates against RecompLauncher's schema (recomplauncher.com/schema/recomplauncher.json), which already has prepare.options. What tests/test_recomplauncher_json.py checks (format, the settings keys, the start and prepare programs, no repo) is untouched. The flag names match make_game.py, Runner.cs and the README's "A builder from the command line".

Not tested: a setup through RecompLauncher with either tick on, on any PC, because the launcher side isn't released yet. python -I -B tests/run_all.py: no checkout on this machine, so it waits on CI's Python checks.

Needs other testers:

  • Windows, NVIDIA RTX: with RecompLauncher Beta 46, set up Longshot with the DLSS tick on, expecting the DLSS tick (off) and no FSR 4 tick, a build that fetches NVIDIA's SDK, and DLSS in the game's upscaler row (request to open)
  • Windows, AMD RX 9000: the same with FSR 4, expecting the FSR 4 tick (off), no DLSS tick, and FSR 4 in the game (request to open)
  • Linux, NVIDIA: expecting only the DLSS tick, and a build with DLSS (request to open)

Screenshots

Nothing in the game changes. RecompLauncher's setup screen with the ticks to come once Beta 46 is out.

Risk and rollback

Launchers before Beta 46 ignore options (their prepare step doesn't refuse unknown keys), so they build as today. With Beta 46, a player who leaves both ticks off also gets today's build. If a flag turns out wrong, only a build with that tick on fails, with make_game.py's own error. Reverting the commit is enough.

Reviewer notes

The labels and notes are what players read on the setup screen ("Sharper, faster picture on NVIDIA RTX cards.", "For AMD Radeon RX 9000 cards."), so change them to whatever you'd rather say. If you want it, I can add a check to tests/test_recomplauncher_json.py that each option's args are flags make_game.py takes and each license has a url.

Issues

None filed for this.

Checklist

For everyone

  • One topic.
  • The title is a Conventional Commit (type(scope): description).
  • Rebased on current main.
  • python -I -B tests/run_all.py run and passing (any failure that also fails on main is named above). Not run here: waiting on CI's Python checks.
  • Tested in the game, or what wasn't is named under Testing.
  • Testing filled in: what was tested, what wasn't, and what needs other testers (with test requests). The test requests open once RecompLauncher Beta 46 is out.
  • Measured: main and this PR at named commits, on the same PC, scene and settings, at least 2 interleaved runs each, the median reported. Needs RecompLauncher Beta 46.
  • No game files, dumps, build output or generated files.
  • third_party/ untouched (a new folder with a PROVENANCE.md instead).
  • The license is OK: GPL-3.0-or-later, nothing incompatible and nothing decompiled.

If applicable

  • AI assistance recorded with Assisted-by: / Co-Authored-By: trailers.

🤖 Generated with Claude Code

https://claude.ai/code/session_01YU7Wh23MaQWW1k6RtLRVZF

## Why Players who set up Longshot through RecompLauncher can't get DLSS or FSR 4. The launcher runs `LongshotBuilder --cli --prepare --game {game}` with no way to ask for either, and it's the first thing people ask about on its Discord. ## What changed - recomplauncher.json: `prepare.options`, two ticks RecompLauncher shows on its setup screen. When a tick is on, the launcher adds its `args` after the prepare step's own, so the Builder gets the make_game.py flags that already exist for this (`LongshotBuilder --cli` hands everything after `--cli` to make_game.py, `builder/LongshotBuilder/Program.cs`): - NVIDIA DLSS: `--fetch-ngx-sdk --accept-nvidia-license`, shown only on NVIDIA cards (`"gpu": "nvidia"`). - AMD FSR 4: `--fsr --fetch-fsr-runtime --accept-amd-license`, shown only on AMD cards on Windows (`"gpu": "amd"`, `"os": ["windows"]`), since the runtime fetch is Windows only. - recomplauncher.json: each tick has a `license` (NVIDIA's DLSS SDK license, AMD's FidelityFX SDK license, both at a fixed commit). RecompLauncher puts the license name next to the tick as a link, and a tick with a license always starts off, so the player accepts it themselves before anything is downloaded. - Nothing else in the file changes. ## Flags and settings | Flag | What it does | Default now | Recommendation | Helps on | Doesn't help on | Untested on | |---|---|---|---|---|---|---| | `prepare.options` `dlss` (RecompLauncher setup tick) | Builds with DLSS: adds `--fetch-ngx-sdk --accept-nvidia-license` | Off | Off by default: NVIDIA's license has to be accepted by the player | NVIDIA RTX cards, Windows and Linux | Other GPUs (not shown there) | Everything so far: needs RecompLauncher Beta 46 | | `prepare.options` `fsr4` (RecompLauncher setup tick) | Builds with FSR 4: adds `--fsr --fetch-fsr-runtime --accept-amd-license` | Off | Off by default: AMD's license has to be accepted by the player | AMD Radeon RX 9000 on Windows | Linux, NVIDIA, Intel (not shown there) | Everything so far: needs RecompLauncher Beta 46 | No new environment variable, menu row or ini key. ## Measurements Nothing to measure yet: RecompLauncher reads `prepare.options` from Beta 46, which isn't out. Once it is, the comparison is what a RecompLauncher setup builds on the same PC with main's file and with this one. main: cf605c85 (2026-11-13) this PR: recomplauncher-dlss-fsr4 @ cde1ec80 Hardware: (to fill: an RTX PC on Windows, an RX 9000 PC on Windows) Scene: RecompLauncher's setup screen, then the built game's upscaler row Method: one RecompLauncher setup with each side's file, the tick on for this PR; RecompLauncher's setup log and longshot_log.txt How to reproduce: (to fill once Beta 46 is out) | | main @ cf605c85 | this PR @ cde1ec80 | |---|---|---| | Ticks on the setup screen, RTX on Windows | none | (to fill) | | DLSS in the built game | no | (to fill) | | Ticks on the setup screen, RX 9000 on Windows | none | (to fill) | | FSR 4 in the built game | no | (to fill) | ## Testing **Tested:** no build yet, only the file and the source it relies on. The file parses, and with `prepare.options` taken out it is the same as main's, key for key. It validates against RecompLauncher's schema (recomplauncher.com/schema/recomplauncher.json), which already has `prepare.options`. What `tests/test_recomplauncher_json.py` checks (`format`, the settings keys, the start and prepare programs, no `repo`) is untouched. The flag names match make_game.py, `Runner.cs` and the README's "A builder from the command line". **Not tested:** a setup through RecompLauncher with either tick on, on any PC, because the launcher side isn't released yet. `python -I -B tests/run_all.py`: no checkout on this machine, so it waits on CI's Python checks. **Needs other testers:** - Windows, NVIDIA RTX: with RecompLauncher Beta 46, set up Longshot with the DLSS tick on, expecting the DLSS tick (off) and no FSR 4 tick, a build that fetches NVIDIA's SDK, and DLSS in the game's upscaler row (request to open) - Windows, AMD RX 9000: the same with FSR 4, expecting the FSR 4 tick (off), no DLSS tick, and FSR 4 in the game (request to open) - Linux, NVIDIA: expecting only the DLSS tick, and a build with DLSS (request to open) ## Screenshots Nothing in the game changes. RecompLauncher's setup screen with the ticks to come once Beta 46 is out. ## Risk and rollback Launchers before Beta 46 ignore `options` (their prepare step doesn't refuse unknown keys), so they build as today. With Beta 46, a player who leaves both ticks off also gets today's build. If a flag turns out wrong, only a build with that tick on fails, with make_game.py's own error. Reverting the commit is enough. ## Reviewer notes The labels and notes are what players read on the setup screen ("Sharper, faster picture on NVIDIA RTX cards.", "For AMD Radeon RX 9000 cards."), so change them to whatever you'd rather say. If you want it, I can add a check to `tests/test_recomplauncher_json.py` that each option's args are flags make_game.py takes and each license has a url. ## Issues None filed for this. ## Checklist ### For everyone - [x] One topic. - [x] The title is a Conventional Commit (`type(scope): description`). - [x] Rebased on current `main`. - [ ] `python -I -B tests/run_all.py` run and passing (any failure that also fails on `main` is named above). Not run here: waiting on CI's Python checks. - [x] Tested in the game, or what wasn't is named under Testing. - [ ] Testing filled in: what was tested, what wasn't, and what needs other testers (with test requests). The test requests open once RecompLauncher Beta 46 is out. - [ ] Measured: main and this PR at named commits, on the same PC, scene and settings, at least 2 interleaved runs each, the median reported. Needs RecompLauncher Beta 46. - [x] No game files, dumps, build output or generated files. - [x] `third_party/` untouched (a new folder with a `PROVENANCE.md` instead). - [x] The license is OK: GPL-3.0-or-later, nothing incompatible and nothing decompiled. ### If applicable - [x] AI assistance recorded with `Assisted-by:` / `Co-Authored-By:` trailers. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01YU7Wh23MaQWW1k6RtLRVZF
recomplauncher.json: DLSS and FSR 4 ticks for the setup step
Some checks are pending
CI / Conventional Commit title (pull_request) Blocked by required conditions
CI / Python source checks (ubuntu-24.04, part 1/2) (pull_request) Blocked by required conditions
CI / Python source checks (ubuntu-24.04, part 2/2) (pull_request) Blocked by required conditions
CI / SPIR-V fixtures (global narrow load/store, direct surface atomics, F2I immediate) (pull_request) Blocked by required conditions
CI / Workflow lint (actionlint) (pull_request) Blocked by required conditions
Third-party parts / As their notes say (pull_request) Blocked by required conditions
Third-party parts / The same as upstream (pull_request) Blocked by required conditions
PR description / Description follows the template (pull_request_target) Successful in 3s
Website / Website on Cloudflare (pull_request_target) Has been skipped
cde1ec8081
Adds "options" to the prepare step so RecompLauncher can offer the same DLSS and FSR 4 choices as the Builder. Both start off and pass the flags the Builder already uses, with the license links shown to the player. Older launchers ignore the key.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01YU7Wh23MaQWW1k6RtLRVZF
elripalda changed title from recomplauncher.json: DLSS and FSR 4 ticks for the setup step to WIP: feat(recomplauncher): DLSS and FSR 4 options for the setup step 2026-11-14 04:11:23 +00:00
Some checks are pending
CI / Conventional Commit title (pull_request) Blocked by required conditions
CI / Python source checks (ubuntu-24.04, part 1/2) (pull_request) Blocked by required conditions
CI / Python source checks (ubuntu-24.04, part 2/2) (pull_request) Blocked by required conditions
CI / SPIR-V fixtures (global narrow load/store, direct surface atomics, F2I immediate) (pull_request) Blocked by required conditions
CI / Workflow lint (actionlint) (pull_request) Blocked by required conditions
Third-party parts / As their notes say (pull_request) Blocked by required conditions
Third-party parts / The same as upstream (pull_request) Blocked by required conditions
PR description / Description follows the template (pull_request_target) Successful in 3s
Website / Website on Cloudflare (pull_request_target) Has been skipped
This pull request has changes conflicting with the target branch.
  • recomplauncher.json
Some workflows are waiting to be reviewed.
View command line instructions

Manual merge helper

Use this merge commit message when completing the merge manually.

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u 'recomplauncher-dlss-fsr4:elripalda-recomplauncher-dlss-fsr4'
git switch 'elripalda-recomplauncher-dlss-fsr4'
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
MagicBeanDev/Longshot!354
No description provided.