Das Invertika Update im April

Wieder ist ein Monat vorbei, ein neues Quartal hat mit dem April begonnen und es ist wieder Zeit für neues Invertika Update. Auch in diesem Monat gab es wieder einige Verbesserungen und natürlich auch wieder Fehler welche behoben wurden. Neben einigen kleineren Fehlern auf einigen Karten, wurde einige Städte (namentlich: Lauria, Lyeria und Nelara) überarbeitet bzw. erweitert was neue Gebäude, NPCs und Landschaften einschließt. Das Monument des großen Fehlerbehebers wurde erweitert und der Schuh wurde organischer gestaltet

Lauria wurde überarbeitet und teilweise erweitert was auch neue NPCs mit einschließt. Das gleiche passierte auch in Nelaro und beim Monument des großen Fehlerbehebers. Auch an den dazu passenden Skripten wurde geschraubt und hier und da verbessert. Der Schuh wurde auch überarbeitet und organischer gestaltet.

Der überarbeitete Schuh

In einigen Tilesets wurden Fehler korrigiert, wie z.B. fehlende bzw. fehlerhafte Schatten. Daneben gibt es auch einige neue Sprites welche von den Entwicklern in Zukunft benutzt werden können. Rechtschreib- wurden wieder einige gefunden und behoben. Einige Fehler in den „Deployment“ Ordnern des alten Invertika Clients wurden behoben und eine neue Version desselben veröffentlicht.

Der neue Invertika Server befindet sich in der Entwicklung und auch am Client wurden einige Dinge gemacht, wobei das Hauptaugenmerk im Moment auf dem Server liegt. Sie sind jeweils im Invertika Repository zu finden. Das „ivktool“ wurde an einigen Stellen erweitert, so das ausgewählte Funktionen nun umfangreicher arbeiten. In der Wiki gab es einige Überarbeitungen einiger Artikel und mittlerweile ist diese auf 1.473 Artikel angewachsen. Wer neugierig geworden ist, der kann sich Invertika unter http://invertika.org anschauen oder die Weltkarte besuchen.

Mario meets Portal

Wir nehmen „Super Mario Brothers“ und verbinden das ganze mit „Portal“. Heraus kommt dann Mari0:

Aktivieren Sie JavaScript um das Video zu sehen.
Video-Link: https://www.youtube.com/watch?v=SaoHMjS04vU

Wie man im Video sehen kann wurde die „Portal Gun“ in das Spiel integriert, was das Gameplay natürlich ziemlich verändert. Neben dieser offensichtlichen Änderung gibt es einen 4-Spieler Coopmodus, einen Leveleditor und 33 verschiedene Hüte. Geschrieben ist das ganze dabei in LUA und steht für Windows, Linux und Mac OS X zur Verfügung. Lizenztechnisch steht das Spiel und seine Grafiken unter Creative Commons BY-NC-SA 3.0.

Simple HTTP Server

Wer mal schnell einen HTTP Server unter Linux aufsetzen möchte, der sollte einfach in das entsprechende Verzeichnis gehen und dort:

python -m SimpleHTTPServer

ausführen. Anschließend ist dieses Verzeichnis per HTTP (standardmäßig unter Port 8000) erreichbar. Möchte man einen anderen Port benutzen so gibt man einfach die entsprechende Portnummer als letztes Argument mit an.

Weitere Informationen gibt es unter:
http://docs.python.org/library/simplehttpserver.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