Archiv der Kategorie: Hanse

Entwicklungsstand „Projekt Hanse“

Projekt „Hanse“

Da ich schon lange nichts mehr zum Thema „Hanse“ geschrieben habe, melde ich mich jetzt mal mit einem kurzen Rückblick der vergangenen Monate zurück. Zur Erinnerung: Das Ziel ist ein Browsergame, angelegt an das uralte Spiel für Amiga und prähistorische x86-Systeme. Das Ziel: Durch geschickten Ein- und Verkauf zu Ruhm und Ehre zu gelangen.

Der Weg ist das Ziel

Die ersten Versuche machte ich im Oktober/November 2005, da wir im Rahmen meiner Ausbildung Preisentwicklungen besprochen hatten. Technisch gesehen war es quick and dirty – von objektorientierter Programmierung hatte ich noch nicht viel gehört. Als der grobe Plan stand und man auch schon „klicken“ konnte, baute ich das Ganze auf Objekte um, was einige Zeit in Anspruch nahm.

Danach wurde das Relationelle Datenbankmodell auf InnoDB umgestellt, um Foreign Keys nutzen zu können. Zwar ist diese Engine langsamer als die Standardengine MyISAM, aber zahlt sich das aus meiner Sicht vorallem durch schlankeren Code aus. Denn: Mit Foreign Keys (oder auch Fremdschlüssel) hat man die Möglichkeit, dass MySQL automatisch abhängige Zeilen aus der Datenbank löscht. Verweiste Kontoren, zu denen es keinen Benutzer mehr gibt, fallen damit weg. Auch eine PHP-basierte Überprüfung ist dann nicht mehr notwendig. Ebenso wird von MySQL abgelehnt, wenn die Fremdschlüssel ungültig sind, z.B. der Verkauf eines Schiffes an einen User, der überhaupt nicht existiert, da keine Verknüpfung zwischen den Tabellen hergestellt werden kann, was sonst im Script überprüft werden müsste.

Der letzte große Schritt, der mit dem eigentlichen Spiel nicht viel zu tun hat, aber für den Hintergrund sehr interessant ist, war die Erstellung einer Komponente für Joomla! 1.5, was auf Grund der bereits vorliegenden Objektorientierung relativ unkompliziert war.

Warum Joomla! 1.5? Ganz einfach: Das wichtigste für mich ist und bleibt die Sicherheit der Anwendung. Grade ein Browsergame sollte frei von Sicherheitslöchern und Bugs sein, die anderen einen Vorteil verschaffen könnte. Das Joomla! 1.5-Framework als Grundlage zu nehmen verspricht mir eine stätige Verbesserung der Sicherheit, da es sich hierbei um eine starke Community handelt. Ich brauche mich nur grob um die Benutzerverwaltung, den sicheren Login, die Registrierung, usw. kümmern. Das Template lässt sich unkompliziert ändern und mit Hilfe der Module lassen sich viele Erweiterungen step by step erstellen.

Der Nachteil ist der Overhead, der manchmal für „Hanse“ uninteressant geladen wird.

So, und nun zur Sache…

Stand der Dinge

Bis lang sind folgende Handlungsschritte und Aktionen implementiert:

  • Das Kaufen von Schiffen vom Schiffsbasar
  • Das Versenden von Schiffen in andere Städte
    • Abhängig von der Entfernung wird dem Schiff Rum abgezogen, ist keins mehr da, weigert sich die Mannschaft
  • Die Integration in Joomla! 1.5 als Komponente
  • zusätzlich ein Joomla-Modul zur Steuerung und Navigation
  • komplett objektorientiert
  • RDBM mit InnoDB wegen Foreign Keys
  • AStar-Algorithmus zur Berechnung von Wegen (noch nicht komplett integriert)
  • ein städteabhängiger Marktplatz zum Kaufen undVerkaufen von Waren
  • 12 Warensorten (beliebig erweiterbar)
  • Warentransfer ( Schiff <-> Kontor)
  • Kontoren öffnen und schließen
  • AJAX-Requests bei Eingaben für geringere Ladezeiten

Es steht noch aus:

  • teilweise die Produktion der Waren mit städteabhängiger Produktivität
  • Produktionsautomatisierung
  • Preisentwicklung und deren Automatisierung
  • Städtebedarfsentnahme und deren Automatisierung

Finde den richtigen Weg!

Eine interessante Teilaufgabe war die Verwirklichung des AStar-Algorithmuses in PHP speziell für meine Bedürfnisse. Bislang wurden die Strecken für die Wege mit Hilfe des Satz des Pythagoras‘ verwirklicht. Im Ostseeraum mag das vielleicht kein Problem sein, doch fährt man von Hamburg nach Lübeck, dann sollte die Strecke doch bitte um die Halbinsel herumgehen. Dazu habe ich mich belesen und bin auf den AStar oder auch A Stern gestoßen. Es gab einige Beispiele von anderen Programmiersprachen, aber keine für PHP. Eine gute Hilfe haben ich auf forum.php-einfach.de gefunden.

Wie sieht die weitere Strecke aus?

Als nächstes werden die noch ausstehenden Funktionen implementiert. Danach sollte ein beta-Start möglich sein. Ich hoffe, dass ich schnell die nötige Zeit finden werde. Wenn jemand mitarbeiten möchte, dann kann er sich gerne bei mir melden!

Browsergame „Hanse“ verzögert sich weiter

Vor einer langen Zeit spielte ich einst auf einem für heutige Verhältnisse uralten x86-System das Spiel „Hanse“.

Es ging darum, durch geschickte Ein- und Verkauf-Strategie Gewinn zu machen. Das Spiel war zur Zeit der Hanse angelegt, d.h. man hatte Kontoren in Lübeck, Malmö oder anderen nordeuropäischen Handelsstädten. Man musste sich Schiffe kaufen und im Zweifelsfall auch mal seine Flotte und Kontoren mit Kanonen vor Piraten beschützen.

Seit etwa Oktober 2005 sitze ich mehr oder weniger regelmäßig am PC und schreibe dieses Spielprinzip in PHP…

Eigentlich ist es irre, ein solches Spiel allein zu schreiben, jedoch hat mich mein Ehrgeiz gepackt und sobald ich eine stabile beta-Version zusammen geschustert habe, stelle ich sie hier bei xentity.de online, um ein erstes Feedback erhalten zu können.

Features, die schon implementiert sind:

  • Schiffe von einem Hafen in den nächsten Hafen schicken
  • An- und Verkauf von Waren
  • Preisberechnung auf der Grundlage wirtschaftlicher Gesetze
  • Schiffskäufe
  • Kontoren eröffnen

Features, die noch erstellt oder z. Z. gestestet werden

  • Handelgruppen gründen/erstellen/erweitern
  • Bevölkerungsentwicklungen
  • Verträge mit Städten (für Mindestabnahme) aushandeln

Leider kann ich aus diversen Gründen das Projekt momentan nicht meine volle Aufmerksamkeit widmen. Zur Zeit sitze ich intensiv an einer Generalüberholung meines ShopSystem auf Version 3.0. Sobald dieses Thema vom Schreibtisch ist, setze ich mich wieder an „Hanse“… versprochen 😉