Skip to content

Releases: DevVoidPL/Game-Optimization-Linux

Game Optimization Linux 1.6 Alpha

Choose a tag to compare

@DevVoidPL DevVoidPL released this 17 Aug 12:35

Game Optimization Linux 1.6 Alpha

Large alpha update focused on real game performance measurements, automatic optimization, runtime reliability and the first working version of the local Polish game narrator.

This is one of the largest updates to Game Optimization Linux so far.

A large part of this release was tested with real Steam/Proton games instead of only synthetic or automated tests.

Warning

Game Analyzer, Performance Baseline, Automatic Optimization and Polish Narrator are still experimental.

Compatibility can vary significantly between games, Proton versions, desktop environments and hardware.

The Polish Narrator in particular is an early implementation. OCR accuracy and narration latency can depend on the game, subtitle font, selected capture area and CPU performance.

Please report problems on Discord or GitHub Issues. Game-specific reports are especially useful.


Experimental Polish Narrator

Added the first working version of the local Polish game narrator.

The narrator can capture English subtitles directly from a running game, recognize them, translate them to Polish and generate Polish speech locally.

Current pipeline:

Game Window -> xdg-desktop-portal -> PipeWire -> GStreamer -> OCR -> EN/PL Translation -> Piper TTS -> Qt Audio

Added

  • New Lektor section in the application
  • Per-game narrator configuration
  • Wayland screen/window capture through xdg-desktop-portal
  • KDE/Wayland source picker support
  • PipeWire capture
  • GStreamer video transport
  • Tesseract OCR
  • Local English -> Polish translation
  • Local Polish text-to-speech
  • Piper pl_PL-gosia-medium voice
  • Direct PCM playback through Qt Multimedia
  • Configurable narrator volume
  • Configurable speech rate
  • Configurable subtitle capture region
  • Per-game narrator settings
  • Local translation cache
  • Narrator session diagnostics
  • OCR, translation, TTS and audio timing information
  • Optional narrator component downloading
  • Component integrity verification using pinned sizes and SHA256 hashes
  • Local component storage outside the base application package

The narrator does not require an online translation or cloud TTS service during normal operation.


Narrator Capture / Wayland

The original ScreenCast portal implementation exposed several real-world compatibility problems that did not appear in isolated tests.

Fixed

  • Replaced the narrator's low-level PySide6 QtDBus ScreenCast transport with dbus-next
  • Fixed incorrect D-Bus serialization of ScreenCast options
  • types, cursor_mode and persist_mode are now correctly sent as D-Bus UINT32
  • Added one persistent D-Bus connection for the complete portal session
  • Added explicit Unix FD negotiation for OpenPipeWireRemote
  • Improved PipeWire file-descriptor ownership and cleanup
  • Improved portal request cancellation
  • Added stale-session protection
  • Added handling for Session.Closed
  • Improved portal lifecycle shutdown
  • Fixed race where the portal backend could report itself ready before its event loop was actually accepting work
  • Improved portal error diagnostics
  • Removed dependency on QtDBus from the narrator capture transport

The portal flow now uses:

CreateSession -> SelectSources -> Start -> OpenPipeWireRemote

Real testing on KDE Plasma Wayland successfully reached the system window picker and captured running game windows.


Narrator GStreamer / PipeWire

  • Fixed use of the unsupported pipewiresrc on-disconnect property
  • Improved PipeWire source initialization
  • Improved handling of portal-provided stream targets
  • Improved GStreamer capture error reporting
  • Added capture resolution diagnostics
  • Added frame timing information
  • Added bounded capture processing to prevent unlimited queued work

Some games or capture sessions can still occasionally expose PipeWire/GStreamer format negotiation problems.


Narrator OCR

Major work was done to reduce false subtitle detection.

Early real-game tests showed that raw OCR could interpret textures, HUD elements and background graphics as random text.

Examples included random numbers, letters and symbols being passed into translation and speech.

Added / Improved

  • Subtitle-oriented image preprocessing
  • Grayscale preprocessing
  • Subtitle ROI upscaling
  • Improved contrast handling
  • Tesseract TSV-based OCR instead of blindly trusting plain text output
  • Per-word OCR confidence handling
  • Character-weighted phrase confidence
  • Generic garbage detection
  • Digit-ratio filtering
  • Symbol-ratio filtering
  • Isolated-token filtering
  • Subtitle text normalization
  • Temporal subtitle stabilization
  • Similarity-based OCR confirmation
  • Punctuation-insensitive phrase matching
  • Protection against repeatedly speaking an unchanged subtitle
  • Better handling when subtitles disappear
  • Raw noisy OCR observations no longer cancel already accepted translation/TTS work

