[MELDEN] Von der Vision zum Code: Ein Leitfaden zur Ausrichtung der Geschäftsstrategie auf die Ziele der Softwareentwicklung ist veröffentlicht!
HOL ES DIR HIER

Erste Schritte mit der Entwicklung von Apps auf Steam Deck

readtime
Last updated on
February 17, 2025

A QUICK SUMMARY – FOR THE BUSY ONES

TABLE OF CONTENTS

Erste Schritte mit der Entwicklung von Apps auf Steam Deck

Erste Schritte mit der Entwicklung von Apps auf Steam Deck

Mit Dampfdeck Da Softwareentwickler immer beliebter werden, können sie damit beauftragt werden, eine Anwendung zu erstellen, die auf der Konsole ausgeführt wird. Der Prozess stellt jedoch einige Anforderungen, die erfüllt sein müssen, damit die Anwendung als mit der Konsole kompatibel erkannt wird. Einige davon sind möglicherweise nicht offensichtlich und stellen eine Herausforderung dar: auch wenn die Dokumentation gepflegt wird und sich mit der Zeit weiterentwickelt, um den Bedürfnissen der Entwickler gerecht zu werden, ist die Konsole immer noch relativ neu, und im Internet sind nicht viele Informationen verfügbar, insbesondere im Vergleich zur Entwicklung für andere Konsolen, die schon viel länger auf dem Markt sind (und sind beliebter).

Vor Kurzem wurden wir beauftragt, unser Produkt so anzupassen, dass es auf Steam Deck läuft und dessen Anforderungen erfüllt. Unser Produkt ist ein Electron-basierter Game Launcher, der für Desktop-Benutzer entwickelt wurde. Für diejenigen unter euch, die mit dem Thema nicht vertraut sind, werden Launcher verwendet, um Spieldateien und Updates herunterzuladen, zusätzliche Inhalte wie DLC (herunterladbare Inhalte) oder Mods zu verwalten und die Spieleinstellungen vor dem Start zu verwalten. Sie dienen auch als Plattform für Werbung.

Okay, aber was wirst du aus diesem Stück lernen?

  1. Das Wichtigste zuerst - was ist ein Steam Deck,
  2. Wie Proton für Windows-Benutzer praktisch werden kann,
  3. Wie der Überprüfungsprozess für Steam Deck-Anwendungen funktioniert,
  4. Die Liste der Anforderungen für Steam Deck-Anwendungen.

All das wird unsere Beobachtungen und Herausforderungen enthalten, denen wir bei der Anpassung unseres Projekts an die Arbeit auf der Konsole begegnet sind. Bist du bereit? Dann lass uns damit weitermachen.

Was ist ein Steam Deck?

Steam Deck ist eine Handheld-Konsole, die im Februar 2022 von Valve veröffentlicht wurde. Die Konsole verwendet SteamOS 3, ein von Valve entwickeltes Betriebssystem, das auf der Arch Linux-Distribution basiert. Es gibt zwei Modi: den Spielemodus, der standardmäßig zum Spielen von Spielen dient, und den Desktop-Modus, der als normaler Computer fungiert. Sie können auch eine Maus, eine Tastatur und einen externen Monitor daran anschließen.

Einer der wichtigsten Vorteile dieser Konsole ist, dass jedes Spiel, das Sie auf der Steam-Plattform besitzen, auch auf Ihrem Steam-Deck gespielt werden kann. Dies ist besonders für PC-Benutzer von Vorteil, da Sie die meisten Spiele auf beiden Geräten genießen können, wenn Sie dasselbe Konto verwenden.

Proton

Da SteamOS auf Linux basiert, kann jedes für Linux entwickelte Spiel nativ darauf ausgeführt werden. Dies ist jedoch nicht bei allen Spielen auf dem Markt der Fall, da viele von ihnen nur ausführbare Windows-Dateien enthalten. Die gute Nachricht ist, dass diese auch mit der Proton-Kompatibilitätsschicht ausgeführt werden können. Valve entwickelt auch diese Software und ermöglicht die Ausführung von Windows-Spielen auf Linux-basierten Betriebssystemen.

