Skip to content

Releases: BlueHeisenberg/SCSKiller

SCSKiller 1.2.3

Choose a tag to compare

@github-actions github-actions released this 05 Oct 23:23
v1.2.3
f35eaaa

This build isn't code-signed yet, so Windows SmartScreen will probably show "Windows protected your PC" the
first time you run it. Click More info, then Run anyway. You see it once per install: updates are downloaded
by SCSKiller itself and never trigger it.

Why: code signing through the SignPath Foundation is in progress, for stable releases (alpha and beta builds stay
unsigned). To check that the download arrived whole, compare its SHA-256 with the one at the end of these notes
(PowerShell: Get-FileHash <file>), but these notes aren't signed, so that doesn't prove who built it. The source: https://github.com/BlueHeisenberg/SCSKiller/tree/v1.2.3.

Smart App Control (Windows 11) blocks unsigned apps outright, with no Run anyway. If it's on, wait for a signed release.

New

  • "Closing the window quits SCSKiller" in Settings (off by default): the close button quits like Quit in the
    notification area. A running compile finishes saving first, and a downloaded update installs if set to.
  • "Scan games when SCSKiller starts" in Settings (on by default): turn it off and SCSKiller shows your last list at
    start, and reads a game again only when you refresh, when the game closes, or when Steam or the Xbox app installs or
    updates one.
  • Updates install by themselves ("Install updates automatically" in About, on by default): a downloaded update
    installs the next time SCSKiller starts or when you quit it, never during a compile, a game or Windows shutdown.
    "Restart to update" still installs it at once.
  • Ray tracing without a recording for Unreal Engine 4.25 games (Returnal) on NVIDIA. With a recording, Returnal also
    compiles the ray tracing shaders it hadn't recorded, which caused most of its stutters after a compile.

Faster and steadier

  • Much faster start: SCSKiller re-reads only the games that changed, at low disk priority. On a PC with 64 games it
    lists them in about a second instead of up to 20, and no longer keeps a hard disk busy for minutes. After an update
    the list shows at once.
  • Pausing a compile for more than a minute no longer makes it fail when you resume.
  • A compile no longer stops itself saying the game is running when it isn't.
  • Large Unreal games no longer run out of memory while their shaders are read (Codename CURE II).
  • One game with a broken file date no longer stops every game from being listed.
  • A game page opens without stutter, and Clear cache responds at once.
  • Skipped pipelines after a compile are shown as a short line instead of a warning, that's normal.

Games

  • Xbox app games are recorded now (before, the recorder never recorded in them), and their Unreal games are compiled
    for the game's own exe instead of a launcher. Compile Xbox app Unreal games again (Dead Island 2, for example).
  • Dead Island 2 compiles and matches the game: it's recognised as a DirectX 12 game on its own Unreal Engine 4.25
    build, and all its shaders are read. Compile it again.
  • Unreal games with a launcher or installer beside the exe (Returnal) are found as the real game. Compile them
    again
    : the earlier compile went to the wrong program.
  • Monster Hunter Wilds and other RE Engine games no longer sit at "Building plan" for hours and crash.
  • The Witcher 3 no longer crashes at start with frame generation on and the recorder installed, and it no longer
    asks for a rebuild after every play session (NVIDIA and AMD).
  • DRAGON BALL: Sparking! ZERO and other encrypted Unreal games whose key wasn't found now open without entering it.
  • FINAL FANTASY VII REMAKE INTERGRADE is recognised as a DirectX 12 game (DirectX 11 if you launch it with -dx11
    through Steam), so it compiles from a recording on AMD and NVIDIA.
  • Neverness to Everness is recognised as Unreal Engine 5.6.
  • Unreal games with ray tracing turned off no longer ask for a ray tracing recording, and a game compiled without
    its ray tracing shows as compiled, with "Ray tracing needs a 5-min recording" under it.
  • Unreal Engine 4.25 games also compile the pipeline list they ship with.

Mods

  • RenoDX with ReShade loaded by OptiScaler compiles through OptiScaler, ReShade and the HDR mod, and records.
  • Xbox app games with ReShade in their package folder (next to MicrosoftGame.config) compile through ReShade and
    RenoDX.
  • REFramework: RE Engine games record with it installed.
  • Files a mod or the game writes beside the exe (logs, crash dumps, shader caches) no longer turn the recorder off.
    If a launch still isn't recorded, the game page says to start the game again.
  • When a mod setup still can't be compiled, the game page says why and how to fix it, in one line.

Recorder and anti-cheat

  • More anti-cheat is recognised, so the recorder stays out: every Riot Games title (VALORANT, League of Legends,
    2XKO and others, also when added by hand), Anti-Cheat Expert games (Delta Force), every HoYoverse game, and EA Javelin
    games. A recorder already in one is removed at the next check.
  • Turning the recorder on no longer fails with "scskiller.ini is being used by another process".

PCs and Windows

  • Older CPUs without AVX2: SCSKiller no longer closes at "Reading shaders".
  • Windows 10: games that ship their own DirectX 12 runtime compile with it, instead of failing their newer pipelines.
  • Maximum mode's description now says it seems to help most on AMD, and what it costs.

