L'écosystème libre autour du jeu vidéo

[ao@CdL-2023 ~]$ whoami


a0kami (Pierre)

  • Informatique graphique
  • Portage linux/macOS chez Feral Interactive
  • Simulateurs d'entraînement 3D


a0kami@mamot.fr
aokami.codelib.re

Constat

Je préfère Linux
Mais joueur PC depuis 20 ans
Dualboot ? GPU passthrough ? Concessions ? Renoncer ?

Est-ce que le jeu vidéo freine l'adoption de Linux ?

L'écosystème ?

Des jeux

  • Libres
  • Moins libres
  • Mods

Des plateformes

  • Éditeurs
  • Distributeurs
  • Launchers

Des outils

  • Création
  • Compatibilité
  • Bases de Donnée
  • Tiers

😵‍💫

Mauvaise nouvelle: on a 25 minutes

Bonne nouvelle: RevealJS + sources (+ de détail dans les notes)

Sommaire

  1. À quoi jouer ?
  2. Comment jouer ?
  3. Comment faire un jeu ?

Petit jeu: trouver les 6 liens vers des confs de l'an dernier

Petit bonus: liens vers agenda et vidéos CdL23 pour les autres talks

1. Jeux libres, jeux propriétaires, collectifs

1. Jeux libres, jeux propriétaires, collectifs

Jeux libres

Quelques succès

Friday Night Funkin (2020)
Frets on Fire (2006)
Penumbra (2007), Amnesia (2013)
0 A.D. (2010)

Les plus cités

Réimplémentation libres de moteurs

Petit jeu: qui a une réimplémentation du moteur ?

Age of empire Alone in the Dark Baldur's Gate Command and Conquer Diablo Duke Nukem
Fallout Final Fantasy GTA Jak and Daxter Metroid Might and Magic
Need for Speed Oddworld Prince of Persia Sonic Star Wars Super Mario
System Shock The Elder Scrolls The Legend of Zelda Thief Tomb Raider X-Com

Toutes font l'objet d'un développement actif sauf 2 dont le développement est arrêté
Mais au vu de la complexité exponentielle des jeux récent, ca concerne surtout de vieux jeux

Instant pub

Talk
«Reverse engineering d'un moteur de jeu de fiction interactives» par Adrien Destugues
A001 - 14:30 (25 min) - dimanche (19 nov.)

Jeux propriétaires

Différents modèles pour différentes motivations

Collectifs

Mods: Zone grise, sur du matériel copyrighté,
mais toléré si non lucratif

Émulation, conservation, correctifs, skins, nouveau contenu, serveur privés, …

Effort collectif souvent bénévole

Alors on peut jouer sur Linux ?

D'après wikipedia: 622 jeux

D'après PCGamingWiki: x86(-64) + arm = 1348 jeux

D'après Steam: ~12 000 / ~90 000

Relativement beaucoup de jeux, mais peu d'audience

Depuis 10 ans: plusieurs sorties natives par jour sur Steam en moyenne

2. Jouer sur Linux

Et les autres jeux alors ?

Pré-requis:

Est-ce que le matériel est compatible ?
Est-ce que le logiciel est compatible ?

2. Jouer sur Linux

Matériel

Mesa

  • OpenGL
    • AMD: r300, r600, radeonsi
    • Intel: i915, crocus, iris
    • Nvidia: nouveau
    • Zink = OpenGL via Vulkan
    • (Android, Arm Mali, Apple SoC, Raspberry, VM, software, …)
  • Vulkan
    • AMD: Radv
    • Intel: ANV
    • Nvidia: Nouveau NVK
    • (Android, Arm Mali, Raspberry, software …)
  • OpenCL, VDPAU, VA-API, …

Mentions Spéciales

FNA

Ré-implementation des bibliothèques Microsoft XNA par Ethan Lee et l'équipe MonoGame

Mentions Spéciales

Portage

Une petite histoire: Valve et linux

2012: Windows 8 + «Windows Store obligatoire»
2013: Client Steam natif
2013: Portage des jeux Valve
2014: Steam Machines
2015: Steam Link + Steam Controller
2015: HTC Vive
2018: SteamPlay: Proton
2019: Valve Index
2020: SteamVR (OpenVR)
2022: Steam Deck
2023: Steam Deck OLED
2024: Deckard?
202X: Source 2 SDK?

Part de marché de Linux sur Steam de l'automne 2018 à l'automne 2023

À la louche, bientôt 2 millions d'utilisateurs actif sous Linux

Quel rapport ?
Distributions Linux

Steam Machines:
2013: SteamOS 1 alchemist (Debian 7 Wheezy)
2015: SteamOS 2 brewmaster (Debian 8 Jessie)
2019: fork communautaire GamerOS
➔ devient ChimeraOS en 2021

Seam Deck
2022: SteamOS 3 holo (Arch)

Steam Linux Runtime: scout, soldier, sniper, medic, …

Couches de Traduction

ToGL (d3d9 ➔ openGL)
DXVK (D3D10/11 + D9VK ➔ Vulkan)
VKD3D-Proton (D3D12 ➔ Vulkan)
Zink (OpenGL ➔ Vulkan)
FAudio (FNA)

Optimisations

