So veröffentlichen Sie ein VR-Spiel bei Oculus ohne Nervenzusammenbruch

Wir teilen weiterhin unsere ersten Erfahrungen mit der Entwicklung eines VR-Spiels Astro Collapse. In den vorherigen Artikeln haben wir über die Hauptidee des Spiels und das Spieldesign gesprochen .



Dieses Mal werden wir Ihnen sagen, wie Sie unsere Fehler vermeiden und das Spiel schneller veröffentlichen können. Wir haben es erst beim dritten Versuch bekommen, weil wir bei einer technischen Prüfung feststeckten. Wir konnten die Leistung des Spiels nicht verbessern, indem wir nur die Ratschläge der Oculus Website verwendeten. Deshalb haben wir selbst nach Lösungen gesucht. Lesen Sie den Artikel bis zum Ende, damit Sie Ihr Spiel nicht in Oculus veröffentlichen. Vielleicht kannst du es beim ersten Mal tun.



Technische Richtlinien für VR-Spiele und wichtige Leistungskennzahlen



Wenn Sie den Build abgeschlossen haben, melden Sie sich bei Oculus an und laden Sie das Spiel auf Ihr Konto hoch. In wenigen Tagen erhalten Sie eine Benachrichtigung per E-Mail. Dies ist entweder eine Gratulation zum erfolgreichen Bestehen des Tests oder eine Aufforderung zur Korrektur von Fehlern.



Das erste Mal, als wir nicht alle Empfehlungen von der Oculus Website berücksichtigt haben, haben wir das folgende Ergebnis erhalten:

Bild

Detaillierter Bericht nach der ersten Oculus Überprüfung



Wir haben den Leistungstest nicht bestanden, hatten ein Problem mit der erforderlichen Rückkehr zum Oculus Home-Menü und das Spiel wurde nicht auf älteren Android-Versionen installiert.



Um den Leistungstest zu bestehen, müssen Sie die folgenden Richtlinien befolgen:



  • FPS im Spiel müssen mindestens 60 sein;
  • 50 bis 100 Aufrufe pro Frame (Call Draw);
  • 1-3 Millisekunden zum Ausführen von Skripten;
  • von 50.000 bis 100.000 Polygonen pro Frame.


Lassen Sie uns zuerst die Konzepte herausfinden und dann zeigen, wie wir unsere Leistungsprobleme gelöst haben.



FPS oder Frames pro Sekunde



Der Schlüsselindikator für hohe Leistung ist hohe FPS. Es zeigt die Bildrate pro Sekunde: Das Spiel hat eine Schleife, die die Spielwelt zeichnet und mathematische Operationen in Skripten ausführt. Je höher die Verzögerung zwischen diesen Frames ist, desto geringer sind die Metrik und die Leistung.

Mit Hilfe von FPS können Sie verstehen, ob mit dem Spiel alles in Ordnung ist.




Anrufanzeige zeichnen



Draw Call - Die Anzahl der Texturaufrufe, die die Game Engine an die GPU sendet, um die Welt zu zeichnen. Um die Anzahl der Aufrufe zu verringern, muss die Engine Texturen zu einem Material kombinieren. Diese Technik wird als Batching bezeichnet.

Je höher die Draw Call-Anzeige, desto länger dauert das Zeichnen der Spielwelt.


Skripte und ihre Ausführungsgeschwindigkeit



Skripte sind für alle Aktionen und Operationen im Spiel verantwortlich. Sie benötigen Handler, um sie auszuführen. Zum Beispiel Update. Es muss jeden Frame verarbeiten. Wenn das Spiel viele Objekte und komplexe Aktionen enthält, hat dieser Handler keine Zeit, den Frame zu vervollständigen. Daher ist die Leistung gering und das Spiel friert ein.

Viele zeitaufwändige Vorgänge in Update erschweren das Ausführen von Aktionen für Objekte.


Polygone pro Frame



Polygone sind Dreiecke, aus denen 3D-Spielmodelle bestehen. Sie bestehen aus Eckpunkten und Ebenen. Polygone pro Frame sind das Produkt aus der Anzahl aller Objekte in der Spielwelt und diesen Dreiecken.

Je höher diese Zahl, desto länger verarbeitet die Spiel-Engine einen Frame.


Wie wir Leistungsprobleme gelöst haben



Wir hatten 4 Hauptprobleme, die dazu führten, dass die Leistung des Spiels unter den empfohlenen Werten lag. Wir haben zu detaillierte 3D-Objekte erstellt, eine hohe Draw Call-Rate festgestellt, Skripte waren langsam und der Gerätespeicher war überlastet. Wir haben die meiste Zeit damit verbracht, nach Lösungen für diese Mängel zu suchen. Und jetzt über alles in Ordnung.



Vereinfachung von 3D-Objekten und Verringern von Polygonen pro Frame