Updates

  • A downloaded update installs at the next start even when the PC has no network yet at sign-in.
  • One update server asking to wait no longer holds back every update check.

All changes in 1.2.3

SHA-256:

9535f1c1fad90a30b82383a0bc8c14ee380c1549dbcff0ed24638df617fb3651  SCSKiller-1.2.3-Portable.zip
b0ef5f26e2d453825b2baa2ba8243d0ab8b1ca8dce5c593822025de424338d5f  SCSKiller-Setup.exe

Code signing policy

SCSKiller 1.2.2

Choose a tag to compare

@github-actions github-actions released this 04 Oct 18:36
v1.2.2
230f68e

This build isn't code-signed yet, so Windows SmartScreen will probably show "Windows protected your PC" the
first time you run it. Click More info, then Run anyway. You see it once per install: updates are downloaded
by SCSKiller itself and never trigger it.

Why: code signing through the SignPath Foundation is in progress, for stable releases (alpha and beta builds stay
unsigned). To check that the download arrived whole, compare its SHA-256 with the one at the end of these notes
(PowerShell: Get-FileHash <file>); these notes aren't signed, so that doesn't prove who built it. The source: https://github.com/BlueHeisenberg/SCSKiller/tree/v1.2.2.

Smart App Control (Windows 11) blocks unsigned apps outright, with no Run anyway. If it's on, wait for a signed release.

