Documentation Steamworks
Développer pour SteamOS et Linux

Linux : présentation

Steam pour Linux est désormais disponible pour toutes les personnes qui utilisent Steam. C'est le moment de porter votre jeu sur Linux : le catalogue des jeux compatibles ne cesse de s'élargir et la communauté Steam pour Linux est particulièrement active.

Développer un jeu Linux pour Steam peut s'avérer complexe pour les équipes de développement habituées à un environnement Windows et macOS. Les informations suivantes vous aideront à porter votre jeu sur Linux pour Steam.

Démarrage

Pour porter votre jeu sur Linux, voici ce dont vous aurez besoin.

  • Une machine de développement disposant d'une version de Linux entièrement à jour. Il peut s'agir d'une machine avec un double démarrage, d'une machine Linux dédiée, ou même d'une machine virtuelle tournant sous Linux. De plus, le développement est possible sur les distributions Linux 32 et 64 bits. La distribution Linux recommandée est la dernière version d'Ubuntu LTS ; il s'agit de celle qui est la plus testée par Valve et la communauté Linux. Cliquez ici pour télécharger Ubuntu.
  • Le client Steam pour Linux.
  • Le kit de développement de base pour Linux (par exemple, g++, gcc et un logiciel make) contenu dans le package de build essentiel. Installez ce package soit en utilisant la logithèque Ubuntu ou depuis une fenêtre de terminal ouverte à l'aide de la commande apt-get suivante : sudo apt-get install build-essential.
  • La dernière version de l'environnement d'exécution Steam pour Linux (Steam Linux Runtime), qui comprend les outils et un ensemble complet de bibliothèques nécessaires à la publication de vos jeux Linux sur Steam. Vous trouverez des instructions sur l'utilisation du module d'exécution dans le fichier README.md du référentiel.

Si vous avez des questions générales à propos de Steamworks pour Linux, ou si vous souhaitez signaler des problèmes liés à l'environnement d'exécution, rejoignez le groupe de développement Steamworks et posez vos questions sur les forums de discussion Linux.

Outils Linux

Il existe un grand nombre d'outils de développement pour Linux, comme des interfaces en ligne de commande ou des IDE avec une interface graphique. Les informations suivantes sont basées sur l'expérience de l'équipe Linux de Valve.

Pour les équipes de développement habituées à Windows, le moyen le plus simple de développer pour Linux est d'utiliser Visual Studio sur Windows avec WinGDB, une extension pour Visual C++ qui permet le débogage à distance de processus Linux à l'aide de l'interface de débogage de Visual Studio.

Pour développer sous Linux, l'équipe Linux de Valve a utilisé les outils suivants.
  • QtCreator : débogueur et IDE avec des raccourcis clavier similaires à ceux de Visual Studio.
  • SlickEdit : éditeur de texte avec une interface graphique basique et configurable, et qui offre la possibilité de définir des raccourcis.
  • gdb : débogueur en ligne de commande populaire.
  • cgdb : encapsuleur de gdb qui fournit une vue en écran partagé de l'emplacement actuel dans le code source pendant l'exécution.
  • Eclipse : autre IDE qui peut être configuré pour le développement sous Linux. Disponible sur Windows,
    macOS et Linux.
  • vim : éditeur de texte en ligne de commande basique.

En outre, l'équipe Linux de Valve a aussi utilisé les outils de débogage et de suivi suivants.
  • QtCreator : voir plus haut.
  • Symbol Servers.
  • PerfStudio : débogueur complet pour la composition des images,
    capable de tracer les appels d'API pour les jeux qui tournent sur des cartes graphiques AMD. Disponible sur Windows.
  • Telemetry : profileur complet pour les jeux qui tournent sur des cartes graphiques. Disponible sur
    Linux, Windows et macOS.
  • gDEBugger : débogueur qui permet de déboguer, profiler et analyser du code OpenGL. Il a été abandonné au profit de CodeXL.
  • perf : outil en ligne de commande avec diverses fonctionnalités relatives aux performances. Disponible sur Linux.
  • NVIDIA Nsight : extension pour Visual Studio destinée au débogage des jeux qui tournent
    sur des cartes graphiques NVIDIA.
  • lTTng : outil de traçage Linux.
  • apitrace : ensemble d'outils destiné au traçage et à la répétition d'appels OpenGL et OpenGL ES depuis votre jeu.
  • Zoom : profileur de CPU disposant d'une interface puissante et simple d'utilisation.

