Neues von manaserv und Co.

Auf der Seite http://forums.themanaworld.org/viewtopic.php?f=1&t=12669&p=117361#p117361 gibt es wöchentlich Informationen darüber was sich an manaserv, mana und manaweb so tut. Die Software wird dabei auch bei Invertika (http://invertika.org) benutzt.

Deshalb gibt es hier nochmal eine Zusammenfassung. In manaweb (die Webkomponente für die Accountverwaltung et cetera) wurde viele Fehler behoben und die Übersetzung auf gettext umgestellt. Desweiteren wurde die Setupprozedur verbessert.

Auch in manaserv gab es eine ganze Menge Änderungen wie neue Skriptbefehle und eine Menge Bugfixes. In der aktuellen Version ist nun mein Patch angekommen welcher dafür sorgt das Items welche auf der Map liegen auch nach einem Serverneustart noch dort sind. Eine weitere größere Änderung ist die Implementation des „equipment-fix“ Patches, welcher dafür sorgt das das Ausrüsten nun wieder funktioniert und eine ganze Menge andere Bugs behoben hat.

Daneben arbeiten wir im Moment daran AngelScript in manaserv als zweite Skriptsprache neben LUA zu implementieren. Schritt für Schritt wird es also ;)

Manasource und Invertika

Am 15. März 2011 kam der Mana Client 0.5.1 heraus. Auf diesem Client baut auch Invertika auf, aber darum soll es in diesem Artikel nicht gehen ;) Viel interessanter ist der letzte Satz in der Releaseankündigung:

Let’s make testing.manasource.org a playable environment and let’s allow Invertika to switch from their old „stable“ version of manaserv to the latest master branch!

Invertika nutzt ja noch eine ältere Version des Manaserv Servers in welchem einige Funktionen (globale Variablen, Crafting, et cetera) noch nicht implementiert sind. Der Grund dafür ist das am aktuellen Master Branch von manaserv so viel geändert und entwickelt wurde, das dieser nicht wirklich produktiv einsetzbar war.

Das hat sich in letzter Zeit allerdings spürbar gebessert so das das Invertika Team hofft in nächster Zeit auf den neuen Server umzusteigen, was sich dann sicherlich durch einige neue Features bemerkbar macht.

Für alle welche Invertika nicht kennen: Dabei handelt es sich um ein freies (GPL) 2D-MMORPG welches unter http://invertika.org zu finden ist.

Mana Mobile (Qt) für Android kompilieren

Da auf Android Anwendungen in Java geschrieben werden, ist das kompilieren von Mana Mobile für Android etwas komplizierter. Schließlich handelt es sich um eine in Qt (und C++) geschriebene Anwendung. Diese Anleitung bezieht sich dabei auf einen Kubuntu 10.10 Rechner. Zuerst muss das entsprechende Qt SDK für Android unter http://sourceforge.net/projects/necessitas/files/ heruntergeladen werden.

Nach dem Download muss der Installer mittels:

chmod +x necessitas-0.1.1-Linux-x86-Install

ausführbar gemacht werden. Dann kann der Installer gestartet werden. Installiert werden sollte das ganze in den Ordner /opt/necessitas/ da dieser vom Entwicklerteam von Necessitas intensiv getestet wurde.

Nun müssen noch das Android SDK sowie das Android NDK installiert werden. Das SDK kann dabei unter http://developer.android.com/sdk/index.html bezogen werden. Nach dem Download des selben wird das SDK entpackt und an eine gewünschte Stelle gelegt. Anschließend geht man dort in den Ordner tools und führt im Terminal

./android update sdk