Fixed

  • An offline session without EasyAntiCheat (ELDEN RING) didn't start on a PC where SCSKiller had never armed a recorder:
    it stopped with "Could not find a part of the path" for a file in %LOCALAPPDATA%\SCSKiller\armed. It starts now, and every other
    step that reads or clears the recorder's ledger works when its folder isn't there yet.
  • A game you added by hand and recorded, which a store or launcher now lists (such as Zenless Zone Zero, found through
    HoYoPlay), compiles from that recording again. The recording moves to the store's entry of the game, which before
    started without it, so an anti-cheat game showed as not supported. An anti-cheat game is compiled whenever its game
    files, a recording made on this PC or a community recording give a plan; only the recorder stays out of it.
  • An anti-cheat game with no recording that the community database has says so, and where to get it.
  • When a store entry takes over a game you added by hand, the recorder installed for it comes out of its own folder, every
    file SCSKiller installed and recorded there included, for each copy you added; what it recorded joins the store entry.
  • A different build of the same version (a pre-release and the release) checks every game again instead of reusing the
    last build's results.
  • A game compiled before 1.2.1 with a RenoDX HDR mod showed "an HDR mod was installed since the compile" after the update,
    although the mod had been there all along. It now says the last compile didn't run through the game's HDR mod; compiling
    again runs through it, as 1.2.1 does for every such game.
  • The recorder stays armed when a mod beside the game writes a log, an ini, a screenshot or a save as the game starts
    (OptiScaler's log, a DLSS frame generation enabler's log), so those launches are recorded. Before, any new file
    anywhere in the game folder disarmed it until the next check, and the launch was silently not recorded. Any other new
    file (a program file under any name included), anything named like anti-cheat, or a changed game exe still disarms
    it, and each disarm is logged with the file.
  • A launch the recorder doesn't record now says why on the game's page ("The last launch wasn't recorded: ...").
  • A mod's d3d12.dll that can't be renamed for "Record alongside" (OptiScaler, Special K) is named on the game's page.
    For OptiScaler, which stops working renamed, the page says to rename it to dxgi.dll (or winmm.dll or version.dll),
    names OptiScaler supports and the recorder records beside.
  • A recorder moved next to the exe a game really runs (Stellar Blade's PatchData copy) is armed as soon as it moves, so
    the next launch is recorded instead of only one after the next check.

SHA-256:

44712fdba794329e0e63ef68ee6cbaaaa9ed8ec6eb98b1ad52755949490101f4  SCSKiller-1.2.2-Portable.zip
e16528599123600bbce541dfcff2328da3d958a232b3e25766e14528674b84ea  SCSKiller-Setup.exe

Code signing policy

SCSKiller 1.2.1

Choose a tag to compare

@github-actions github-actions released this 04 Oct 13:01
v1.2.1
309c7c1

This build isn't code-signed yet, so Windows SmartScreen will probably show "Windows protected your PC" the
first time you run it. Click More info, then Run anyway. You see it once per install: updates are downloaded
by SCSKiller itself and never trigger it.

Why: code signing through the SignPath Foundation is in progress, for stable releases (alpha and beta builds stay
unsigned). To check that the download arrived whole, compare its SHA-256 with the one at the end of these notes
(PowerShell: Get-FileHash <file>); these notes aren't signed, so that doesn't prove who built it. The source: https://github.com/BlueHeisenberg/SCSKiller/tree/v1.2.1.

Smart App Control (Windows 11) blocks unsigned apps outright, with no Run anyway. If it's on, wait for a signed release.

Added

  • Finds installed games from NCSOFT's PURPLE launcher, in a PURPLE section of the Library. AION 2 is listed as not
    supported: its game files are encrypted, and its anti-cheat (NCGuard) keeps it from being recorded. Play starts a PURPLE
    game through PURPLE, as its desktop shortcut does (not for anti-cheat games, which SCSKiller never starts).
  • Finds games installed with HoYoPlay (Genshin Impact, Honkai: Star Rail, Zenless Zone Zero, Honkai Impact 3rd), in a
    HoYoPlay section of the Library. Every HoYoverse game ships a kernel anti-cheat, so these games are never recorded;
    more of their anti-cheat files are recognised when the same games come from Steam or Epic Games.
  • War Thunder installed with Gaijin's launcher shows up in the Library, and on NVIDIA SCSKiller compiles all of its
    DirectX 11 shaders without a recording. On DirectX 12 it compiles the pipelines the game's shader definitions
    name, with the root signatures the game builds from them, also without a recording.
  • Control (Remedy's Northlight engine, DirectX 12) compiles without a recording: SCSKiller reads the game's shader files
    and the pipelines they pair, with the root signatures the game builds. Ray tracing shaders are compiled too, without
    a guarantee that the game reuses them yet. On NVIDIA its DirectX 11 shaders are compiled as well, for playing on
    DirectX 11.

Changed

  • Before it writes into a game folder, SCSKiller reads the list of running programs once to tell whether the game runs,
    instead of twice. What counts as running is the same.
  • A compile that completes with pipelines the driver rejected keeps its log as warm-rejects.log in the game's data
    folder, so the reasons can be looked at afterwards. Only the latest is kept; a later compile with no rejections
    removes it.
  • ELDEN RING's known-stutter note is "moderate" instead of "severe": it says most of the game's big hitches aren't shader
    compiles, citing Digital Foundry and SCSKiller's own measurement.
  • SCSKiller checks for updates every hour (it was 6 hours), and About has a Check for updates button. Refreshing the
    Library also downloads a new version, so "Restart to update" appears without waiting.
  • Games with a RenoDX HDR mod compile through a copy of ReShade and the mod, so the compile matches what the modded game
    creates. Games whose mod adds to every root signature (most RenoDX mods) are no longer left uncompiled and
    unrecorded, and games whose mod replaces some shaders get those pipelines too. The recorder records under ReShade what
    reaches the driver, which covers the pipelines a mod creates while the game draws; those stay on this PC and are
    never shared. Installing, updating or removing the mod marks the game to compile again, and a compile stopped before
    that starts over instead of resuming. With ReShade installed as d3d12.dll, the game page says to turn on Record
    alongside ReShade for those pipelines. A game is still not compiled or recorded when its mod adds to every root
    signature and SCSKiller can't reproduce how the game loads ReShade: ReShade in the install folder rather than beside
    the game's exe, or under a name the game doesn't load by itself (an .asi, ReShade64.dll). The game page says so. Luma
    mods need their shader files, which the copy leaves out: those games compile without the mod, as before.
  • On NVIDIA, a game's new pipelines no longer count a ray tracing pipeline it creates again under another launch's
    export names, or a material it adds again in another order (The Witcher 3 does both every launch): the driver compiles
    nothing new for them. A ray tracing pipeline the game creates with other NVIDIA shader extension settings counts as
    new.

Fixed

  • Stellar Blade (and any game whose folder holds a patcher's copy of its exe): the recorder went next to the copy,
    which never runs, so the game showed Playing without a frame graph. SCSKiller now picks the real exe, and when a game
    runs another exe of its folder than the one SCSKiller found, it follows that exe and moves the recorder next to it
    once the game exits.
  • On NVIDIA, the last session's report counts a ray-traced (RayQuery) pipeline the compile took from the game's files
    as one the driver partly recompiles every launch, not as a compile, also when no recording has it.
  • Games with BattlEye whose launcher sits at the top of the game folder (such as War Thunder) are found with the
    program BattlEye's launcher starts, also when you add one by picking its launcher, instead of the launcher itself.
  • Warframe counts as an anti-cheat game, so it is never recorded: Digital Extremes detects third-party software
    itself, with no driver or folder SCSKiller could see.
  • Elden Ring and Elden Ring Nightreign: a compile without a recording now also covers the few pixel shaders the game
    draws behind another bundle's vertex shaders. Against an Elden Ring recording, every pipeline made of shaders in the game's
    files is now planned.
  • Elden Ring with ray tracing on NVIDIA: the compile builds each material's ray tracing collection the way the game
    does, with the game's own root signatures, instead of a guess that matched nothing the game creates. All 30
    collections of a recorded session match. The game's ray tracing pipelines, built from whichever materials are loaded,
    still compile the first time.
  • An Unreal game whose shader code partly doesn't decompress (Dead Island 2) no longer fails the whole compile with a
    long list of "cannot decompress" errors. SCSKiller skips those shaders and compiles the rest. Only when none of the
    game's shader code decompresses does the compile fail, with one message.
  • Unreal Engine 5.8 games (Fortnite, The Sinking City 2) no longer fail to compile with "Arithmetic operation resulted
    in an overflow". When SCSKiller can't read a game's exe (anti-cheat, Xbox app), it now recognizes 5.8 from the game's
    containers instead of taking it for 5.6. 5.8 shader libraries store shorter shader hashes, and SCSKiller reads either
    layout whichever version it detected. A shader library that still can't be read fails with its file name. Unreal
    Engine 5.7 and later compile without a recording, marked "not tested on this engine version yet": 5.7 with the rule a
    5.6 game's recording confirmed, 5.8 and later with a 5.8 rule built from Epic's 5.8 source. It gives mesh and
    amplification shaders their UAVs, and shaders that use an NVIDIA shader extension the extra slot 5.8 adds for it.
    Pipelines whose shaders bind something the rule doesn't cover are left out, as for any untested engine. Fortnite:
    46,468 pipelines planned, none left out.
  • Recording did nothing since 1.2.0: the recorder was installed but never armed, so games stayed on "Needs a recording"
    however long they were played. On a PC where SCSKiller had never armed a recorder before, arming failed every time;
    and an install or update that wrote the keys file disarmed the recorder it had just installed. A recorder is now armed
    as soon as it is installed, updated or turned on, every check re-arms one that isn't, and a failure to arm is written
    to recorders.log.
  • A game showed "Playing now" all the time, and its cache couldn't be cleared, while another program ran under the name
    of an exe in the game's folder (a tool or launcher helper that ships with the game but runs from elsewhere, like
    Gaijin's agent in War Thunder's folder). Such a process counts as the game only when it runs from the game's folder.
  • SCSKiller's memory use while it idles in the notification area: the key sets a scan reads are dropped after 5 minutes
    without use (about 280 MB on a library with 66 games), the memory is handed back to Windows while the window is
    closed to the notification area or minimized, and a compile no longer
    keeps the game's whole shader index in memory afterwards (about 250 MB for a game with 130,000 shaders).

SHA-256:

a6eea03c1951aa30018da20888fe4eef1dca6cbcb547495816b2ec6f5e39d3b8  SCSKiller-1.2.1-Portable.zip
44a9ecb33f849f2ab4d88ee4fd47e6cff77e73d6ce9a43f0d2cd7aa962f96ae8  SCSKiller-Setup.exe

Code signing policy

SCSKiller 1.2.0

Choose a tag to compare

@github-actions github-actions released this 04 Oct 02:50
v1.2.0
a580f84

This build isn't code-signed yet, so Windows SmartScreen will probably show "Windows protected your PC" the
first time you run it. Click More info, then Run anyway. You see it once per install: updates are downloaded
by SCSKiller itself and never trigger it.

Why: code signing through the SignPath Foundation is in progress, for stable releases (alpha and beta builds stay
unsigned). To check that the download arrived whole, compare its SHA-256 with the one at the end of these notes
(PowerShell: Get-FileHash <file>); these notes aren't signed, so that doesn't prove who built it. The source: https://github.com/BlueHeisenberg/SCSKiller/tree/v1.2.0.

Smart App Control (Windows 11) blocks unsigned apps outright, with no Run anyway. If it's on, wait for a signed release.

Added

  • On an Intel GPU (or another that isn't NVIDIA or AMD), the Library says SCSKiller can't compile there yet and why,
    instead of only marking every game "Not supported on this GPU yet". Close it and it stays closed for that GPU.
  • Add a game no store lists, such as one from another launcher or in a folder of its own: "Add a game…" in the Library
    asks for its .exe. A launcher picked by mistake is followed to the game it starts, and an exe of a game already listed
    opens that game. Before adding, SCSKiller shows the program the recorder goes next to and the game folder it
    suggests; change the folder if it isn't the game's own ("Game folder…" on the game page changes it later). SCSKiller
    checks that whole folder for anti-cheat before it records, as for any game, and refuses a drive or a folder that
    holds other games. Added games get their own Library section, compile, record and show up on their game page like
    any other, and Play starts the exe. Their recordings aren't shared with the community database. "Remove from
    library" on the game page takes the recorder out of the game folder and forgets the game; its files stay.
  • Record an offline session without EasyAntiCheat, at your own risk, in ELDEN RING and ARMORED CORE VI: games that run
    offline without it when their exe is started directly. Allow it in "Record while I play" on the game's page, then
    "Record offline session" asks you to confirm every time. SCSKiller puts the recorder in, starts the game itself
    offline, and only that process is recorded: the game started any other way, through Steam with EasyAntiCheat too,
    isn't. Steam must be running (offline mode is fine). The moment the game exits, the files come out, the recording and
    the session's frame times are kept, and the game folder is checked to be as it was, also when SCSKiller was closed
    meanwhile; after a crash or power loss, at the next logon or start. The recording is shared like any other while
    sharing is on. Never offered for other anti-cheats or other games.

Changed

  • Games whose ReShade HDR mod adds to every root signature they create (most RenoDX mods) aren't compiled or recorded:
    every pipeline changes, so a compile wouldn't match. The Library and the game page say so, the recorder comes out of
    the game folder, and its recordings aren't shared. Mods that only replace some shaders (some RenoDX mods, Luma) are
    noted on the game page and still compile. Plain ReShade and add-ons that leave the game's shaders alone
    (renodx-dlss5) change nothing. Removing the mod lifts the block at the next scan.
  • The recorder records only in games SCSKiller has fully checked for anti-cheat. Any change in the game folder switches
    it off until the next clean check, and a game updated while SCSKiller was closed isn't recorded until SCSKiller has
    checked it again.
  • Anti-cheat detection knows more anti-cheats: NCGuard (AION 2), Tencent's Anti-Cheat Expert, HoYoverse's, NetEase's,
    Nexon's BlackCipher, AhnLab HackShield, PunkBuster, EQU8, Denuvo Anti-Cheat and more of XIGNCODE3 and nProtect
    GameGuard. Their games are never recorded, including a game added by hand.
  • For a game added by hand, the anti-cheat check also looks at what lies directly in the folders above the game's
    folder, up to the drive or a folder of many games. A game whose confirmed folder is a subfolder, such as War Thunder's
    win64, is no longer recorded when BattlEye sits in the folder above. BattlEye's client DLL beside the exe is
    recognised too.
  • In the frame-time graph, a ray-tracing state object counts as a shader stutter when it takes 25 ms or more to create,
    not 60 ms.
  • On NVIDIA, Unreal Engine 5.0 to 5.4 games compile their ray-tracing shaders without a recording, as 5.1 games already
    did, when their shaders are laid out like 5.1's (Darwin's Paradox). Games laid out differently, such as Unreal 5.5 and
    5.6's bindless ray tracing, still need a recording.

Fixed

  • Elden Ring and Elden Ring Nightreign: a compile without a recording now uses the root signatures the game itself
    creates. Before, every pipeline it compiled used a slightly different form, which the driver treats as another
    pipeline, so the compile didn't save the game any work.
  • A compile could pause, or close when SCSKiller exited, an unrelated program: Windows reuses process IDs, and a program
    whose parent had already exited could be taken for part of the compile.
  • The game page's button compiles right away, as "Compile queue" does: "Compile" (it said "Add to queue"), "Compile
    carefully" and "Compile without ray tracing (partial)" only added the game to the queue, so nothing compiled until the
    queue was started. The Library's "Add to queue" still only adds.
  • Unreal games that choose DirectX 12 from Steam's launch menu, such as Deep Rock Galactic, were detected as DirectX 11,
    so the recorder wasn't offered. Detection reads the game's Steam launch menu and its last log.
  • Unreal Engine 4 games that start on DirectX 11 but ship ray tracing, such as Ghostrunner, were detected as DirectX 11
    only. Ray tracing needs DirectX 12, so they now count as DirectX 11 or 12: SCSKiller compiles for both and offers the
    recorder. Adding an encrypted game's AES key also re-runs the detection at the next scan.
  • The Witcher 3's compile no longer tries the ray-tracing materials and the one pipeline NVIDIA's driver rejects (92
    failures per compile); the game page counts them as not covered.
  • A game with ray tracing that SCSKiller can't compile from its files (Unreal 5 games such as SILENT HILL: Townfall)
    kept asking for a 5-minute recording after one was made. The recording's ray tracing was only looked at on the next
    compile, so the status never changed. A recorded session is checked as soon as the game closes (while the PC is
    idle): hardware Lumen's ray tracing is then covered by the recording, and a session of 5 minutes or more with no ray
    tracing (software Lumen, or ray tracing off) makes the game ready to compile in full, with a note that playing with
    ray tracing on covers it too. Once the recorder has seen 5 minutes of play, the status says what is missing instead
    of asking for 5 minutes again.
  • Unreal 5 games whose shaders trace rays inline (hardware Lumen) no longer need a recording for their ray tracing:
    it compiles from the game files. A game whose Windows device profile turns ray tracing pipelines off
    (r.RayTracing.AllowPipeline=0, as SILENT HILL: Townfall does) never uses its ray tracing libraries, and the game page
    says so. Otherwise the page notes that ray tracing using separate pipelines (such as path tracing) is compiled only
    from a recording, and still counts those libraries as not compiled.
  • Xbox app games installed in a folder other than <drive>:\XboxGames, such as D:\Games\XboxGames, weren't found.

SHA-256:

e6d8bfc4b372d06dcc8da7d8fdec56cd8765603c71ddbf0e937a6b9b7ccbf8d8  SCSKiller-1.2.0-Portable.zip
eba8da82b9551613a2d163ae917bcb8f50ab630c1af15bc6881e4faa2be744d3  SCSKiller-Setup.exe

Code signing policy

SCSKiller 1.1.2

Choose a tag to compare

@github-actions github-actions released this 03 Oct 12:54
v1.1.2
c8c125e

This build isn't code-signed yet, so Windows SmartScreen will probably show "Windows protected your PC" the
first time you run it. Click More info, then Run anyway. You see it once per install: updates are downloaded
by SCSKiller itself and never trigger it.

Why: code signing through the SignPath Foundation is in progress, for stable releases (alpha and beta builds stay
unsigned). To check that the download arrived whole, compare its SHA-256 with the one at the end of these notes
(PowerShell: Get-FileHash <file>); these notes aren't signed, so that doesn't prove who built it. The source: https://github.com/BlueHeisenberg/SCSKiller/tree/v1.1.2.

Smart App Control (Windows 11) blocks unsigned apps outright, with no Run anyway. If it's on, wait for a signed release.

Added

  • The Witcher 3: Wild Hunt's ray tracing on NVIDIA: once a recording has a session with ray tracing on, SCSKiller also
    compiles the hit groups of the game's materials, so the materials the game adds while you play stutter far less. The
    game page counts the ray-tracing shaders a compile can't cover (it showed 0 whenever a recording had any ray
    tracing).

Changed

  • A downloaded update also installs when SCSKiller starts, for example after the PC was shut down with the app still
    open: the app restarts into the new version within seconds, unless a compile is running.

Fixed

  • With the internal update channel chosen, SCSKiller kept offering the version already installed.
  • About links to the website, the source code and the Patreon page; it still said they were coming.
  • A game's last session could show no frame-time graph and count only its last few minutes of shader compiles, when
    two pipelines finished creating at the same moment (seen in The Witcher 3).
  • On NVIDIA, games that create their pipelines with NVIDIA's shader extensions (The Witcher 3) now find the pipelines
    SCSKiller plans in the cache; before, only the recorded ones hit. These games ask for one more compile.

SHA-256:

daf70088d0cfbce5b763d6dbe34a03bd77abdb555272cfb98297d3667034df5f  SCSKiller-1.1.2-Portable.zip
c2ad7f77f47d495cc8e1d04cb526b55c7d4c5fc4d15f973c661689376ccbd1a6  SCSKiller-Setup.exe

Code signing policy

SCSKiller 1.1.1

Choose a tag to compare

@github-actions github-actions released this 03 Oct 08:44
v1.1.1
1317770

This build isn't code-signed yet, so Windows SmartScreen will probably show "Windows protected your PC" the
first time you run it. Click More info, then Run anyway. You see it once per install: updates are downloaded
by SCSKiller itself and never trigger it.

Why: code signing through the SignPath Foundation is in progress, for stable releases (alpha and beta builds stay
unsigned). To check that the download arrived whole, compare its SHA-256 with the one at the end of these notes
(PowerShell: Get-FileHash <file>); these notes aren't signed, so that doesn't prove who built it. The source: https://github.com/BlueHeisenberg/SCSKiller/tree/v1.1.1.

Smart App Control (Windows 11) blocks unsigned apps outright, with no Run anyway. If it's on, wait for a signed release.

Added

  • The Witcher 3: Wild Hunt's DirectX 12 build compiles without a recording on NVIDIA: SCSKiller reads its shader caches
    and the pipelines its materials use.

Changed

  • Clicking the Library's refresh button also fetches everything from the server, whatever its age (at most every 10
    minutes): the known-stutter and tested-engine lists, community recordings and shared packs, your supporter status and
    the update check.
  • Every game's compile plan is rebuilt once after this update, while the PC is idle; a compiled game whose new plan adds
    pipelines says how many more it can compile. Plans for games with tessellation and geometry shaders, or with ray
    tracing, cover more pipelines.