API pour Linux

Vulkan est la bibliothèque de choix pour de bonnes performances de rendu graphique. Il s'agit de l'équivalent open source de DirectX12 et de Metal.

OpenGL était l'ancien standard pour le rendu graphique. La plupart des jeux appellent directement OpenGL, mais il existe d'autres jeux qui utilisent une méthode de traduction où le code de rendu d'origine est traduit en appels OpenGL. C'est l'approche utilisée par les anciens jeux Valve utilisant Source, tels que Team Fortress 2 ou Counter-Strike: Source. Si vous choisissez OpenGL, nous vous recommandons d'utiliser les fonctionnalités principales d'OpenGL 3.0 dans votre jeu.

La version 2.0 de Simple DirectMedia Layer (SDL) permet, parmi bien d'autres choses, un accès de bas niveau à l'audio et au fenêtrage. L'utilisation d'OpenGL assure la prise en charge du rendu en 3D. Vous trouverez les instructions d'installation ici. Pour plus d'informations et de documentation, consultez le wiki de SDL. Chez Valve, c'est ce que nous utilisons dans Steam et dans la plupart de nos jeux pour gérer le fenêtrage. C'est également ce qui fournit l'infrastructure qui implémente l'API Steam Input.

Les bibliothèques suivantes assurent une prise en charge d'autres aspects du développement de jeux.
  • FreeType : rendu de polices (vectorielles et bitmap) sur Linux.
  • Fontconfig : configuration et personnalisation de l'accès aux polices d'écriture.
  • Miles Sound System : moteur audio en middleware pour le développement sous Linux.
  • Bink Video : codec vidéo conçu pour les équipes de développement de jeux.
  • WebM : format ouvert de fichier média, utilisé pour l'enregistrement des vidéos de Team Fortress 2 à la place de QuickTime.

Référentiels GitHub

Les référentiels suivants sont publics et sont utilisés pour les projets liés à Steam pour Linux.
  • steam-for-linux : inclut du contenu pour le client Steam pour Linux ainsi que le système de suivi de bugs associé.
  • steam-runtime : contient le projet Steam Linux Runtime. Son but est de fournir un environnement d'exécution stable pour le développement des jeux Steam sur Linux.

    FAQ

    Q. Mon jeu Linux comporte de multiples dépendances vers des bibliothèques externes. Comment résoudre ce problème ?
    R. De nombreuses bibliothèques populaires telles que SDL, OpenAL, FreeType et Fontconfig sont incluses dans l'environnement d'exécution Steam pour Linux afin de vous faciliter la tâche. Si vous utilisez d'autres bibliothèques externes qui ne sont pas incluses dans l'environnement d'exécution et qui sont librement redistribuables, merci de le mentionner dans les discussions dédiées à Linux et SteamOS dans le groupe de développement Steamworks.

    Q. Existe-t-il un DRM Steam pour Linux ?
    R. Oui ! Le nouvel outil de DRM drmtoolp est compatible avec Linux. Pour plus d'informations, veuillez consulter la section GDN Steam.

    Q. Quelle est la différence de performances des pilotes entre Ubuntu et Windows ?
    R. Les pilotes propriétaires de NVIDIA sont comparables à ceux de Windows en termes de stabilité, de performances et de fonctionnalités. Les pilotes propriétaires d'AMD et Intel sont également disponibles, mais leurs performances et leur stabilité sont plus faibles que celles de leurs équivalents Windows.

    Les performances sur Linux varient en fonction de la carte graphique et du type de pilote (open source ou propriétaire) utilisés. En général, les pilotes propriétaires sont plus performants que leurs équivalents open source, et ont davantage de fonctionnalités. De plus, l'ancienneté du pilote peut varier entre les versions propriétaires et open source.

    Q. L'overlay Steam ne fonctionne pas lorsqu'il est lancé en dehors de Steam.
    R. Sous Linux, il est nécessaire de définir la variable d'environnement LD_PRELOAD de façon à charger gameoverlayrenderer.so.

    Voici à quoi cela devrait ressembler :
    export LD_PRELOAD=~/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so;~/.local/share/Steam/ubuntu12_64/gameoverlayrenderer.so

    Q. Quel environnement d'exécution devrais-je utiliser pour tester mon build Linux ?
    R. La distribution Linux recommandée est la dernière version d'Ubuntu LTS ; il s'agit de celle qui est la plus testée par Valve et la communauté Linux. Cliquez ici pour télécharger Ubuntu.