Beste Antwort
Nun, ich kann die Frage für Unity beantworten .
Dort war früher ein florierendes Ökosystem für Unity-Spiele im Browser, insbesondere auf Facebook. Der Unity-Webplayer war anständig genug, um schöne Grafiken und eine gleichmäßige Bildrate zu erhalten (vorausgesetzt, Sie haben viel gebacken und optimiert). Ich habe einmal an einem ernsthaften Spiel / einer ernsthaften Simulation gearbeitet, das auf dem Web-Player bereitgestellt wurde, und irgendwie an seine Grenzen gestoßen, sodass ich wusste, wozu es fähig war.
Das änderte sich, als Chrome sich entschied, es zu beenden die NPAPI-Unterstützung, auf der der Web-Player basiert. Was ist NPAPI? Die vollständigen Details finden Sie hier – NPAPI – Wikipedia . Um es kurz zu machen, es ist eine Methode zur Plugin-Entwicklung für die verschiedenen Mainstream-Browser. NPAPI war jedoch alt, anfällig für Sicherheitsprobleme, und es gab einen Aufruf zur Verwendung von HTML5 / WebGL usw., daher entschied sich Chrome, es auslaufen zu lassen.
Der größte Unterschied zwischen NPAPI und der Verwendung von WebGL besteht darin, dass erstere gab fast unbegrenzten Zugriff auf die Ressourcen des lokalen Computers (siehe NPAPI-Plugins – Google Chrome für Details). Für Unity3D WebGL gibt es zwei große Probleme:
Das erste ist, dass für HTML5 / WebGL kein Code nativ kompiliert wird. Unity löste dieses Problem, indem ein Projekt zu einer Form von optimiertem JavaScript kompiliert wurde. Das ist groß in Bezug auf die Dateigröße, da der größte Teil des Unity-Engine-Codes vorhanden sein muss, damit das Projekt ausgeführt werden kann, und Unity keineswegs leichtgewichtig. Bei einem Web-Player befindet sich der größte Teil des Engine-Codes bereits in der DLL oder im Plugin. Sie können also einfach die Szenendaten selbst laden und ausführen. Für den WebGL-Webplayer muss der Engine-Code jedoch konsistent erneut heruntergeladen werden, und ich bin mir nicht sicher, ob es dafür noch eine Lösung gibt.
Um die Größe zu verringern, muss der WebGL-Code verwendet werden komprimiert werden. Dies bedeutet jedoch, dass der Code auf dem Computer des Clients dekomprimiert werden muss, nach dem Herunterladen , was die Erfahrung langsam und klobig macht.
Das Killerproblem ist das des Speichers. Im Gegensatz zu NPAPI können Sie beim Ausführen des WebGL-Webplayers nur den Speicher verwenden, über den der Browser verfügt Ehrlich gesagt außerhalb Ihrer Kontrolle. Der Spieler hat möglicherweise mehr als 100 Registerkarten geöffnet, sodass nicht genügend Speicher für Ihr Spiel übrig bleibt. Oder Ihr Spiel ist möglicherweise zu groß für die Speicherbeschränkungen des Browsers, was dazu führt, dass es beim Laden ohne Fehlermeldung unhöflich abstürzt (das war vor 2 Jahren der Fall, als ich es ausprobierte).
Sie haben es im Wesentlichen sich mit weniger detaillierten Modellen zufrieden zu geben, mit schlechteren Spielressourcen (Sound, Texturen usw.), um etwas mit WebGL / HTML5 zu tun zu haben. Franky, ich bezweifle, dass WebGL / HTML5 jemals die Qualität und Framerate bieten würde, die die alten NPAPI-Plugins bieten könnten. Daher denke ich, dass das gesamte Ökosystem der webbasierten Unity-Spiele ausgelöscht wurde.
Beachten Sie, dass dies hauptsächlich für Unity3D-WebGL-Spieler gilt. Es gibt andere Spiele-Engines, die Spiele auf WebGL ausführen können. Diese basieren jedoch in der Regel auf JavaScript und sind für das Web optimiert. Unity3D ist eine riesige Engine, und das Web ist als Bereitstellungsplattform kein erstklassiger Bürger mehr.
Wie auch immer, ich war es nicht in der Unity-Szene seit zwei Jahren, also würde mir hoffentlich jemand widersprechen.
Antwort
Hier versteckt sich ein Inhaltsproblem sowie ein Social-Engineering-Problem, aber ich bin es Ich werde mit technischen Fragen sprechen. Sie könnten ein paar Bücher über die ersten beiden schreiben.
Die TL; DR hier ist, dass Sie nicht wirklich die gleiche AAA-Leistung aus dem herausholen können Webplattform, die Sie von nativen Programmen erwarten würden. Es gibt einige Problemumgehungen, deren Implementierung für die Entwickler jedoch teurer ist.
1.) Laufzeitkompilierung und Asset-Verarbeitung
Im Gegensatz zur Standardmethode der Spieleproduktion muss ein Webspiel derzeit seinen Code kompilieren und in Echtzeit auf die zugehörigen Assets zugreifen. In der Vergangenheit hatte ein Spiel vorkompilierte Assets und Code, die geladen und bei Bedarf ausgeführt wurden. Durch das Vorkompilieren Ihres Spiels können Sie Ihr Spiel optimieren, um in verschiedenen Situationen besser zu laufen. Einige dieser Anpassungen erfolgen bei der Installation (Unterschiede zwischen IE, PC / MAC / Konsole) und andere beim Einrichten von Spieloptionen.
Da diese Optimierung vor der Laufzeit erfolgt, können Sie sie in das Spiel laden schneller (Sie wissen bereits, was Sie tun müssen). Die Laufzeitkompilierung bedeutet jedoch, dass Sie dies alles zur Laufzeit anstatt vorher herausfinden müssen. Dies erhöht in der Regel unter anderem die Ladezeiten. Theoretisch ist es möglich, heruntergeladene Daten zwischenzuspeichern, aber der Browser (oder ein unglücklicher Benutzer) kann Ihre Aktivitäten sehr einfach überschreiben. Siehe Nr. 3.
2.) Serverwartung
Über einen Webbrowser können Sie Dateien und Assets remote speichern. Dies ist jedoch ein Wartungsproblem für Spielefirmen Zeit und Geld, um den Service der Serverdienste aufrechtzuerhalten. Dieses Problem kann drastisch reduziert werden, indem das Spiel einmal auf einem lokalen Computer installiert wird und regelmäßig Patches anstelle von ständigen Streaming-Updates bereitgestellt werden. Bandbreite = $$$, ganz zu schweigen von den IT-Fachleuten, die für den Betrieb der Server mit maximaler Verfügbarkeit erforderlich sind.
3.) Browser-Overhead / Einschränkungen
Wenn Sie etwas in einem Webbrowser ausführen, müssen Sie nicht nur mit dem Betriebssystem als Systemanforderung arbeiten, sondern auch mit dem zusätzlichen Speicher und der Verarbeitungszeit, die der Browser verbraucht. Zum Beispiel verwendet Chrome gerade ~ 148 MB, um diese Frage beantworten zu können! Dies ist wahrscheinlich nicht schlecht für PCs oder Macs, aber für Tablets ein Killer.
Darüber hinaus verfügen die meisten Browser über Sicherheitsfunktionen, die die Interaktion des Browsers mit Ihrem Betriebssystem und Ihrer Hardware einschränken. Dies bedeutet, dass bestimmte Arten von Leistungsvorgängen, die Sie normalerweise mit einem vorkompilierten Spiel ausführen könnten, in einem Browser einfach nicht möglich sind (häufig direkter Speicherzugriff).