Fixed

  • A game started through its launcher, such as The Witcher 3's REDprelauncher, is found by the exe the launcher starts,
    so its recorder goes where the game loads it. A recorder already next to the launcher moves there once neither runs,
    with the last session's report and frame times.
  • A GPU driver updated while SCSKiller runs is noticed within minutes: the driver shown, the games that need compiling
    again and the driver-update notification follow it without a restart. A GPU of another vendor asks for a restart.
  • The app, the command line and the scheduled task no longer compile the same game at once: the second one waits.
  • A compile that was stopped and then continued reports the pipelines that failed before the stop, and starts over
    after a driver update.
  • A game updated since the last scan is compiled with the engine and checks of the installed build.
  • NVIDIA: a compiled game whose shader cache was removed (a shader cache reset) shows as needing a compile again.
  • A failed compile's message points to a log that is still there.
  • A recorder chained to a mod's d3d12.dll whose install was cut off gets its settings file back, so the mod loads.
  • A launch played while a recompile ran no longer judges the compile that ends after it.
  • A recording imported just before SCSKiller was closed or crashed is always taken into the next compile.
  • Turning "Share anonymous shader hashes" off stops a sharing pass already under way: nothing more is uploaded.
  • Signing out and in again while the app renews its sign-in in the background no longer signs the new sign-in out.
  • A damaged record in a game's scskiller.db fails only that game's import, not the whole library scan.
  • A known-stutter or tested-engines list from the server with an empty entry is ignored instead of stopping the other
    list from updating.
  • While the community database refuses or can't be reached, the app waits before asking again instead of asking once
    per game.
  • Clear cache also finds a game's D3D shader cache when its path has non-ASCII characters (an accented user name), and
    deletes read-only cache files too.
  • Stable updates are found while the SCSKiller server is down, also with an expired sign-in. Beta and alpha also offer a
    newer stable release.
  • A game update that changes only its shipped pipeline list or its inline shaders gets a new plan.
  • Games are found more reliably: an Epic game whose manifest names itself as the main game, Xbox games on any drive,
    and games installed under a folder named like Setup or Redist.
  • A RE Engine game with a patch file that can't be read shows as unsupported instead of compiling outdated shaders.
  • Frame times: failed presents no longer count as frames, and a frame file that can't be written no longer shifts the
    times after it. Games that create their device through ID3D12DeviceFactory are recorded.
  • A compile that fails while it is being watched no longer leaves its process running.