The current stabilization system generally requires two sufficiently similar OCR observations before a phrase is accepted.

High-noise results are rejected before translation.

Performance

Synthetic local tests showed approximately:

  • ~10 ms subtitle preprocessing
  • ~100 ms Tesseract boundary processing under controlled test conditions

Real-game OCR latency varies depending on subtitle size, capture region and system performance.


Narrator Audio

Fixed an important Qt Multimedia lifecycle issue that caused narration to sometimes work once and then stop reading subsequent lines.

Fixed

  • Fixed QAudioSink.stateChanged handling with PySide6
  • Removed invalid conversion of QAudio::State through a Python object slot
  • Audio state is now read directly from QAudioSink
  • Fixed completed playback not releasing the current queue entry
  • Fixed pending narration sometimes never starting
  • Improved narrator audio lifecycle cleanup

Real testing confirmed that the narrator PCM format:

  • 22050 Hz
  • mono
  • signed 16-bit PCM

can be played correctly through the Flatpak audio environment on tested hardware.


Narrator Known Limitations

The narrator is functional, but still experimental.

Current real-game testing has shown the following limitations:

  • Some subtitles can still be missed
  • Short subtitles are more difficult to recognize reliably
  • OCR can still occasionally append incorrect symbols, digits or characters
  • Some game UI elements can be mistaken for subtitles
  • Recognition quality depends heavily on subtitle font and contrast
  • Recognition quality depends on the configured capture area
  • Some games work much better than others
  • Translation is not always perfect
  • Long dialogue can introduce noticeable latency
  • OCR, translation and speech synthesis performance depends partly on CPU performance
  • Slow CPUs may experience a larger delay between a subtitle appearing and speech playback
  • Some PipeWire/GStreamer capture formats may still fail on the first attempt
  • Switching games closes the existing portal capture session and requires selecting a new capture source

The narrator should currently be considered an Alpha feature rather than a replacement for native game localization.


Performance Baseline

The MangoHud-based performance measurement system received significant improvements.

Improved

  • Improved private MangoHud baseline configuration
  • Baseline measurement no longer depends on the user's normal MangoHud layout
  • Improved MangoHud CSV discovery
  • Improved support for current MangoHud log formats
  • Improved conversion of recorded values
  • Improved handling of memory and VRAM units
  • Improved representative measurement selection
  • Improved measurement segmentation
  • Improved detection of valid gameplay measurement windows
  • Improved semantic baseline states
  • Improved handling of low GPU utilization
  • Improved average FPS calculation
  • Improved frame-cap detection
  • Frame-cap detection is no longer limited to a small fixed list of common FPS limits
  • Improved bottleneck evidence
  • Improved baseline failure diagnostics

The application continues to use real recorded gameplay data rather than fabricated benchmark estimates.


Game Analysis

Game Analyzer and performance analysis received additional reliability work.

Improved

  • Better reuse of existing executable information
  • Improved game/runtime information propagation
  • Improved performance evidence handling
  • Improved bottleneck classification
  • Improved handling of insufficient data
  • Improved frame pacing analysis
  • Improved CPU/GPU interpretation
  • Improved memory-pressure analysis foundation

Game detection remains conservative.

When reliable information is unavailable, Unknown is preferred over a guessed result.


Experimental Automatic Optimization

Automatic Optimization has moved beyond the original architecture-only foundation.

The intended workflow remains:

Analyze -> Measure -> Detect Bottleneck -> Recommend -> Apply -> Measure Again -> Keep/Revert

Improved

  • Added real runtime optimization candidates
  • Added safer candidate evaluation
  • Improved evidence requirements
  • Improved recommendation confidence handling
  • Improved reversible optimization flow
  • Improved integration with measured game performance
  • Improved protection against recommendations when evidence is insufficient
  • GameMode can now be used as a real runtime optimization candidate where appropriate
  • Improved no-op handling when an optimization would not provide a meaningful change

Automatic Optimization deliberately continues to avoid:

  • fake FPS predictions
  • generic RAM booster behavior
  • drop_caches tricks
  • random sysctl collections
  • blindly applying unknown engine variables
  • applying changes only because ...
