Blackbird Javascript Konsole

Wenn man unter JavaScript entwickelt so benutzt man sicher auch folgende Zeile ab und an in abgewandelter Form:

alert("XYZ");

Das Problem an „alert“ ist das es für viele Sachen unpraktikabel ist. Schöner wäre hier eine Konsole in die man diese Meldungen hineinschreiben könnte und die auch browserunabhängig funktioniert. Genau hier kommt Blackbird ins Spiel welches unter http://www.gscottolson.com/blackbirdjs/ zu finden ist.

Blackbird im Einsatz.

Mit der Konsole ist es möglich verschiedene Loglevel zu realisieren und das ganze einfach in das Projekt seiner Wahl einzubinden. Der weitere Vorteil ist, das man die Debugmeldungen im Gegensatz zu einem „alert“ auch einfach im Quelltext stehen lassen kann und die Ausgabe nur bei Bedarf aktiviert.

Rollenspiele in JavaScript

Rollenspiele in Javascript sind an sich eine schöne Sache. Man muss keine zusätzliche Software installieren und das Spiel als solches ist auch immer aktuell. Gezeigt hat dies neulich Mozilla mit dem MMORPG BrowserQuest welches komplett im Browser läuft. Möchte man RPGs selber schreiben so sollte man sich mal die Bibliothek RPG JS anschauen, welche unter http://rpgjs.com/ zu finden ist. Die Engine ist dabei unter MIT und GPL dual lizenziert.

Weitere Informationen gibt es unter:
http://www.guido-muehlwitz.de/2012/02/rollenspiele-in-html5/
http://www.golem.de/news/browserquest-mozilla-startet-browser-mmog-in-html5-1203-90802.html

Rebuild of Invertika

Nach einigen Monaten ist es Zeit den Zwischenstand für den neuen Invertika Server und den Client vorzustellen. Invertika soll somit auf einer neuen technischen Basis stehen. Diese neue technische Basis sieht so aus, das der Server in C# geschrieben wird und somit unter Mono und .NET läuft. Für den Client ist eine Implementation als Webapplikation angedacht. Das ganze hatte dabei mehrere Gründe:

  • die Produktivität ist in C# höher als in C/C++
  • es können keine Speicherlöcher entstehen
  • durch die automatische Speicherverwaltung wird der Entwickler entlastet
  • modernes und konsistentes Framework
  • Anpassung auf eigene Bedürfnisse
  • schnellere Entwicklung
  • IPv6 Unterstützung ist problemlos möglich
  • bessere Unterstützung von mobilen Geräten

Neben diesen Gründen sind es auch einige Dinge wie „typedefs“ welche nicht unbedingt zum Verständnis beitrugen oder mehrere Klassen und Strukturen in einer Datei, welche das ganze ziemlich unübersichtlich machen. Auch die Abhängigkeit von zu vielen Bibliotheken wurde verringert.

Der Invertika Code in der Entwicklung

Nach einer kurzen Planungphase ging es dann am 3. Januar los mit der Entwicklung. Zuerst wurde damit begonnen den Accountserver zu portierten. Dabei wurden im Gegensatz zum Original einige Dinge verändern:

  • das Netzwerk setzt nun statt auf der Bibliothek „enet“ direkt auf TCP auf
  • PhysFS wurde wegrationalisiert

Am 13. Januar (einem Freitag ;)) waren die größten Portierungprobleme beim Accountserver gelöst und es wurde begonnen den Gameserver zu portieren. Am Gameserver ist die einzige größere Änderung die Anpassung der Skriptschnittstelle, damit diese mit den CLR Sprachen kompatibel ist. Die Roadmap für die Portierung sah dabei so aus:

  • Januar 2012: Implementation des Invertika Server
  • Februar 2012 Implementation des Invertika Clients
  • März 2012: Test der Software

Wie sich das für eine ordentliche Roadmap gehört wurde sie nicht eingehalten. So ist einiges noch nicht fertig und auch am Client muss noch viel getan werden. Der Client sollte ursprünglich auch in C# geschrieben werden und es wurde damit auch begonnen. Theoretisch ließe sich diese Clientvariante auf die Plattformen Windows, Linux, Mac OS X, iOS und Android bringen, praktisch ist es mit kleineren und größeren Problemen verbunden.

Ein generelles Problem an einem solchen Client ist, das er auf der jeweiligen Zielplattform erst installiert (oder auch kompiliert) werden und außerdem vom Nutzer aktuell gehalten werden muss. Schöner wäre es, wenn man diese Hürde aus dem Weg geschafft wird. Mittlerweile ist es dank Techniken wie Websockets, Webworkern und Canvas möglich, den Client komplett als Webapplikation zu schreiben.

Die Anfänge des neuen Clients basieren dabei auf der Techdemo „mana.js“ welche unter https://github.com/bjorn/mana.js zu finden ist. Der Vorteil der webbasierten Lösung ist dabei die große Kompatibilität mit unterschiedlichsten Geräten solange sie über einen aktuellen Browser verfügen.

Die Techdemo des Clients auf einem iPad

Während der Entwicklung bekamen die einzelnen Teile auch Namen die wie folgt lauten:

  • invertika (Client)
  • invertika-account (Accountserver)
  • invertika-game (Gameserver)

Der Quelltext sollte in den nächsten Tagen im Repository (http://source.invertika.org) erscheinen und zur Mitarbeit einladen ;)

Weitere Informationen gibt es unter:
http://invertika.org

socket.io herunterladen

Bei Socket.IO handelt es sich um eine Javascript Bibliothek welche eine Socket basierte Kommunikation (unter anderem über Websockets und diverse Fallbacks) ermöglicht. Zu finden ist diese Bibliothek unter http://socket.io. Meist wird diese zusammen mit Node.js benutzt.

Möchte man allerdings nur den Client basierenden Teil benutzen so steht man im ersten Moment vor dem Problem das man keinen offiziellen Download dafür findet, da die Installation nur über „npm“ beschrieben wird. Allerdings wird man im Repository unter https://github.com/LearnBoost/socket.io-client/tree/master/dist fündig. Dort kann man sich die fertigen Clientdateien herunterladen und anschließend benutzen.

Weitere Informationen gibt es unter:
http://de.wikipedia.org/wiki/Node.js
http://stackoverflow.com/questions/6587319/how-to-get-socket-io-0-7-client-file
http://stackoverflow.com/questions/6884413/socket-io-the-good-parts-and-the-bad-parts

Angelscript

Es gibt ja so einige Skriptsprachen auf dem Markt welche sich in Spiele integrieren lassen. Da wären z.B. Lua oder Javascript. Meist stört mich an diesen Sprachen die Syntax (wobei man sich an diese gewöhnen kann), allerdings haben die meisten dieser Sprachen keine Unterstützung für Klassen sondern nur für Prototypen. Deshalb bin ich von AngelScript doch recht begeistert, denn es bietet eine C Syntax, Klassenunterstützung und statische Typisierung. Daneben steht es unter der zlib Lizenz lässt sich also problemlos in eigene Projekte integrieren. Zu finden ist Angelskript dabei unter http://www.angelcode.com/angelscript/.

Weitere Informationen gibt es unter:
http://de.wikipedia.org/wiki/AngelScript