Salut les canards,
Il est désormais plutôt facile de streamer des jeux depuis un ordinateur puissant vers d'autres moins puissants. Nos bêtes de courses sont aussi suffisament puissantes pour faire tourner plusieurs PC en un seul.
L'idée est donc de centraliser la puissance de jeu dans une seule et même machine qui redistribue le contenu vers d'autres.
Les avantages sont nombreux : possibilité de jouer sur d'anciennes machines (ou OSX/Linux/Android), maintenance réduite, consommation énergétique réduite, WAF et silence (NUC > PC de gamer), centralisation (dans un placard ou dans la cave par exemple), multi-usage (serveur de jeu, serveur web, NAS, HTPC, ...)
En termes d'inconvénients : plus difficile à mettre en place, cablage probable
Plusieurs choix s'offrent à ceux que l'idée intéresse : sans-tête ou multi-têtes
1. Un serveur de jeu (Sans-Tête) + des clients dans la maison
Dans cette configuration, des clients (raspberry, ordinateurs portables, tablettes, ordinateurs peu puissants, steam machines) envoient les inputs vers le serveur de jeu, qui leur renvoie l'image.
Cette configuration s'appuie sur des technologies de streaming comme Steam In-Home Streaming et Nvidia Shield (+ Limelight).
Voici les pré-requis :
- Un ordinateur de jeu standard qui fera tourner les jeux et les enverra vers les clients
- Pour Steam streaming : il faut que les machines clientes puissent installer Steam (exit Raspberry Pi) et il faut qu'elles soient connectées sur le même compte que la machine serveur
- Pour Limelight : il faut une carte graphique Nvidia 650 ou plus récente (voir ici). Il est ensuite possible de streamer vers Android, Raspberry Pi, Linux/OSX/Windows ou encore sur Nvidia Shield.
- Il est recommandé d'avoir une bonne connexion LAN (gigabit Ethernet) pour réduire le lag.
Voici un exemple de configuration Sans-Tête :
Avantages : facile à mettre en oeuvre (installer Steam ...), permet de jouer partout dans la maison
Inconvénients : PC dédié au jeu, consommation énergétique, ne permet de streamer qu'un jeu à la fois (donc pas de LAN possible), nécessite un bon réseau local
Pour rendre son serveur multi-fonction, il est possible soit d'installer des machines virtuelles sur le PC windows (comme un NAS Xpenology), soit avoir un vrai serveur avec plusieurs machines virtuelles pour chaque fonction (dont une sous Windows dédiée au jeu).
La deuxième solution est préférable car comme le dit Buite :
Pour la mettre en oeuvre, regardez donc ce qui est écrit juste après !
2. Plusieurs ordinateurs dans la même machine ! (Sans-Tête ou Multi-Têtes)
Dans cette configuration, vous avez un serveur qui peut assurer plusieurs fonctions, dont l'une est d'envoyer le contenu du jeu. Tout ceci ce fait par la magie de la virtualisation.
Vous pouvez soit streamer le contenu vers des clients (semblable au point 1., Sans-Tête), soit le rebalancer directement à des écrans/claviers/souris (donc sans tour) à condition d'avoir une carte graphique dédiée par écran. Cette machine (dite Multi-Têtes) envoie à chaque écran un PC différent ! Concrètement, si vous avez par exemple une machine ayant 2 cartes graphiques et 16Go de RAM, vous pouvez attribuer une CG et 8Go à chacun des deux postes écran/clavier/souris. Vous avez donc deux ordinateurs de jeu en un !
Voici les pré-requis :
- Un serveur puissant ayant autant de cartes graphiques que d'ordinateurs à simuler (et pas mal de RAM)
- Une carte graphique ou des cartes graphiques, si possible AMD (Radeon) ou Nvidia pro (Quadra, GRID), ou Nvidia normale en utilisant un autre système - attention, se renseigner sur les compatibilités
- Une carte-mère et un processeur permettant la virtualisation (VT-d, etc ...)
- (Multi-Têtes : La possibilité de connecter des écrans/claviers/souris sur le serveur)
Voici un exemple de configuration Multi-Têtes :
Il est également possible d'utiliser des prolongeurs HDMI/ethernet et USB/ethernet pour cabler sur de longues distances.
Voici des exemples de projets dans la même idée :
- Un article réalisant ce même projet
- Un guide pour réaliser ce projet
- Une vidéo de démo
- Le projet HYDRA tout à fait dans l'idée + son post Steam
Note : Si votre carte graphique n'est ni AMD, ni Nvidia Quatro, vous devrez utilisez Qemu-KVM au lieu des autres solutions proposées dans les liens ci-dessus (esxi, xen). Voici quelques liens :
- Multiheaded NVIDIA Gaming using Ubuntu 14.04 + KVM
- Create a gaming virtual machine using VFIO PCI passthrough for KVM
- Thread Qemu-KVM sur HFR
Avantages : permet de jouer partout dans la maison, multi-usage (Jeu, NAS, HTPC, ...), consommation énergétique adaptée, économies d'échelles (une seule machine à acquérir/entretenir)
Inconvénients : plus difficile à mettre en oeuvre, nécessite une machine plus puissante, nécessite du cablage
Retour d'expérience
N'hésitez pas à partager ici vos projets, vos idées, vos remarques, vos suggestions !
--- message initial ---
Salut les canards, j'aimerais votre avis svp sur un projet en cours que j'ai du mal à formuler pour le moment.
I have a dream : assembler une machine de guerre ultra performante mais aussi ultra bruyante et la planquer dans un placard pour m'en servir à distance dans la maison.
J'ai pour projet de me monter un serveur de fichier, un serveur multimedia, un serveur domotique et d'autres trucs. Pas de problème jusque là, tout peut tourner sous Linux ou même dans un NAS.
Mais j'ai aussi vu récemment quelques vidéos du nouveau "Steam In-House Streaming" (exemple). Et je me suis alors dit : pourquoi ne pas rajouter ça à mon serveur ???
Le gros attrait pour moi est d'avoir le strict minimum sur mon bureau et dans mon salon en termes d'encombrement et de bruit, genre des mini-configs fanless. Un peu comme des clients légers ... Ou juste des rallonges HDMI/USB reliées au serveur.
L'avantage est aussi évident en termes d'upgrade : il n'y a qu'à améliorer petit à petit le monstre du placard. Le reste est relativement protégé de l'obsolescence.
De manière pratique, j'envisageais d'installer quelques machines virtuelles sur une seule machine physique pour ce faire :
- La machine "serveur": une Linux content le NAS, la domotique, le serveur multimédia etc... Allumée en permanence.
- La machine "jeux": une Windows ou SteamOS contenant tous les jeux. Allumée quand je veux jouer (depuis le salon ou le bureau).
Quand je veux lancer un jeu depuis les mini-configs du bureau ou du salon, j'ai juste à lancer Steam et streamer mon jeu depuis le serveur.
Voici maintenant mes questions :
- Avez-vous déjà expérimenté ce type de configurations ?
- Vaut-il mieux plutôt faire un HAF stacker avec plusieurs machines physiques (l'une minimale pour le serveur et la grosse pour le jeu) et juste rebalancer inputs/outputs ? Mais ça perd un peu l'aspect centralisé, si ce n'est physique.
- Y aura-t-il des contraintes particulières ? Latences à prévoir ? Que faut-il prévoir en termes de réseau ?
- Peux-t-on streamer du contenu 3D (films, jeux) depuis le serveur musclé vers les mini-configs ?
Je rêve sans doute éveillé mais si ce type de configurations domestiques existe je serais aux anges ! J'ai vraiment pas envie de me monter 20 configs pour des usages différents et j'aime l'idée de planquer des NUC ou des Raspberry Pi partout et pour tout faire. Je peux ainsi m'adonner aux joies du hardware dans ma cave/mon placard et garder ma maison clean (+ un bon WAF)
Franchement, qui voudrait mettre ce truc dans son bureau et son salon plutôt que dans sa cave ou dans un placard ?