Read more

Game Optimization Linux 0.1.5-alpha

Choose a tag to compare

@DevVoidPL DevVoidPL released this 10 Aug 18:56

Large alpha update focused on real game analysis, Btrfs measurements, runtime reliability, controller support and the foundation of automatic game optimization.

This release contains a lot of internal and user-facing changes compared with 0.1.4-alpha.

Warning

Game Analyzer, performance baseline recording and Automatic Optimization are still experimental.

Engine/API/runtime/executable detection does not work correctly for every game yet and may return Unknown.
Automatic optimization is still under active development and currently has only a limited number of safe optimization candidates.

Do not expect every game to receive useful recommendations yet.

Added

  • Game Analyzer / GameFingerprint system
  • Experimental game engine detection:
    • Unreal Engine
    • Unity
    • REDengine
  • Executable detection shared with the OptiScaler resolver
  • PE/ELF architecture detection
  • Graphics API detection where reliable information is available
  • Steam compatibility/runtime detection
  • Host hardware snapshot:
    • CPU
    • GPU
    • RAM
    • VRAM
    • display resolution
    • refresh rate
  • Real VRAM detection instead of the previous placeholder value
  • Performance measurement foundation using MangoHud logs
  • Per-game baseline measurement sessions
  • Bottleneck analysis foundation:
    • GPU bottleneck
    • CPU bottleneck
    • VRAM pressure
    • RAM pressure
    • frame pacing problems
    • balanced / insufficient data
  • Optimization recommendation framework with evidence, confidence and limitations
  • Initial safe engine-specific optimization candidates
  • Before / After performance comparison foundation
  • Apply / Revert infrastructure for reversible optimization changes

Btrfs / Storage

  • Added real exact Btrfs compression measurement using compsize
  • Exact measurement uses the host Polkit authentication dialog
  • No password is stored or passed through the application
  • Basic Btrfs verification still works without administrator authentication
  • Added real:
    • physical disk usage
    • uncompressed extent size
    • current compression saving
    • compression ratio
    • compression classification
    • measurement source/status
  • Exact measurements are separated from estimated compression analysis
  • Exact results are now correctly propagated to the game header and Storage page
  • Invalid or incomplete compsize output is no longer reported as a successful measurement
  • Measurements are isolated per game/AppID

Steam Runner

  • Major Game Optimization Runner improvements
  • Improved preservation of the original Steam / Proton environment
  • Fixed Steam Runtime libraries leaking into host tools
  • Fixed scenarios that could incorrectly produce compatdata/0
  • Improved AppID restoration and validation
  • Improved environment isolation for host-side commands
  • One permanent Steam Launch Option can still be used while the application generates the per-game launch plan
  • Improved runner preflight detection from Steam localconfig.vdf
  • Fixed false Game Optimization Runner is not configured results when Steam contains multiple nodes for the same AppID
  • Launch Options are now checked semantically instead of requiring one exact string
  • Improved runner support for repeated Steam/Proton wrapper stages

Performance Baseline

  • Added experimental Record baseline workflow
  • Baseline sessions use a private one-session MangoHud configuration
  • Saved per-game MangoHud profiles are not modified
  • Added session states for:
    • waiting for Steam
    • waiting for runner
    • recording
    • waiting for game exit
    • processing
    • completed / failed
  • Added protection against stale or previous sessions attaching to a new launch
  • Improved handling of Steam/Proton launching the runner multiple times
  • Added fallback handling when the MangoHud log has completed but the runner completion signal is lost
  • Added support for importing an existing MangoHud log

Note

Real baseline recording is still experimental and needs more testing with different Steam/Proton games.
Some games may still fail to create a usable measurement.

Gamescope / GameMode / Launch Plan

  • Improved Gamescope command generation
  • Removed unnecessary default Gamescope arguments
  • Improved Gamescope environment isolation
  • Prevented Steam Runtime / Vulkan / Fossilize variables from incorrectly leaking into Gamescope
  • GameMode and Gamescope remain independent parts of the generated launch plan
  • Improved wrapper ordering while preserving the original Steam/Proton command

Controller / Couch Mode

  • Fixed controller access inside the Flatpak sandbox
  • Added required input-device access
  • Improved SDL3 controller diagnostics
  • Improved controller dead-zone and navigation handling
  • Improved Couch Mode fullscreen / cursor behavior
  • Removed or hidden controller settings that had no working implementation