Es gibt viele Asteroiden und Schiffe in unserem Spiel, die sich ständig bewegen und das Spiel überlasten. Während des Kampfes hat der Spieler keine Zeit, sie zu betrachten und auf die Details zu achten, da er an dem Prozess interessiert ist. Wenn Sie die Anzahl der Asteroiden reduzieren, wird das Spiel langweilig und uninteressant. Aus diesem Grund haben wir beschlossen, die dreidimensionalen Modelle von Asteroiden und Shuttles zu vereinfachen: Wir haben die Gesamtzahl der Polygone in der Spielszene reduziert.



Bild

Space-Shuttle-Polygone aus dem Astro Collapse-Spiel



Bestimmen Sie, was in Ihrem Spiel wichtig ist: Detaillieren Sie kleine Objekte oder eine große Spielwelt. Sie werden verstehen, welche Objektmodelle nicht detailliert sein müssen, um die Leistung zu verbessern.


Wir kombinieren Texturen zu Atlanten und erreichen den empfohlenen Draw Call-Indikator



In Astro Collapse wird die Spielwelt aus Asteroiden, Shuttles, Kriegsschiffen, der Erde und der Sonne erstellt. Es gibt viele Objekte im Spiel - die Anzeige "Anruf zeichnen" war hoch, sodass die Engine das Rendern von Grafiken verlangsamte. Um dies zu reduzieren, müssen Sie verschiedene Texturen von Objekten in einem Atlas kombinieren.

Bild

Asteroidenatlas im Astro Collapse-Spiel



Wir haben 4 große Atlanten von Texturen erstellt: für den Asteroiden, das Cockpit und die Kanonen, die Sichtungsschnittstelle und das Spielmenü. Dies sind Objekte, die aus vielen ähnlichen Materialien bestanden. Atlanten vereinfachten die Arbeit der Engine, da nicht mehr verschiedene Texturen in einem Objekt gesammelt werden mussten - wir haben es dafür getan.

Sammeln Sie die Materialien der Objekte in einem Atlas - eine große Textur.


Verkürzung der Skriptausführungszeit



Jede Aktion im Spiel erfolgt mithilfe von Skripten. Astro Collapse enthält viele Spielobjekte und komplexe Vorgänge, sodass einige der Skripte lange Zeit ausgeführt wurden - der Update-Handler hat die Fertigstellung des Frames verzögert. Dies verlangsamte die Spielprozesse.



Daher mussten wir komplexe Vorgänge aus dem Frame-für-Frame-Update herausnehmen. Wir haben eine Co-Routine verwendet, die solche Operationen an Objekten außerhalb des Rahmens ausführen kann.



Auf diese Weise konnten wir komplexe Asteroidenoperationen optimieren. In Astro Collapse gibt es viele solcher Objekte: Jeder Asteroid muss auf Aktivität überprüft, seine Position im Raum verfolgt und zur Liste hinzugefügt werden. Die Liste selbst muss aktualisiert werden, um neue Asteroiden ins Spiel zu bringen und ihre Entfernung zum Spieler, zu den Shuttles und zu benachbarten Kriegsschiffen zu berechnen. Das Ergebnis ist eine lange laufende Schleife für einen Frame, den der Update-Handler nicht verarbeiten konnte. Mit Hilfe von Coroutine hat die Engine diesen komplexen Vorgang aus dem Frame-für-Frame-Update herausgenommen und die Leistung gesteigert.

Der Co-Routine-Handler führt komplexe Operationen außerhalb von Frame-für-Frame-Aktualisierungen aus, was die Arbeit der Spiel-Engine vereinfacht.


Schützen Sie den Gerätespeicher vor Müll und erstellen Sie einen Asteroidenpool



Astro Collapse hat viele Asteroiden. Sie erscheinen ständig, sie müssen zerstört werden. Die Standardkonstruktoren im Skript Instantiate and Destroy schlagen durch Ausführen dieser Vorgänge fehl. Sie verursachen Müll im Speicher des Geräts, wodurch das Spiel einfriert. Also haben wir es anders gemacht.



Abgestürzte Asteroiden werden nicht zerstört, sondern verstecken sich im Spielfeld. Wenn ein neues Objekt benötigt wird, ruft das Skript es von den versteckten auf. Diese Methode wird als Pooling bezeichnet.



Vor dem Laden der Spielwelt erstellt das Skript mehrere Dutzend Asteroiden. Wenn sie alle gleichzeitig im Weltraum fliegen und sich nicht im Gedächtnis befinden, produziert er einen neuen Asteroiden und fügt ihn der Liste hinzu. Dies gab uns ein flexibles Asteroiden-Kontrollmodell und verbesserte die Spielleistung.

Verwenden Sie die Pooling-Methode für Objekte desselben Typs, die häufig erstellt und zerstört werden, aber im Spiel selbst sind nicht viele gleichzeitig vorhanden.


Kleinere Fehler nach technischer Überprüfung



