• Stars
    star
    1,133
  • Rank 39,523 (Top 0.9 %)
  • Language
    Shell
  • License
    Other
  • Created over 11 years ago
  • Updated 7 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A runtime environment for Steam applications

steam runtime SDK

A binary compatible runtime environment for Steam applications on Linux.

Introduction

The Linux version of Steam runs on many Linux distributions, ranging from the latest rolling-release distributions like Arch Linux to older LTS distributions like Ubuntu 14.04. To achieve this, it uses a special library stack, the Steam Runtime, which is installed in ~/.steam/root/ubuntu12_32/steam-runtime. This is Steam Runtime version 1, codenamed scout after the Team Fortress 2 character class.

The Steam client itself is run in an environment that adds the shared libraries from Steam Runtime 1 'scout' to the library loading path, using the LD_LIBRARY_PATH environment variable. This is referred to as the LD_LIBRARY_PATH runtime. Most native Linux games available through Steam are also run in this environment.

A newer approach to cross-distribution compatibility is to use Linux namespace (container) technology, to run games in a more predictable environment, even when running on an arbitrary Linux distribution which might be old, new or unusually set up. This is implemented as a series of Steam Play compatibility tools, and is referred to as the Steam container runtime, or as the Steam Linux Runtime.

The Steam Runtime is also used by the Proton Steam Play compatibility tools, which run Windows games on Linux systems. Older versions of Proton (5.0 or earlier) use the same 'scout' LD_LIBRARY_PATH runtime as most native Linux games. Newer versions of Proton (5.13 or newer) use a container runtime with newer library versions: this is Steam Runtime version 2, codenamed 'soldier'.

More information about the LD_LIBRARY_PATH runtime and container runtime is available as part of the steam-runtime-tools documentation.

Reporting bugs and issues

Please report issues to the steam-runtime issue tracker.

The container runtimes have some known issues which do not need to be reported again.

The container runtime is quite complicated, so we will need additional information to be able to make progress on resolving issues.

Steam-runtime Repository

The Steam-runtime SDK relies on an APT repository that Valve has created that holds the packages contained within the steam-runtime. A single package, steamrt-dev, lists all the steam-runtime development packages (i.e. packages that contain headers and files required to build software with those libraries, and whose names end in -dev) as dependencies. Conceptually, a base chroot environment is created in the traditional way using debootstrap, steamrt-dev is then installed into this, and then a set of commonly used compilers and build tools are installed. It is expected that after this script sets the environment up, developers may want to install other packages / tools they may need into the chroot environment. If any of these packages contain runtime dependencies, then you will have to make sure to satisfy these yourself, as only the runtime dependencies of the steamrt-dev packages are included in the steam-runtime.

Installation

Steam Runtime version 1, 'scout' is automatically installed as part of the Steam Client for Linux.

Each version of the Steam container runtime is automatically downloaded to your Steam library if you install a game or a version of Proton that requires it. They can also be downloaded by opening steam:// links with Steam:

  • Steam Linux Runtime (scout-compatible): steam steam://install/1070560
  • Steam Linux Runtime - soldier: steam steam://install/1391110
  • Steam Linux Runtime - sniper: steam steam://install/1628350

All the software that makes up the Steam Runtime is available in both source and binary form in the Steam Runtime repository https://repo.steampowered.com/steamrt

Included in this repository are scripts for building local copies of the Steam Runtime for testing and scripts for building Linux chroot environments suitable for building applications.

Building in the runtime

To prevent libraries from development and build machines 'leaking' into your applications, you should build within a Steam Runtime container or chroot environment.

We recommend using a Toolbx, rootless Podman or Docker container for this:

podman pull registry.gitlab.steamos.cloud/steamrt/scout/sdk

or

sudo docker pull registry.gitlab.steamos.cloud/steamrt/scout/sdk

For more details, please consult the Steam Runtime SDK documentation.

Using a debugger in the build environment

To get the detached debug symbols that are required for gdb and similar tools, you can download the matching com.valvesoftware.SteamRuntime.Sdk-amd64,i386-scout-debug.tar.gz, unpack it (preserving directory structure), and use its files/ directory as the schroot or container's /usr/lib/debug.

For example, with Docker, you might unpack the tarball in /tmp/scout-dbgsym-0.20191024.0 and use something like:

sudo docker run \
--rm \
--init \
-v /home:/home \
-v /tmp/scout-dbgsym-0.20191024.0/files:/usr/lib/debug \
-e HOME=/home/user \
-u $(id -u):$(id -g) \
-h $(hostname) \
-v /tmp:/tmp \
-it \
steamrt_scout_amd64:latest \
/dev/init -sg -- /bin/bash

or with schroot, you might create /var/chroots/steamrt_scout_amd64/usr/lib/debug/ and move the contents of files/ into it.

