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

Invertika – Beyond the fantasy

Heute möchte ich mal wieder eines meiner Projekte vorstellen. Es geht dabei um das Projekt Invertika – Beyond the fantasy. Bei diesem Projekt handelt es sich um ein auf The Mana World basierendes MMORPG. Die Spielmechanik ist entspricht der von The Mana World, nur die Inhalte sind andere und die Spielsprache ist Deutsch.

Bei der Technik wird die neue (und noch in der Entwicklung befindliche) Version 0.1 des Servers und der Client Software. Man sollte sich von der niedrigen Versionsnummer dabei nicht abschrecken lassen, das ganze ist schon sehr ausgereift.

Der Server arbeitet zur Zeit im Alphabetrieb und ist auch öfters mal nicht erreichbar. Mit Beginn des Betabetriebes soll der Server dann auch dauerhaft laufen. Aber bis dahin kann es noch ein wenig dauern.

Zu finden ist das ganze unter http://www.invertika.de. Natürlich werden immer Mitstreiter gesucht, vom Mapper, Grafiker bis zum Musiker wird jede Hilfe dankbar angenommen.

Multiplattform

Heute habe ich versucht den The Mana World (http://www.themanaworld.org) Server sowie den Clienten zu kompilieren. Das ganze einmal für Linux und einmal für Windows. Also das ganze ersteinmal aus dem SVN ausgecheckt und dann erstmal geschaut wie man sowas unter Linux eigentlich kompiliert.

Nach einigem überlegen bin ich dann darauf gekommen :) Zuerst wird das configure ausgeführt und dann in einem Terminal einmal make ausgeführt. Bei einem dieser beiden Schritte gab es dann Probleme mit fehlenden Bibliotheken die wurden dann einfach per apt-get nachinstalliert. Das kompilieren des Servers klappte dann ohne Probleme auf dem Linux System. Nur mit dem Client gab es ein kleines Problem. Das lag an der Bibliothek guichan. Diese Bibliothek existierte schon in der Version 6 auf dem System. Leider gab das ein kleinen Konflikt mit der Version 7 die ich zum kompilieren benutze. Also die sechser Version runter geschmissen und die neuere Version installiert. Und schon funktionierte alles :)

So dann das gleiche unter Windows, aber da bin ich nicht soweit gekommen. Nach einigem hin und her habe ich beschlossen erstmal darauf zu warten bis es eine neue Version von CodeBlocks (http://www.codeblocks.org/) herauskommt. Das soll ja in diesen Tagen geschehen.