Nachbearbeitung von Modellen im Spiel: Deaktivieren Sie das Anti-Aliasing



Antialiasing - Nachbearbeitung eines Bildes durch Glätten gezackter Kanten. Antialiasing wurde in Astro Collapse standardmäßig festgelegt. Es hat das Spiel überlastet und es gab immer noch kein erkennbares Anti-Aliasing im Spiel - die Auflösung im Gear VR-Helm ist niedrig. Deshalb haben wir es ausgeschaltet. Während des Tests bemerkten die Spieler keine Änderungen, aber die Leistung wurde höher.

Anti-Aliasing erzeugt in Gear VR keine Anti-Aliasing-Bilder mit niedriger Auflösung.


Spektakuläre Explosionen von Sprites



Um helle Explosionen zu machen, haben wir Sprites verwendet. Dies ist ein Explosionsbild, das seine Größe, Transparenz und Farbe von rot-orange nach schwarz ändert. Auf diese Weise ist es uns gelungen, die Explosion dynamisch zu halten und die Spielleistung zu verbessern, ohne komplexe Systeme mit vielen einzelnen Partikeln und Animationen zu verwenden.



Zerstörter Asteroid in Astro Collapse



Spektakuläre Explosionen können mit Sprites durchgeführt werden.


Keine Schatten nötig



Wir haben Schatten ausgeschaltet, weil das Spiel immer in Bewegung ist - man kann sie nicht sehen. Außerdem hatten wir keine großen Objekte, auf die wir einen Schatten werfen konnten.

Deaktivieren Sie Schatten für sekundäre Spielobjekte, die für die Spieler unbedeutend sind.


Problem mit der erforderlichen Rückkehr zum Oculus Home-Menü



Die Zurück-Taste am Helm sollte den Spieler zu Oculus Home zurückführen, nicht zum Spielmenü, wie dies bei Astro Collapse der Fall war. Um dieses Problem zu beheben, habe ich ein fertiges Oculus Plugin- Skript genommen und es im Spiel angewendet.

Verwenden Sie das Skript OVRPlatformMenu.cs, damit die Schaltfläche zum Zurücksetzen des Menüs ordnungsgemäß funktioniert.


Beseitigung eines Fehlers bei der Installation des Spiels auf älteren Android-Versionen





Ein Fehler in der Installation ist leicht zu beheben. Sie müssen die ältere unterstützte Android-Version im Projekt-Setup angeben.

Vergessen Sie nicht, in den Spieleinstellungen die mindestens erforderliche Android 4.1-API-Stufe anzugeben.


Ergebnisse nach Veröffentlichung des Spiels



Wir haben unsere Mängel behoben und das Spiel zum dritten Mal zur Überprüfung gesendet. Die Antwort war ja - das Spiel wurde eine Woche später veröffentlicht:

Bild

Herzlichen Glückwunsch von Maria vom technischen Support von Oculus mit einer Nachricht zum Veröffentlichungsdatum des Spiels



2 Wochen nach der Veröffentlichung wurde Astro Collapse über 7000 Mal heruntergeladen. Für VR-Spiele auf der Gear VR-Plattform ist dies ein hervorragendes Ergebnis: Es wurde in die Top 50 der kostenlosen Spiele aufgenommen und belegte den 24. Platz auf der Liste.



Tipps zum Veröffentlichen eines Spiels in Oculus



Es gibt einige Regeln, die Sie befolgen müssen, um unsere Probleme bei der Veröffentlichung Ihres Spiels im Oculus Store zu vermeiden:

  • Lesen Sie die Empfehlungen und die häufigsten Probleme auf der offiziellen Oculus Website, bevor Sie ein Spiel hochladen.
  • Denken Sie von Anfang an daran, die Leistung zu verbessern, um nicht das gesamte Spiel in der Endphase zu wiederholen.
  • Komplizieren Sie die Grafiken im Spiel nicht, indem Sie alle Objekte, viele Texturen oder Schatten detaillieren. Es läuft auf Mobiltelefonen und hat begrenzte Spezifikationen. Überlegen Sie, was entfernt werden kann, ohne die Qualität des Spiels zu verlieren.
  • Wenden Sie sich an den technischen Support von Oculus. Sie werden schnell antworten und helfen.
  • Denken Sie daran, dass die Verbesserung der Leistung jedes Spiels einen individuellen Entwickleransatz erfordert. Sie werden keine universelle Lösung für das Problem finden.




Lesen Sie unsere Tipps, um sich schneller bei Oculus verifizieren zu lassen.



Spielen Sie das Astro Collapse- Spiel und schätzen Sie die Grafik. Dazu benötigen Sie eine Samsung Gear VR-Brille. Sie funktionieren mit Smartphones: Samsung Galaxy Note 4, 5, 7, S6 / S6 Edge / S6 Edge +, S7 / S7 Edge, S8 / S8 +.



Erfolgreiche Entwicklungen!



All Articles