SHA-256:

eef3a6ebe8c12ea13ceb102a9f99066338c8bff8f0dc17dcea2d13ecd431add2  SCSKiller-1.1.1-Portable.zip
44454cb6d8a6798998fa171ba85d6c259212d33e2d174ec685bd4dd6a9075f63  SCSKiller-Setup.exe

Code signing policy

SCSKiller 1.1.0

Choose a tag to compare

@BlueHeisenberg BlueHeisenberg released this 02 Oct 19:56
v1.1.0
bddb30a

This build isn't code-signed yet, so Windows SmartScreen will probably show "Windows protected your PC" the
first time you run it. Click More info, then Run anyway. You see it once per install: updates are downloaded
by SCSKiller itself and never trigger it.

Why: code signing through the SignPath Foundation is in progress, for stable releases (alpha and beta builds stay
unsigned). To check that the download arrived whole, compare its SHA-256 with the one at the end of these notes
(PowerShell: Get-FileHash <file>); these notes aren't signed, so that doesn't prove who built it. The source: https://github.com/BlueHeisenberg/SCSKiller/tree/v1.1.0.

Smart App Control (Windows 11) blocks unsigned apps outright, with no Run anyway. If it's on, wait for a signed release.

Added

  • Shared packs for the FidelityFX and XeSS upscalers: a game that ships an upscaler DLL version someone has recorded on
    the same GPU vendor gets those shaders compiled, free and without an account or a recording of its own. Packs are
    uploaded only with "Share anonymous shader hashes" on.

