seeseekey.net - Invictus Deus Ex Machina

Bei vielen Webapplikationen ist die Internationalisierung, also die Anpassung an unterschiedliche Sprachen, ein wichtiges Kriterium. Damit man bei diesem Thema nicht alleine gelassen wird, informiert die Webseite FormatJS darüber und zeigt Wege die eigene Webapplikation internationalisieren.

formatjs.io

Die dabei verwendeten Bibliotheken sind unter freien Lizenzen wie der BSD– und MIT Lizenz lizenziert und auf GitHub zu finden.

Zwar steht AJAX für Asynchronous JavaScript, aber trotzdem kann man solche Abfragen auch synchron durchführen. Mit jQuery kann man das ganze dabei wie folgt bewerkstelligen:

$.ajax({url: "getName.php", 
	type: "get",
	data:{lang:"american"},
	success: function(result){
		name=result;
}, async: false});

Wichtig ist, das der Schlüssel async auf false gesetzt ist — das Verhalten ist in neueren Versionen von jQuery als veraltet gekennzeichnet, kann aber noch genutzt werden.

Wenn man Spiele für den Browser mittels Javascript entwickelt, so kann es je nach Spiel passieren, das man Funktionen für das sogenannte Path Finding benötigt. Gemeint sind dabei Algorithmen welche einen Weg von A nach B auf einem Spielfeld finden. Mittels der PathFinding.js Bibliothek, kann man solche Funktionalität einfach in seinen Projekten nutzen.

Die Testapplikation für PathFinding.js

Lizenziert ist PathFinding.js unter der MIT-Lizenz und damit freie Software. Der Quelltext ist auf GitHub zu finden. Eine Demo um die Bibliothek mittels eines grafischen Frontends zu testen, gibt es auf den Seiten des Autors.

Mit den in den letzten Jahren zunehmenden Fähigkeiten der Browser, tauchten vermehrt Engines auf, mit denen einfach 2D und 3D Anwendungen und Spiele programmiert werden konnten. Eine dieser Engine ist dabei Babylon.js. Dabei handelt es sich um eine auf HTML5 und WebGL basierende 3D-Engine, welche in Javascript implementiert ist. Sie enthält unter anderem einen kompletten Szenengraph mit Entitäten wie Licht, Kameras, Materialien und Meshes. Daneben deckt die Funktionalität der Engine Themengebiete wie Kollision, Physik, Animation, Partikel und vieles mehr ab.

Ein einfaches Beispiel

Ausprobiert werden kann die Engine auf dem Babylon.js Playground. Lizenziert ist Babylon.js unter der Apache License in der Version 2.0 und damit freie Software. Der dazugehörige Quelltext ist auf GitHub zu finden. Daneben kann die Engine auch über die offizielle Seite unter babylonjs.com bezogen werden.

In den ersten Jahren nach seiner Erfindung war Javascript nicht mehr als ein Spielzeug. Mittlerweile hat sich die Sprache allerdings emanzipiert. Dinge welche früher unmöglich erschienen sind nun problemlos möglich. Ein eindrucksvolles Beispiel für diese Aussage ist Javascript PC Emulator von Fabrice Bellard.

Der Emulator bootet ein Linux

Der Emulator simuliert einen x86-PC komplett im Browser. Im einzelnen simuliert er dabei unter anderem eine 32-Bit CPU, einen Interrupt Controller und Timer sowie ein IDE Interface mit einer entsprechenden Festplatte. Der Autor führt die technischen Details auf seiner Webseite weiter aus. Der Emulator selbst ist unter bellard.org/jslinux/ zu finden.

Das erste Command & Conquer hat mittlerweile knapp 20 Jahre auf dem Buckel. Damit war es Zeit das ganze für den Browser umzusetzen. Aditya Ravi Shankar machte sich an die Arbeit und schuf eine solche Umsetzung, welche mittlerweile in der Version 0.8.3 vorliegt. Aus dieser Umsetzung heraus ist auch das Buch Pro HTML5 Games entstanden.

Command & Conquer im Browser

Ausprobieren kann man das ganze auf der entsprechenden Seite des Autors. Dabei wird nicht nur der Single-Player Modus sondern auch der Multi-Player Modus unterstützt. Auch die Missionsbesprechungen und Zwischensequenzen sind enthalten.

Normalerweise sind Favicons statische Gebilde. Allerdings wurde schon Tetris für das Favicon umgesetzt. Wer also etwas Bewegung in sein Favicon bringen möchte, sollte sich die Javascript Bibliothek favico.js anschauen. Mit der Bibliothek ist es möglich sein Favicon zu animieren oder gleich komplette Videos in diesem abzuspielen. Auch der Zugriff auf die Webcam und die anschließende Darstellung im Favicon sind möglich.

lab.ejci.net/favico.js/

Der Quelltext der Bibliothek ist auf GitHub zu finden. Lizenziert ist das ganze unter der MIT-Lizenz und der GPL und damit freie Software.

Mit Javascript und Co. ist mittlerweile eine ganze Menge möglich. Das sieht man auch immer wieder an den unterschiedlichsten Experimenten, welche aus dem Hause Google kommen. In diese Fall ist es buildwithchrome.com.

Lego im Browser

Auf der Seite kann man dabei virtuell mit Legosteinen spielen. Leider sind nur rote Steine vorhanden und auch die Steinauswahl ist begrenzt — trotzdem kann man beachtliche Bauwerk erschaffen. Alles in allem ist es ein schönes Beispiel was man mittlerweile im Browser bewerkstelligen kann.

Wer Entity-Relationship-Modelle bzw. die entsprechenden Diagramme (ERD) erstellen möchte, der kann hierfür Software wie die freie MySQLWorkbench nutzen. Für das plattformübergreifende Erzeugen solcher Diagramme kann man allerdings auch die freie Webapplikation wwwsqldesigner nutzen.

Der ERD-Designer in Aktion

Auf der Webseite des Autors gibt es eine Demo zum Ausprobieren. Die in PHP und Javascript geschriebene Software steht dabei unter einer BSD-Lizenz und ist somit freie Software. Bei der Installation muss das entsprechende Archiv nur auf dem Webserver entpackt werden und kann sofort genutzt werden. Nur wer die Möglichkeiten der serverseitigen Speicherung nutzen möchte, muss einige Parameter konfigurieren.

Wer schon immer das tiefe und unerklärliche Bedürfnis hatte, Windows in der ersten Version auszuprobieren, der kann dies nun tun. Möglich wird dies mit der Webseite jsmachines.net. Das ganze basiert dabei auf dem unter GPL stehenden PCjs. Dabei handelt es sich um einen IBM PC Emulator, welcher in Javascript geschrieben ist. Der Quelltext soll später auf GitHub zur Verfügung stehen.

Der Windows 1 Emulator in Aktion

Die Windows-Emulation ist neben einigen anderen Emulationen (unter anderem Zork I und DONKEY.BAS) auf der Webseite zu finden.