ACO shader compiler
esync patchset (meilleur multithreading via eventfd())
fsync patchset (fast user space locking futex() étendue)
futex2 (futex_waitv() syscall)
reliable user-space spinlocks
Support de solutions anti-cheat

VR

2019: Gamescope: micro-compositeur wayland

  • Spoofing de résolutions
  • Upscaling
  • Limitation du framerate
  • Colorspace/HDR
  • Permet de contourner certains bugs

OpenVR puis OpenXR
reprojection asynchrone

Écosystème

Support de Vulkan pour Godot 4
il manquait le support de mac qui s'est enfermé sur la solution Metal
mais ouverture des sources de MoltenVK (Vulkan ➔ Metal)
suite à l'implication de Valve

Steam Deck (OLED): Améliorations KDE Plasma
Color space + HDR

«Des joueurs console sous Linux? L'aventure de KDE Plasma sur le Steam Deck» par Kevin Ottens
A001 - 15:00 (50 min) - samedi (18 nov.)

[… Pierre-Loup] Griffais says the company is also directly paying more than 100 open-source developers to work on the Proton compatibility layer, the Mesa graphics driver, and Vulkan, among other tasks like Steam for Linux and Chromebooks.

The verge, 2022

CodeWeavers
Collabora
Igalia

La recette

Bonus: pas besoin de steam

QUelques launchers alternatifs

3. Développer un jeu sous Linux

Oui, c'est possible

Ça l'a toujours été

Grâce aux récentes avancées,
Linux revendique sa place dans l'industrie

3. Développer un jeu sous Linux

Il y a déjà d'autres talks …

«Développer un jeu avec (presque) que des logiciels libre/Open source»
par Thibault Barbaroux et Laurent Chea
A302 - 17:00 (25 min) - samedi (18 nov.)

… et ateliers

«Création de petits jeux vidéo» par La Contre-Voie
A304 - 14:00 (2h) - dimanche (19 nov.)

«Découverte de la création de visual novel avec Ren'py»
par Kim-Anh Tran et Guillaume Foreau
A304 - 10:30 (2h) - dimanche (19 nov.)

Mais avant de finir, 3 points

  • Moteurs: Engines Database
    • Trier par licence (libre), plateforme (linux) de dév/publication, langage, genre, fonctionalité, …
  • Standardisation: principalement Khronos Group
    • Vulkan + extensions: équivalent ouvert de Direct3D 12
    • glTF: format de fichier versatile de scène 3D
    • openXR (Monado): interfaces pour la réalité virtuelle, augmentée et mixte
    • WebGPU: successeur de webGL; s'interface avec Vulkan, D3D12 et Metal; GPGPU
  • À quoi ca ressemble ?
Ma recette: le moteur

Godot 4

  • Linux natif + export multi-platforme
  • Vulkan + Illumination Globale
  • GDShader (sous ensemble de GLSL)
  • glTF
  • Animation re-targetting
  • openXR
  • Serveur de navigation
  • Enet/WebSocket/WebRTC; serveur headless; RPC; réplication
  • User Input
  • Internationalisation
  • GDScript + C# + GDExtension
  • Modules et Extensions
    • Templates: FPS, TPS, Platformer, RPG, Vehicle
    • Terrain3D, Godot Voxel, Godot Heightmap Plugin
    • Jolt Physics
    • Godot Steam
    • wwise, steam audio
Ma recette: les Graphismes

Assets libres

Software

  • Édition 2D: Gimp, Krita, Inkscape, …
  • Matériaux: Material Maker
  • DAW: Ardour, LMMS, ZRythm, Reaper, Waveform, …
  • Modélisation: ?
Modélisation: Blender

«5 ans de développement open source autour de Blender & glTF»
par
Julien Duroure
A302 - 11:30 (50 min) - samedi (18 nov.)


«Blender & glTF 2.0 - dernières nouveautés»
par
Julien Duroure
A302 - 15:00 (50 min) - samedi (18 nov.)


«Blender & Geometry Nodes : cas pratique autour du visuel du Capitole du Libre»
par
Henri Hebeisen
A302 - 16:30 (25 min) - samedi (18 nov.)

Ma recette: la stack serveur
  • Serveur: VPS sous Yunohost
  • Documents de Game Design: BookStack (wiki)
  • Kanban board: Wekan
  • Synchro des assets: serveur + client NextCloud
  • Code source: Gitea
  • Site statique: Flask
  • Autohéberger son image publique via Fediverse
    • Mastodon, Peertube, Lemmy, …

Conclusion

Catalogue, Compatibilité Hardware/Software, Création

Le jeu vidéo n'a plus aucune excuse (valable) pour freiner l'adoption de Linux
et l'utilisation du libre

Solution: confs Cdl2022 cachées

Stanislas Dolcini «Les coulisses de 0 A.D., un jeu de stratégie libre et open-source»

Paul Kocialkowski «Vue d'ensemble de la pile graphique utilisée avec Linux»

Yannick Elahee «Godot peut-il remplacer Unity ?»

Mathias Fontmarty «Material Maker, création procédurale de matériau PBR pour la 3D»

Julien Duroure et Mathias Fontmarty «Modélisation procédurale dans Blender»

Julien Duroure «glTF 2.0: format d'échange libre pour la 3D»

Des questions ?