Using detached debug symbols

Please see doc/debug-symbols.md.

More Repositories

1

Proton

Compatibility tool for Steam Play based on Wine and additional components
C++
22,477
star
2

GameNetworkingSockets

Reliable & unreliable messages over UDP. Robust message fragmentation & reassembly. P2P networking / NAT traversal. Encryption.
C++
7,681
star
3

openvr

OpenVR SDK
C++
5,946
star
4

steam-for-linux

Issue tracking for the Steam for Linux beta client
4,034
star
5

source-sdk-2013

The 2013 edition of the Source SDK
C++
3,591
star
6

halflife

Half-Life 1 engine based games
C++
2,971
star
7

steam-audio

Steam Audio
C++
2,055
star
8

ToGL

Direct3D to OpenGL abstraction layer
C++
2,009
star
9

SteamOS

SteamOS community tracker
1,465
star
10

vogl

OpenGL capture / playback debugger.
C++
1,415
star
11

Dota2-Gameplay

Public Bug Tracker for Dota2
1,388
star
12

wine

Wine with a bit of extra spice
C
1,093
star
13

steamvr_unity_plugin

SteamVR Unity Plugin - Documentation at: https://valvesoftware.github.io/steamvr_unity_plugin/
C#
1,010
star
14

SteamVR-for-Linux

Issue tracker for the Linux port of SteamVR
901
star
15

csgo-osx-linux

Counter-Strike: Global Offensive
750
star
16

Source-1-Games

Source 1 based games such as TF2 and Counter-Strike: Source
572
star
17

Fossilize

A serialization format for various persistent Vulkan object types.
C++
510
star
18

IndexHardware

474
star
19

csgo-demoinfo

CS:GO demo parsing tool
C++
472
star
20

Dota-2

Tracker for issues specific to Linux and Mac in the Reborn client. If you have a general issue or non-system-specific feature request please go to dev.dota2.com
454
star
21

steamlink-sdk

450
star
22

counter-strike

CS:GO
JavaScript
430
star
23

steamos_kernel

SteamOS kernel branches
C
388
star
24

dxvk

dxvk tree containing branches used by Proton
C++
342
star
25

unity-xr-plugin

OpenVR plugin for Unity's XR API
C#
298
star
26

ArtifactDeckCode

Reference code and documentation for Artifact deck codes
PHP
276
star
27

the_lab_renderer

Valveโ€™s VR renderer used in The Lab (Valveโ€™s VR launch title for the HTC Vive).
C#
272
star
28

voglperf

Benchmarking tool for Linux OpenGL games. Spews frame information, logs frametimes.
C
198
star
29

steamvr_unreal_plugin

SteamVR Input Unreal Plugin - Documentation at: https://github.com/ValveSoftware/steamvr_unreal_plugin/wiki Sample project (UE4.15-4.23): https://github.com/ValveSoftware/steamvr_unreal_plugin/wiki/sample/SteamVRInputPlugin.zip Sample Project (UE.424+): https://github.com/ValveSoftware/steamvr_unreal_plugin/wiki/sample/SteamVRInputPlugin_UEIntegrated.7z
C++
164
star
30

steamos_mesa

Patched branches of Mesa used in SteamOS
C
157
star
31

Moondust

C#
156
star
32

portal2

Issues for the Linux port of Portal 2
136
star
33

steamworks-vr-api

Source for the Steamworks VR API
136
star
34

steam-devices

List of devices Steam and SteamVR will want read/write permissions on, to help downstream distributions create udev rules/etc
128
star
35

vkd3d

C
120
star
36

steamos-compositor

SteamOS session compositing window manager
C
109
star
37

driver_hydra

OpenVR Driver for Razer Hydra using Sixense SDK
C++
99
star
38

Dota-2-Vulkan

Tracker for issues specific to the Vulkan version of Dota 2 on Windows, Linux, and macOS
93
star
39

virtual_display

An example OpenVR driver for demonstrating the IVRVirtualDisplay interface.
C++
80
star
40

openxr_engine_plugins

Contains Valve-provided plugins for using OpenXR extensions with various game engines
Mathematica
46
star
41

linux

SteamOS fork of the Debian kernel packaging repository at https://anonscm.debian.org/git/kernel/linux.git/
45
star
42

eigen

Fork of Eigen release version 3.4. Adds ability to use alternate threading systems from Open MP.
C++
22
star
43

Dota-Underlords

Tracker for issues specific to the Linux and macOS client of Dota Underlords
22
star
44

OpenXR-Canonical-Pose-Tool

A tool to help OpenXR runtime developers match their poses to other runtimes' poses.
C
10
star
45

VR-Community-Bugs

Repository for VR Bugs reported through tickets and community outreach
9
star