Skip to content

feat(platform): verify and document Steam Runtime / Steam Deck compatibility for Linux + Windows #11

Description

@e-gleba

Summary

Add verified CMake presets and CI jobs that target the Steam Runtime (Linux) and produce Windows binaries compatible with Steam distribution requirements. Goal: a game or tool built from this template drops into Steam without runtime library conflicts on Steam Deck, Ubuntu 20.04+ baseline, or Windows 10+.

Motivation

Indie gamedev is the largest segment of solo/small-team C++ developers on Steam. Most CMake templates ignore Steam entirely; developers discover ABI incompatibilities (glibc too new, C++ stdlib mismatch, missing steam-runtime symbols) only after their first upload. A template that pre-verifies Steam Runtime compatibility is a direct differentiator against cpp-best-practices, kigster, and generic starters.

Acceptance Criteria

  • Add linux-steam-sniper configure preset that targets Steam Runtime Sniper (Ubuntu 22.04-based scout successor); build inside registry.gitlab.steamos.cloud/steamrt/sniper/sdk container or equivalent
  • Verify libc.so.6, libstdc++.so.6, and libgcc_s.so.1 ABI compatibility against Steam Runtime manifest
  • Add CI job that runs steam-runtime-check or steamrt/tasks/check-abi on produced binary
  • Document Windows preset msvc-steam / llvm-mingw-steam-x86_64 with static CRT linkage (/MT or -static-libgcc -static-libstdc++) to avoid VC++ redist dependency for Steam
  • Verify produced .exe has no external dependency on vcruntime140.dll / msvcp140.dll (use dumpbin /dependents or ldd equivalent on Wine)
  • Provide steam_appid.txt template, deploy/ directory structure, and CPack generator for .zip ready for SteamPipe
  • Test binary execution on Steam Deck (Arch-based SteamOS) via GitHub Actions self-hosted runner or community validation

Research & References

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions