Autor Thema: Komplexe idee für leistungsstream  (Gelesen 9588 mal)

mineorbit

  • Beiträge: 55
    • Profil anzeigen
Gespeichert
« am: 15. October 2013, 18:45 »
Hallo LowLevel Community!,


Mein Freund und ich spielen zurzeit ein computerspiel. Allerdings ist sein laptop ziemlich schwach und er kann nur mit ganz niedrigen einstellungen mit 14 frames spielen. Für meinen high end pc ist das kein problem, also bin ich auf die idee gekommen, dass ich ihm per stream die leistung meines pc, keinen speicher zur verfügung stelle und er so auf seinem laptop flüssig, nur übers netz auf kosten der leistung meines Pcs zockt.
Wäre das möglich zu programmieren oder noch besser gibt es das bereits?
Ich wäre für eure Hilfe sehr dankbar!
Mit freundlichen Grüßen;
Mineorbit

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 15. October 2013, 20:07 »
"Leistung" kann man nicht streamen. Aber es gibt auf jeden Fall Anbieter, die etwas ähnliches im Internet anbieten. Die nennen das "Cloud Gaming". Das Spiel läuft auf deren Servern und die Tastatur-/Maus-/Controllereingaben werden vom User an den Server gesendet. Das Bild wird währenddessen per Videostream an den User zurück gesendet. Einziges mir bekanntes Beispiel ist http://www.onlive.com/.

Je nach Spiel könnte man das vielleicht mit VNC oder anderer Remote Desktop Software nachstellen. Möglicherweise muss dein Freund in einer VM auf deinem Rechner spielen (möglichst einer mit beschleunigter Grafik), weil zwei Spiele gleichzeitig vielleicht problematisch sind.
Dieser Text wird unter jedem Beitrag angezeigt.

mineorbit

  • Beiträge: 55
    • Profil anzeigen
Gespeichert
« Antwort #2 am: 15. October 2013, 22:09 »
Vielen Dank für die schnelle Antwort!
Meine Wortwahl war einwenig blöd, das mit onlive schau ich mir al an.
Wie würde man so etwas extrem vereinfacht programmieren? Was für einzelne Teile würde ich benötigen?
Viele Grüße,
Mineorbit

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 15. October 2013, 22:40 »
Ich hab natürlich keine Ahnung von sowas, aber ich schätze sowas zu programmieren ist schon relativ aufwändig. Ich vermute unter anderem musst du folgendes tun:

1) Eine Möglichkeit finden das Spiel zweimal auf deinem System zu starten. Nicht alle Spiele machen das mit. Eine VM wäre eine Möglichkeit, wenn diese eine beschleunigte Grafikkarte bereitstellt.
2) Eine der beiden Spielinstanzen sollte für dich normal sichtbar sein, und die andere unsichtbar. Denn ich nehme mal an, das Spiel zweimal im Fenstermodus zu starten würde dich sicherlich stören. Wieder ist eine VM eine Möglichkeit. Aber eine andere Möglichkeit wäre Windows zu überreden einen zweiten (virtuellen) Bildschirm zu erstellen. Ob und wie das praktisch geht, weiß ich allerdings nicht.
3) Das Bild der anderen Spielinstanz muss irgendwie an das Notebook deines Freundes geschickt werden. Das geht zum Beispiel nicht, wenn diese Instanz minimiert ist. Aber in einer VM oder wenn sie auf einem zweiten Monitor wäre, dann würde das gehen.
4) Die Eingaben vom Notebook deines Freundes müssen an die zweite Spielinstanz geschickt werden. Das ist auch einfach, wenn du das Spiel in einer VM laufen lässt.

Zur Lösung mit einer VM:

zu 1+2) VMware bietet laut Eigenbeschreibung gute 3D-Grafikbeschleunigung. Das wäre also eine Möglichkeit, wenn du das mit einer VM lösen willst. Wenn das Spiel nur eine Instanz gleichzeitig zulässt, hätte ich auch gar keine andere Idee, wie das so einfach gehen sollte.

zu 3) Das kannst du das eventuell mit jeder beliebigen VNC-Software, vielleicht auch mit Windows Remote Desktop, oder vielleicht auch mit VLC machen. Die Qualität (Framerate) wird vermutlich nicht gerade berauschend sein. Die Alternative wäre vernünftige Streaming-Software für Spiele wie XSplit oder Open Broadcaster. Die installierst du dann in der VM und richtest so ein, dass der Stream im Netzwerk bereitgestellt wird. Dein Freund kann sich dann da mit dem Notebook über VLC oder so verbinden. (VLC müsste man allerdings evtl. dazu bringen Hotkeys zu ignorieren.)