aus. Dadurch wird das SDK geupdatet. Nun muss nur noch das NDK (zu finden unter http://developer.android.com/sdk/ndk/index.html) herunter geladen werden und an gewünschter Stelle entpackt werden. Bei beiden Developer Kits ist dabei zu achten die jeweils richtige Version (in diesem Fall die Linux Version) herunterzuladen.

Nun kann der Qt Creator for Android gestartet werden. Der Installer hat dazu im Desktop Ordner (im Home Verzeichnis) ein Shortcut angelegt. Nach dem Start der IDE öffnet man die Optionen (Tools -> Options) und geht dort auf den Qt4 Tab. Dort wird bei der Android für QT Version der Pfad für qmake eingetragen (/opt/necessitas/Android/“qtversion“/bin/qmake). Dieser QT Version muss dann noch ein Name zugewiesen werden z.B. android-lighthouse-4.8.0.

Als nächstes wechselt man zu dem Android Tab. Dort wird dann der Pfad zum Android SDK (Minimum android-sdk_r09) und zum Android NDK (Minimum android-ndk_r5) gesetzt. Nun muss der korrekte Toolchain gesetzt werden, in diesem Fall arm-linux-androideabi-4.4.3. Als letztes muss der Pfad für ant gesetzt werden welcher meist /usr/bin/ant sein sollte.

Nun geht man nochmal auf den Qt4 Tab und klickt dort auf Build all, damit alle wichtigen Tools gebaut werden. Anschließend kann der Dialog mit einem Klick auf Apply & OK verlassen werden.

Nun kann es an die Einrichtung von Mana Mobile gehen. Im ersten Schritt sollte das Projekt aus den SVN ausgecheckt werden. Dies funktioniert mittels:

svn checkout https://invertika.googlecode.com/svn/trunk/client-mobile/ invertika

In diesem Projekt befindet sich eine .pro Datei welche mit dem Qt Creator geöffnet werden kann. Beim öffnen fragt der Qt Creator welche Buildziele man compieren möchte. Hier wählt man die Androidvarianten mit an und bestätigt das ganze mit dem Finish Button. Dann kann man das ganze testweise mit dem Build All Button kompilieren. Dabei dürfte es an zwei Stellen zu Problemen kommen. Die erste Stelle ist die Funktion setOrientation (in der Datei qmlapplicationviewer.cpp):

    case ScreenOrientationLockPortrait:
        //attribute = Qt::WA_LockPortraitOrientation;
        break;
    case ScreenOrientationLockLandscape:
        //attribute = Qt::WA_LockLandscapeOrientation;
        break;
    default:
    case ScreenOrientationAuto:
        //attribute = Qt::WA_AutoOrientation;
        break;

Dort müssen die Zuweisungen des Attributes auskommentiert werden. Anschließend dürfte ein Fehler in der Bibliothek enet (enet_address_get_host in der Datei unix.c) auftreten:

    #if defined(linux) || defined(__linux) || defined(__linux__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
        //gethostbyaddr_r ((char *) & in, sizeof (struct in_addr), AF_INET, & hostData, buffer, sizeof (buffer), & hostEntry, & errnum);
    #else
        hostEntry = gethostbyaddr_r ((char *) & in, sizeof (struct in_addr), AF_INET, & hostData, buffer, sizeof (buffer), & errnum);
    #endif
    #else
        in.s_addr = address -> host;

        hostEntry = gethostbyaddr ((char *) & in, sizeof (struct in_addr), AF_INET);
    #endif

Hier wird dann der Funktionsaufruf gethostbyaddr auskommentiert. Danach sollte das ganz kompilieren. Wenn man dann auf den Run Button drückt liefert ant noch eine Fehlermeldung:

BUILD FAILED
/home//android-sdk-linux_x86/tools/ant/main_rules.xml:306: null returned: 1

Total time: 0 seconds
Packaging Error: Command ‚/usr/bin/ant debug‘ failed.Exit code: 1
Error while building project manamobile (target: Android)
When executing build step ‚Packaging for Android‘

Hier hilft es die minimale SDK Version von android-3 auf android-4 anzuheben. Dazu geht man auf den Tab Projects und dort auf die Run Konfiguration des Androidprojektes. Dort kann man diese Einstellungen dann vornehmen.

Da die OpenGL Bindings für die Android Qt Version noch nicht lauffähig sind muss in der Manamobile.pro die Zeile contains(QT_CONFIG, opengl): QT += opengl auskommentiert werden:

    QT += network
    #contains(QT_CONFIG, opengl): QT += opengl

In der main.cpp müssen folgende Zeilen auskommentiert werden:

    #ifndef QT_NO_OPENGL
    //#include 
    #endif
 
    #ifndef QT_NO_OPENGL
       //viewer.setViewport(new QGLWidget);
    #endif

Außerdem muss noch die Zeile:

    viewer.setMainQmlFile(QLatin1String("qml/main/mobile.qml"));

in

    viewer.setMainQmlFile(QLatin1String("/sdcard/qml/main/mobile.qml"));

abgeändert werden. Der qml Ordner sollte dem entsprechend dann auch auf der SD Karte liegen. Eventuell kann es zu Problemen kommen, wenn bei der Anwendung die falschen bzw. ungenügende Rechte im Manifest gesetzt sind. Normalerweise werden für Mana Mobile folgende Rechte benötigt:

– android.permission.INTERNET
– android.permission.WRITE_EXTERNAL_STORAGE

Ein anderes Problem könnte auftreten wenn nicht alle benötigten Qt Bibliotheken in den Projekteinstellungen aktiviert sind. Dazu geht man in die Projekteigenschaften unter Android -> Run -> Package Configuration -> Libraries und klickt dort auf den Button Read informations from application. Nun muss aus dem Market nur noch Ministro (stellt die OpenGL Bindings unter Android bereit) heruntergeladen werden. Danach sollte Manamobile auf einem Androidgerät laufen. Dabei kommt es im Moment noch zu Einschränkungen, so werden Touchevents noch nicht richtig verarbeitet.

Invertika – Ein Open Source MMORPG

Nach einiger gedanklicher Vorlaufzeit ist er endlich da. Der erste seeseekey.net-Podcast. Das Thema dieses Podcasts ist Invertika – Ein Open Source MMORPG. Der Podcast kann heruntergeladen oder abonniert werden. Es handelt sich um eine Vertonung des entsprechenden Beitrags. Über Kritik & Feedback freue ich mich natürlich. Und so wünsche ich viel Spaß beim ersten seeseekey.net-Podcast.

Falls noch nicht geschehen, könnt ihr Deus ex machina in eurem Podcatcher abonnieren oder eine Bewertung auf Apple Podcasts hinterlassen. Daneben ist die Unterstützung über Tone H möglich.

Invertika – Das Jahr geht zu Ende

Nun ist das Jahr 2009 zu Ende und es ist Zeit ein Resumé zu ziehen. Im Laufe dieses (und des letzten) Jahres ist Invertika zu einem Projekt geworden welches mir ans Herz gewachsen ist. Doch wobei handelt es sich bei Invertika? Invertika ist ein freies MMORPG welches für Linux, Mac OS (theoretisch) und Windows zu Verfügung steht. Dabei hat sich im letzten Jahr viel getan wie man auch auf der Weltkarte sehen kann.

Das ganze Projekt baut dabei auf der Technik von Manasource auf. Im nächsten Jahr ist es nun daran für spannende Quests zu sorgen damit auch der normale Spieler endlich etwas zu tun bekommt :) Denn bei allen Fortschritten ist Invertika immer noch im Alpha bzw. Beta Stadium.

An dieser Stelle möchte ich noch mal der Firma Manitu danken, welche uns freundlicherweise den Spielserver zur Verfügung stellt :)

Alle die an dieser Stelle mitlesen sind natürlich herzlich dazu eingeladen mitzumachen. So suchen wir z.B. Maintainer welche die Pakete für verschiedene Distributionen (Ubuntu und Co.) erstellen damit Invertika in naher Zukunft unkompliziert über den Paketmanager heruntergeladen werden kann und nicht mehr selber kompiliert werden muss.

Auch werden immer Skripter, Mapper, Grafiker und andere kreative Menschen gesucht welche sich am Projekt beteiligen möchten :)

In diesem Sinne, auf in ein neues und hoffentlich spanendes Jahr. Mehr zu Invertika könnt ihr auf der Hauptseite unter http://invertika.org erfahren.