Wenn Spiele unter der Proton-Kompatibilitätsebene ausgeführt werden, Für jedes Spiel, für das Sie Proton verwenden, wird eine Windows-ähnliche Dateistruktur erstellt. Es ist zu finden unter <SteamAppId>/home/deck/.local/share/steam/steamapps/compatdata/ /pfx/drive_c. Was Sie vielleicht auch irgendwann benötigen, ist, dass es eine Datei gibt, die die für das angegebene Spiel verwendete Version von Proton speichert und verfügbar ist unter <SteamAppId>/home/deck/.local/share/steam/steamapps/compatdata/ /version.

Bei der Entwicklung unseres Game Launchers stießen wir auf ein Problem, bei dem wir auf Dateien aus dem Linux-Dateisystem zugreifen mussten, während wir unter Proton waren. Auf sie kann zugegriffen werden, da Proton keine isolierte Umgebung ist. Der Trick ist zu benutzen Z:\\Laufwerk (alle Spieldateien befinden sich auf C:\\Laufwerk) was ist symbolisch verknüpft in das Linux-Stammverzeichnis. Also zum Beispiel der normale Pfad unter Linux:

/Startseite/deck/.local/share/Steam

entspricht dem unter Proton:

Z:\\ home\\ deck\\ .local\\ share\\ Steam

Prozess zur Überprüfung der Kompatibilität

Spiele für Steam Deck werden von Valve rezensiert und bewertet. Dadurch können die Benutzer wissen, welche Spiele auf ihrer Konsole perfekt funktionieren, welche einwandfrei funktionieren und welche wahrscheinlich am besten losgelassen werden sollten. Es gibt 4 verschiedene Bewertungen für Spiele:

  • verifiziert
  • Spielbar
  • Nicht unterstützt
  • Unbekannt

Eine Beschreibung aller Bewertungen finden Sie in der Dokumentation. Bei unserem Produkt haben wir den Überprüfungsprozess dreimal durchlaufen, und es dauerte ein paar Tage, bis das Verifizierungsteam eine Antwort erhielt. Es dauerte zwischen 2 Tagen und einer Woche.

Anforderungen

Wenn du bekommen willst verifiziert Bewertung, Ihre Bewerbung muss bestimmte Anforderungen erfüllen Anforderungen:

Controller-Unterstützung

Um die physische Steuerung von Steam Deck zu unterstützen, hast du verschiedene Möglichkeiten, sie zu handhaben.

  • Steamworks-SDK - Obwohl dies der empfohlene Ansatz ist, hat er zwei Nachteile, die wir als problematisch empfanden. Erstens sind wir dadurch von Steam abhängig, obwohl unsere Anwendung nicht immer in der Steam-Umgebung verwendet wird. Zweitens ist es in C ++, was nicht die Sprache ist, die wir jeden Tag verwenden, und wir würden Node.js -Bindungen benötigen, um sie in Electron zu verwenden.
  • SDL (Simple DirectMedia Layer) - das wäre eine plattformübergreifende Lösung, die uns nicht von Steam abhängig macht. Dennoch hat es den gleichen Nachteil wie die vorherige Lösung, da es in C ++ geschrieben ist.
  • Gamepad-API - unsere Anwendung verwendet Electron. Electron verwendet Chromium. Tatsächlich können Sie Funktionen verwenden, die in Chromium verfügbar sind. So einfach ist das! In unserem Fall war dies die einfachste Lösung, also haben wir uns dafür entschieden. Sie können überprüfen, wie gut es mit Ihrem Gamepad interagiert, indem Sie einige Gamepad Tester-Websites besuchen wie dieser.

Texteingabe

Anfangs ging es uns nur darum, unsere Anwendung unter Proton auszuführen, und nachdem wir den Fokus auf Texteingaben gesetzt hatten, erschien die Bildschirmtastatur sofort. Dies funktionierte jedoch nicht nach den neuen Proton-Versionen und als die Anwendung nativ unter Linux lief. Aus diesem Grund haben wir Steamworks-Bindungen für Node.js verwendet und die Bildschirmtastatur programmgesteuert angezeigt, wenn eine Texteingabe fokussiert ist.

Unterstützung bei der Lösung