UI / Settings

  • New Sidebar SVG icons
  • Improved Optimization page layout
  • Improved Detected Game information layout
  • Added more detailed performance-analysis information
  • Removed placeholder CPU/GPU resource-limit controls that had no runtime implementation
  • Removed non-functional interface-sound setting
  • Removed unnecessary Sidebar status/version information
  • Improved saved default Btrfs compression-profile behavior

Fixed

  • Flatpak startup regressions after controller refactoring
  • Host command execution from Steam Runtime environments
  • Gamescope crashes caused by inherited Steam loader variables
  • Controller not being visible inside the Flatpak sandbox
  • VRAM incorrectly reporting 0 GiB
  • Game Analyzer ignoring executable information already available elsewhere in the application
  • Exact Btrfs measurement succeeding internally but appearing as unavailable in the UI
  • False-negative Steam runner detection for games with duplicate AppID nodes in localconfig.vdf
  • Baseline lifecycle getting stuck when Steam/Proton invoked the runner more than once
  • Various QML state, translation and runtime issues

Experimental Automatic Optimization

The long-term optimization workflow is now being built around:

Analyze Game -> Measure -> Detect Bottleneck -> Recommend -> Preview -> Apply -> Measure Again -> Keep/Revert

The current implementation is only the foundation.

Game Optimization Linux deliberately avoids fake FPS predictions, generic "RAM booster" behavior, global cache clearing and blindly applying unknown engine variables.

If there is not enough reliable information, the application should prefer returning no recommendation rather than applying a placebo tweak.

Known limitations

  • Engine detection is incomplete and some games will show Unknown
  • Executable/runtime/API detection may still fail for some games
  • Game category detection is currently very limited
  • Baseline recording still needs real-world testing across more games and Proton versions
  • Automatic Optimization currently has only a small set of safe candidates
  • A detected engine does not yet mean that the application has a useful optimization for that game
  • Gamescope compatibility still varies between games and systems
  • This is still an alpha release

Not included yet

The following planned features are not part of this release yet:

  • Deep Optimize / unnecessary game-data cleanup
  • AI Graphics Remaster
  • Local Polish / Spanish narrator
  • Full engine-specific optimization library
  • Generic automatic RAM optimization

These are planned for later development and should not be considered finished features.

Game Optimization Linux 0.1.4-alpha

Choose a tag to compare

@DevVoidPL DevVoidPL released this 08 Aug 23:43

Game Optimization Linux 0.1.4-alpha

Major alpha update focused on game optimization features, safer integrations and internal architecture.

Added

  • Online OptiScaler installation, update, repair and removal
  • Official OptiScaler release downloads with cache and SHA-256 validation
  • Proton Tweaks per game
  • Unified launch plan for Proton Tweaks, OptiScaler, MangoHud, GameMode and Gamescope
  • Improved Unreal Engine executable detection
  • Improved Desktop and Couch Mode integration
  • GitHub Actions CI

Changed

  • AppController refactored into separate domain controllers
  • Updated project branding to Game Optimization Linux
  • Updated README, testing documentation and architecture documentation
  • Improved Flatpak portability and host integration
  • Improved safety around OptiScaler DLL management and anti-cheat protected games

Existing features

  • Btrfs game compression and analysis
  • MangoHud per-game profiles
  • GameMode
  • Gamescope
  • Steam library detection
  • Controller-friendly Couch Mode
  • English, Polish and Spanish UI

Validation

  • 567 tests passed
  • 3 Btrfs integration tests skipped
  • 0 failed
  • 119/119 QML stability probes passed
  • QML lint passed
  • AppStream validation passed
  • compileall passed

This is an alpha release and additional testing across Linux distributions and hardware configurations is still needed.sting.

Game Optimization Linux 0.1.2-alpha

Pre-release

Choose a tag to compare

@DevVoidPL DevVoidPL released this 08 Aug 19:37

Game Optimization Linux 0.1.2-alpha

Early testing release focused on Flatpak portability across Linux distributions.

Highlights

  • Distro-agnostic Flatpak architecture
  • Steam library detection
  • Desktop and Couch Mode
  • Controller support
  • MangoHud integration
  • GameMode integration
  • Gamescope integration
  • Btrfs game compression
  • Per-game optimization settings
  • Host tools detected independently
  • No host Python dependency

Testing

Tested primarily on Arch Linux.

NixOS and other distributions are currently considered experimental and need real-world testing.