zu 4) Mit Remote Desktop ist das einfach, aber wenn du die Streaming-Lösung nimmst, ist das sicherlich aufwändiger. Möglicherweise geht das mit KVM-Software wie Synergy. Ich weiß nicht, ob man die so einrichten kann, dass der Fokus nur auf dem anderen System und nicht mehr auf dem lokalen liegt. Aber wenn ja, dann wäre das eine einfache Möglichkeit. Wenn nicht, dann müsstest du Synergy nachprogrammieren.

Wenn du alles selbst machen willst:

Im Prinzip musst du nur das oben beschriebene nachprogrammieren. Also
- eine VM oder einen magischen Windows-Treiber, der einen zweiten Bildschirm erstellt
- eine Streaming-Software, die das Bild aufzeichnet, komprimiert und im Netzwerk übermittelt
- ein Streaming-Client, der das Bild wieder ausgibt
- in diesen Streaming-Client integriert ein Modul, das Tastendrücke und Mausbewegungen übers Netzwerk übermittelt
- in den Streaming-Server integriert ein Modul, das aus dem Netzwerk empfangene Tastendrücke und Mausbewegungen wieder auf dem System umsetzt

Also ganz einfach. Vielleicht nen Abend mal ein paar Stunden hinsetzen und schon läuft die Sache. Und als Bonus hast du nebenbei 3-4 kommerziell verwertbare Produkte erstellt. ;)
« Letzte Änderung: 15. October 2013, 22:52 von Jidder »
Dieser Text wird unter jedem Beitrag angezeigt.

Svenska

  • Beiträge: 1 792
    • Profil anzeigen
Gespeichert
« Antwort #4 am: 15. October 2013, 23:41 »
Für meinen high end pc ist das kein problem, also bin ich auf die idee gekommen, dass ich ihm per stream die leistung meines pc, keinen speicher zur verfügung stelle und er so auf seinem laptop flüssig, nur übers netz auf kosten der leistung meines Pcs zockt.
Es ist nicht mit der vorhandenen Technologie möglich, die Leistung des Laptops und die Leistung des High-End-PCs zu vereinen. Wenn dein High-End-PC in der Lage ist, das Spiel zweimal gleichzeitig mit hohen Details flüssig zu berechnen und darzustellen, dann gibt es vielleicht Möglichkeiten. Es hängt allerdings vom Spiel ab, um das es geht; vermutlich wird es an praktischen Problemen scheitern.

Virtuelle Maschinen (und viel Software) könnten funktionieren. Allerdings ist die 3D-Grafikbeschleunigung langsamer als die reale Grafikkarte und wenn zwei Spiele gleichzeitig darauf zugreifen, dürfte es nicht besonders gut funktionieren. Theoretisch ist es möglich, dass du in deinen PC eine zweite Grafikkarte steckst und diese dann ausschließlich der virtuellen Maschine zuweist (dann könntest du auch z.B. die Hälfte der CPU-Kerne zuweisen). Nachteil: kostet Geld. Und das Spiel muss in einer virtuellen Maschine laufen. Probiere VMware aus, was besseres dafür gibt es nicht (der VMware Player ist kostenlos).

Es gibt Boxen, die man als Bildschirm an einen VGA-/DVI-Ausgang der Grafikkarte anschließt und die dann einen Netzwerkstrom daraus erzeugen (für Kameras). Die gibt es auch mit Tastatur- und Mausweiterleitung übers Netzwerk, sind aber nicht billig (Suchwort KVM via Netzwerk). Dazu musst du aber in der Lage sein, mehrere Benutzer gleichzeitig an einem Computer zu bedienen ("Multiseat"). Mit Windows geht das nicht, Linux konnte es mal, wenn man pro Tastatur/Maus/Bildschirm eine Grafikkarte hat. Mit den neuen Technologien (Compositing) könnte es vielleicht mit einer Grafikkarte gehen, aber getestet hat das vermutlich niemand. Vorteil: keine virtuelle Maschine, nutzt reale Grafikkarte, Nachteil: kein Windows, kostet Geld.

Praktische Probleme: (a) Dein PC wird vermutlich nicht in der Lage sein, das Spiel zweimal auszuführen. (b) Zwischen Grafikkarte und Bildschirm laufen einige GB/s an Daten umher. Die in Echtzeit auf ein internettaugliches Niveau bei hohen Auflösungen und guter Qualität zu komprimieren, kannst du vergessen (LAN könnte klappen). (c) Selbst, wenn du alles schaffst, hast du Latenzen zwischen Tastendruck/Mausbewegung und Reaktion, Rendering und Darstellung. Kann gut sein, muss aber nicht.

Je nachdem, wie das Spiel programmiert ist, kann es aber auch deutlich einfacher (nur Software, keine VMs) sein.

Gruß,
Svenska

 

Einloggen