Skip to content

Steam: Subnautica 2 on Mullion launches with Niagara sprite rendering off - #773

Merged
aaf2tbz merged 1 commit into
mainfrom
subnautica-2-mullion-sprites
Nov 9, 2026
Merged

aaf2tbz merged 1 commit into
mainfrom
subnautica-2-mullion-sprites

Conversation

@aaf2tbz

@aaf2tbz aaf2tbz commented Nov 9, 2026

Copy link
Copy Markdown
Collaborator

On Mullion, Subnautica 2's Niagara sprite particles draw as flashing, misplaced triangles across the ocean background. Turning sprite rendering off (fx.EnableNiagaraSpriteRendering=0) removes the glitch, and vkd3d-proton doesn't have it. Until Mullion's own bug is found, the game launches on Mullion with sprites off.

What changed

Before every Steam launch of Subnautica 2 (appid 1962700), on both the x86_64 and fex builds:

  • On the dxmt lane, when it is Mullion: add fx.EnableNiagaraSpriteRendering=0 under [SystemSettings] in AppData/Local/Subnautica2/Saved/Config/Windows/Engine.ini for each user in prefix-steam, then lock the file (chflags uchg). The game deletes its Engine.ini as it exits, so without the lock the setting would be gone on the next launch. Settings already in the file are kept.
  • On any other lane: unlock the file and take the setting back out. A file that held only that setting is removed.

The step runs right after prepare_real_steam_launch, so it covers every launch path: the Steam client handoff, direct launches and fex's launch.env routes. If it fails, MetalSharp logs it and the launch goes on.

Testing

  • make and make test pass for the regular and fex variants (-Werror).
  • A harness around the new functions on a scratch prefix covered these cases:
    • first launch: the file is written and locked;
    • a second launch changes nothing;
    • the game's delete fails while the file is locked;
    • switching to vkd3d removes the file;
    • an existing user Engine.ini keeps its settings when the line is added and when it is removed.
  • Not yet done: a launch of the game itself from the app.

… off

On Mullion, Niagara's sprite particles draw as flashing, misplaced triangles across the ocean background.
fx.EnableNiagaraSpriteRendering=0 in the game's Engine.ini turns them off. The game deletes its Engine.ini as it exits,
so before each launch on the dxmt lane, when that lane is Mullion (both builds), MetalSharp adds the setting under
[SystemSettings] and locks the file (uchg). On any other lane it unlocks the file and takes the setting out, removing
a file that held nothing else. Other settings in the file stay.
@aaf2tbz
aaf2tbz merged commit 73592c3 into main Nov 9, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant