WebGL: Anspruchsvolle Computerspiele im WebBrowser

Computerspiele sind der Grund, weshalb sich Computer weiter entwickeln.

Bisher wurden anspruchsvolle 3D Computerspiele immer für bestimmte Plattformen wie Windows, MacOS, Linux, PlayStation, Nintendo, Xbox, usw. hergestellt bzw. angeboten. Jeder Hersteller muss das Spiel so programmieren, dass es auf allen erdenklichen Plattformen läuft. – Tut er das nicht, um so Geld zu sparen riskiert er, dass er das Spiel nicht absetzen zu können. Setzt er gar auf die falsche Plattform – wird er sein Spiel gar nicht erst los.

Das alles könnte sich bald ändern, denn eine neue – Plattform unabhängige – Variante 3D Spiele zu Programmieren ist hält in unser Leben Einzug… 

Viele werden nun denken, na klar Java. – Nein. Pustekuchen. Aber – Sie haben es wahrscheinlich doch schon auf Ihrem Rechner…

Dank HTML5 kann man im Webbroswer bereits simple 2D Grafiken und Animationen darstellen, ohne auf Plugins wie Java, Flash, Shockwave oder Silverlight zurück greifen zu müssen. Die Browser Hersteller arbeiten jedoch parallel auch schon seit einiger Zeit an einer 3D Bibliothek genannt WebGL.

Demos wie diese hier beweisen schon seit einigen Monaten eindrucksvoll, was man davon erwarten kann.

Die Mozilla Corporation (Firefox) hat gestern den nächsten Meilenstein eingeläutet. Gemeinsam mit der Softwareschmiede „Epic“ wurde deren Unreal Engine 3 in JavaScript übersetzt, sodass diese nun im WebBrowser (Mozilla Firefox 22) läuft. Dazu wurde Emscripten – eine  Technik, die C/C++ low level Bytecode (LLVM) in Java Script übersetzt – und asm.js – ein Dialekt für optimierten JavaScript Code der „ahead of time“ (AOT) vom Browser compiliert werden kann eingesetzt.

Damit das alles reibungslos funktioniert benötigt man – neben einem einigermaßen zeitgemäßen Computer – einen aktuellen Browser wie Mozilla Firefox. Derzeit ist die Ausführung des auf diese Weise erstellen Codes um den Faktor 2 langsamer als der reine C/C++ Code. – Aber es läuft Plattformunabhängig im WebBrowser.

Was bedeutet das nun für Spielehersteller? Dieser Schritt könnte von enormer Bedeutung sein. Anstelle das Spiel für mehrere Plattfomen herstellen, testen, ausliefern und unterstützen zu müssen, konzentriert man sich nun auf eine Plattform: WebGL. Das senkt die Produktions- und Vertriebskosten enorm. Auch nicht Spiele Hersteller (ePaper / eBook Reader, Video Portale uvm.) werden von dieser Technologie profitieren können.

Bleibt zu hoffen, dass sich diesmal alle Browserhersteller an die Standards halten – und nicht wieder jeder anfängt sein eigenes Süppchen zu kochen.

Wenn Sie das Ganze einmal ausprobieren wollen: Hier finden Sie eine spielbare Demo basierend auf der Sauerbraten 3D Engine namens BananaBread. – Im Browser – Ohne PlugIns versteht sich.

Anbei noch ein paar Screenshots. Das Spiel läuft in Full HD – Ruckelfrei auf einem AMD 6 Kern-Prozessor und einer NVidia Geforce GTX 560 Ti, Windows 8 und Chrome 25.0.1364.172m.

3 Gedanken zu „WebGL: Anspruchsvolle Computerspiele im WebBrowser

  1. Es gibt natürlich, wenn man effektiv für viele Platformen Spiele entwickeln möchte, auch schon gute Frameworks wie Leadwerks Engine 3 oder Unity. da hat man auch kein Javascript-Overhead. Außerdem erscheinen die Programme dann halt auch in Steam/AppStore/PlayStore. Das Problem mit WebGL ist, dass man keinen Zugriff auf die native API hat, wenn es zum Beispiel um das Gyroskop geht. Deshalb währe zum Beispiel ein TempleRun in WebGL wahrscheinlich schwierig. Ein denkbarer Kompromiss wäre vielleicht, eine native App zu schreiben, welche mit der API kommuniziert, das Spiel an sich aber in einem WebView/HtmlView laufen zu lassen.

    1. Hallo Joseph,

      die Technologie steckt natürlich noch in den Kinderschuhen. WebGL wird auch die 3D Engine an sich nicht ersetzen. WebGL ist ja nur ein API das, ähnlich wie OpenGL, Zugriff auf die Funktionen des Grafiksystems bietet. Technisch gesehen, stellt der Browser also nur eine weitere Plattform für die 3D Engine dar. (Die Demo die ich oben Verlinkt habe, ist die in C++ geschriebene Cube 2: Sauerbraten 3D Engine nach JavaScript übersetzt.)

      Der Sinn einer jeden verwalteten oder interpretierten Sprache (Java, C#, Lua, Pearl, Ruby, PHP, JavaScript) ist das unterbinden der direkten Ressourcenzugriffe (Hardware / Betriebssystem API) um für Plattformunabhängigkeit und Fehlertoleranz zu sorgen. Durch den damit verbundenen Verwaltungsoverhead geht natürlich die Performance in die Knie, was gerade bei einem Spiel nicht erwünscht ist. Den Faktor in der Ausführungsgeschwindigkeit könnte man in Kauf nehmen, wenn man dafür andere Vorteile bekommt.

      Gerade der Zugriff auf die Hardware (Gyroskop, Bluetooth, WLAN, Controller, TouchScreen usw.) ist dabei in der Tat ein interessantes Thema. Dank Firefox OS verfügt Mozilla schon über zahlreiche APIs um aus dem DHTML auf die Hardware zuzugreifen. Firefox für den PC selbst verfügt in der neuesten Beta Version auch über WebRTC, eine Technologie die Echtzeitkommunikation zwischen Clients bzw zum Server erlaubt. – Geben wir dem ganzen mal noch ein paar Monate und lassen uns dann von den Möglichkeiten inspirieren.😉

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s