Standardmäßig wird unsere Anwendung mit einer anderen Auflösung als der nativen Auflösung von Steam Deck gestartet 1280 x 800 Pixel. Um den gesamten Bildschirm auszufüllen, mussten wir die Auflösung für eine Zeit ändern, in der die Anwendung im Spielemodus ausgeführt wurde. Wir haben jedoch ein Problem mit der Einstellung der Fenstergröße festgestellt“undicht“ vom Desktop-Modus zum Gaming-Modus — als die Anwendung, die nativ auf Linux ausgeführt werden kann, zum ersten Mal im Desktop-Modus gestartet wurde, verwendete sie standardmäßig eine kleinere Auflösung, und da wir diese Einstellung gespeichert haben, wurde sie auch im Spielemodus verwendet. Es gab eine Lösung — wir mussten das Speichern dieser Einstellung auf Steam Deck deaktivieren. Denken Sie daran, dass Spiele mit nativen Linux-Builds dieselben Dateien sowohl im Desktop- als auch im Spielemodus verwenden.

Lesbarkeit des Textes

Wir hatten ein bisschen Probleme damit, weil es ist nicht die Schriftgröße das sollte niemals unter 9px fallen, aber das kleinste Zeichen sollte nicht kleiner als 9px sein. Wir sind uns fast sicher, dass es nicht in der Dokumentation stand, als wir Änderungen an unserer Anwendung vorgenommen haben.

Eine interessante Tatsache könnte sein, dass Valve eine Art OCR (optische Zeichenerkennung) verwendet, um zu überprüfen, ob die Anforderung erfüllt ist. Es hebt jedes einzelne sichtbare Zeichen hervor, misst seine Höhe und weist eine von drei Klassen zu: zu klein (unter 9 Pixel), akzeptabel (zwischen 9 und 12 Pixel) oder gut (12 Pixel und mehr).

Proton

Unsere Anwendung muss sowohl Linux- als auch Windows-Builds haben. Daher mussten wir sicherstellen, dass sie unter Proton funktioniert. Zum Glück hat es für uns funktioniert, bis auf eine Bibliothek, die Dateigrößen berechnet. Wenn du an derselben Sache arbeitest, Denken Sie daran, Dinge zu überprüfen, die sich um das Dateisystem drehen.

Abschließende Gedanken

Steam Deck ist noch relativ neu auf dem Markt, was einige besondere Herausforderungen mit sich bringt. Es sind nur wenige Ressourcen verfügbar, und manchmal Sie sind der Erste, der ein Problem hat. Daher nimmt die Lösung des Problems mehr Zeit in Anspruch als bei etablierten Technologien.

Darüber hinaus entwickelt es sich als neues Gerät ziemlich schnell (insbesondere Proton). Sie müssen ständig überprüfen, ob eine neue Version erscheint und überprüfen Sie, ob Ihre Anwendung darunter noch funktioniert.

Was die Sache jedoch einfacher macht, ist, dass Anwendungen nativ Linux verwenden oder, wenn sie unter Proton laufen, die Installation unter Windows nachahmen. Das heißt, wenn Ihre Anwendung auf einem dieser Programme funktioniert, sollte sie auch auf Steam Deck funktionieren.

Frequently Asked Questions

No items found.

Our promise

Every year, Brainhub helps 750,000+ founders, leaders and software engineers make smart tech decisions. We earn that trust by openly sharing our insights based on practical software engineering experience.

Authors

Grzegorz Stokłosa
github
JavaScript-Softwareentwickler

Ein Full-Stack-Softwareingenieur mit 8 Jahren Berufserfahrung. Er ist stets bestrebt, den Code so einfach und lesbar wie möglich zu gestalten und gleichzeitig seine Wartbarkeit im Laufe der Zeit sicherzustellen.

Grzegorz Stokłosa
github
JavaScript-Softwareentwickler

Ein Full-Stack-Softwareingenieur mit 8 Jahren Berufserfahrung. Er ist stets bestrebt, den Code so einfach und lesbar wie möglich zu gestalten und gleichzeitig seine Wartbarkeit im Laufe der Zeit sicherzustellen.

previous article in this collection

No items found.

It's the first one.

next article in this collection

It's the last one.