Changed

  • The installer is SCSKiller-Setup.exe, without the version, so its download link always gets the latest release.
  • Every game's compile plan is rebuilt once after this update, while the PC is idle, and games compiled before ask for
    one more compile; it mostly finds the shaders already in the driver cache.
  • Unreal games: plans also use the pipeline list the game ships, so shader pairs its files alone can't match are
    compiled too. Unreal Engine 5.4 is on the list of tested engine versions.

Fixed

  • The recorder no longer crashes a game when an overlay hooks its presents after the recorder and the game makes another swap chain, when the game unloads d3d12.dll after creating a device, when NVAPI is called while the recorder hooks it, or when next= in scskiller.ini names the recorder itself.
  • A damaged scskiller.db no longer makes the game allocate gigabytes when it starts; a full disk, or a second process
    recording in the same folder, no longer leaves a recording that can't be read past that point.
  • The recorder no longer goes through the C runtime when it ends a launch's timings at exit, which could stop a game's
    exit if another thread had died holding its lock.
  • Stopping a compile after a GPU driver fault or hang no longer makes the next compile skip the pipelines that were
    still unfinished.
  • A compile whose process hangs at exit is always ended after the exit limit, also when its last pipelines finished
    right after it started.
  • DirectX 11 hull shaders that take all 32 input registers compile instead of counting as failed.
  • "Last time you played" no longer counts the shaders a game compiles while it starts up as compiles during play.
  • Turning the recorder off removes all its files from the game folder, the last session's frame times included (an
    scskiller.ini you edited stays), and files an earlier version left there go at the next scan.
  • Frame times: a slow load from the game's own pipeline library is no longer a shader stutter, a shader freeze of 5 s
    or more counts in the 1% low, and a launch never takes another launch's frames.
  • Quit waits for a compile you just removed from the queue to save its cache, like any other running compile.
  • Choosing another update channel no longer installs an update downloaded from the one before.
  • The driver-update notification's buttons work after SCSKiller was closed.
  • "Compile queue" also starts games queued to compile when the PC is idle.
  • On AMD, the library's cache bar compares the DirectX 12 cache with its limit, not both caches.
  • scskiller compile refuses an option it doesn't know or one missing its value, and Ctrl+C before a compile
    starts is no success.
  • Anti-cheat files and folders are found anywhere in a game's install, hidden or system ones too, and an install with a
    folder SCSKiller can't list counts as anti-cheat, so the recorder is never offered for those games. An update that
    adds anti-cheat while the recorder is being installed takes it out again.
  • Clear cache deletes only the Windows shader cache's own files in a game's D3DSCache folder, and on NVIDIA refuses
    while another installed game has the same exe name (the driver gives both one cache).
  • A recording imported by the app while the command line compacts it, or the other way round, keeps every record.
  • SCSKiller never writes into a game's folder while the game runs, also when a launcher started it under another exe
    name, and a game whose launcher id isn't a valid folder name gets a data folder of its own.
  • A malformed root signature in a recording or a community download no longer breaks a game's whole plan: only the
    pipelines that use it are left out.
  • An update download stops at the size the signed feed gives, and gives up when no data arrives for two minutes (the
    next check tries again).

SHA-256:

31fb6fcfb91e23f9353e336014e3d7aaeafdaffc175dd61bfa533b30f15779ff  SCSKiller-1.1.0-Portable.zip
3057982e62f73a865e1fddc565e2c561af4b4f946753cec0b7b2fe99c74d7c7d  SCSKiller-Setup.exe

Code signing policy

SCSKiller 1.0.0

Choose a tag to compare

@BlueHeisenberg BlueHeisenberg released this 01 Oct 08:46
v1.0.0
1116ecf

This build isn't code-signed yet, so Windows SmartScreen will probably show "Windows protected your PC" the
first time you run it. Click More info, then Run anyway. You see it once per install: updates are downloaded
by SCSKiller itself and never trigger it.

Why: code signing through the SignPath Foundation is in progress, for stable releases (alpha and beta builds stay
unsigned). To check the download instead, compare its SHA-256 with the one at the end of these notes (PowerShell:
Get-FileHash <file>). The source: https://github.com/BlueHeisenberg/SCSKiller/tree/v1.0.0.

Smart App Control (Windows 11) blocks unsigned apps outright, with no Run anyway. If it's on, wait for a signed release.

The first public release.

Added

  • Compile a game's shaders into the NVIDIA or AMD driver cache before you play, so the game doesn't stutter while it
    compiles them. Works from the app or the scskiller command line.
  • An installer (SCSKiller-<version>-Setup.exe) and a portable version (SCSKiller-<version>-Portable.zip); both
    update themselves.
  • DirectX 12 games on NVIDIA and AMD, and DirectX 11 games on NVIDIA.
  • Finds installed games from Steam, Epic Games, EA app, GOG, Ubisoft Connect, Xbox (PC) and Battle.net.
  • Reads shaders straight from the game files for Unreal Engine, Unity, FromSoftware and RE Engine games, and scans
    other games' files for shader containers.
  • An optional recorder for games whose files aren't enough: it captures the pipelines a game builds while you play, so
    the next compile covers them. It can record alongside a d3d12.dll mod such as ReShade when you turn that on for the
    game. It is never offered for games with anti-cheat.
  • The recorder also times each frame. A game's page shows the last session's frame-time graph, with the stutters from
    shader compiles told apart from other hitches, the 1% low and a list of slow frames. Frame times stay on your PC.
  • A recording keeps only the hash of a shader the game ships, and reads the shader back from the game files. Recording
    limit per game: 32 MB, 128 MB, 256 MB (the default), 512 MB, 1 GB or Unlimited, in Settings. The app shows the space
    each game's recording uses and has a Clear recording button. A game that recorded new pipelines since its last
    compile says so.
  • Uninstalling SCSKiller removes the recorder and its files from every game folder, and puts back a mod it was
    recording alongside.
  • On AMD, the driver's shader cache is fixed at 16 GB. The queue warns when the games in it won't fit, and a game
    whose cache the driver trimmed to make room shows as needing a rebuild.
  • On AMD, games whose first launch still compiled many pipelines show "Partly warmed" and offer a careful compile,
    which is slower but reaches more of them.
  • On NVIDIA, compiles run about three times faster, and ray-traced pipelines that the driver partly recompiles at
    every launch are listed on their own, not counted as stutters.
  • Recompiles after a GPU driver update, on a schedule or by hand.
  • Notices a game update, also one installed while SCSKiller runs: the game shows as needing a rebuild, and the next
    compile covers the installed version.
  • A Play button in the Library and on a game's page for Steam, Epic Games, Xbox, GOG (with GOG Galaxy) and Ubisoft
    Connect games. It starts the game through its store, never on anti-cheat games, and waits while the game compiles.
  • A game's page shows how long the last session lasted, also for games that close without a clean exit, as Unreal
    games do.
  • A community database of shader hashes for Patreon supporters: games compile from other players' recordings without
    recording them yourself. Without a membership, a game that needs a recording still says when the database has one
    for its version, and how many pipelines it holds.
  • "Share my shader hashes" (opt-in): uploads the hash-only form of your recordings (no shader code) under an anonymous
    device, never linked to your account.
  • A notification when compiled games have new pipelines to compile (recorded while playing, or from the shared shader
    hashes), with Compile now and Show. It comes once per change and never while the game runs; Settings can turn it off.
  • An anonymous daily check that counts active installs. Once a day the app tells the server that an install is active,
    with the app's version and the GPU vendor (NVIDIA, AMD or other) and no identifier: nothing about the PC or its
    games. "Send an anonymous daily check" in Settings turns it off.
  • Status texts in plain words, such as "no recording needed" or "turn on recording and play for about 5 minutes". The
    list of engine versions SCSKiller has tested updates from the server, like the list of games known to stutter.
  • A minimum window size at which every page still fits.
  • Clear cache: removes a game's driver cache, its Windows shader cache and Unreal's own pipeline cache, so the next run
    starts cold.

SHA-256:

0fc2be6a607f8d5629b6603aded6e7e7632676ba993adbd25beaf9f8bfebf8b0  SCSKiller-1.0.0-Portable.zip
81e6d86ef58c6d212d5713aa9c5c328eb7989464364cde1cec42a328b98af58e  SCSKiller-1.0.0-Setup.exe

Code signing policy