Die neue Karte: Nouron Galaxy Map

Im letzten Blogeintrag zum Stand von Nouron erwähnte ich, dass ich an einer neuen Karte arbeite welche universell einsetzbar sein soll. Und weil es dich sicher brennend interessiert möchte ich dazu etwas mehr Hintergrundinfos veröffentlichen… 😉

Nochmal kurz meine Beweggründe für dieses (Teil-)-Projekt:

  • Einsatz von mehr SVG
  • Training für meine (eher durchschnittlichen) Javascript/JQuery/Ajax-Skills
  • Wiederverwertbarkeit von Teilen meines Browsergames…
  • Einstiegshürde für Entwickler die mir evtl. helfen wollen verringern
  • … und eine Referenz mehr auf GitHub 😉

Mittlerweile hat das Projekt einen brauchbaren Stand. Ich habe die Karte auch schon testweise in Nouron eingebaut und es funktioniert soweit. Es gibt noch fehlende Funktionalität für den wirklichen Gebrauch im Browsergame, aber dazu mehr weiter unten.

Wie ist die Karte konzeptionell aufgebaut?

Zunächst einmal handelt es sich um eine klassische 2D-Karte ohne viel Schnick-Schnack. Die Karte ist in 9 Felder aufgeteilt – bei einem Weltraumbrowsergame wie Nouron kann man sie als Systeme oder Sektoren bezeichnen. Die 9 Felder sind nach Himmelsrichtungen + Zentrum angeordnet. Jedes Feld ist eine SVG-Karte für sich, so dass das Nachladen von Inhalten beim Scrollen von oben/unten bzw. links/rechts sehr einfach möglich ist.

Ebenso war es mein Ziel bereits Teile des Nachbarfeldes/systems/sektors sehen zu können. Somit ist das Feld im Zentrum vollständig dargestellt – die Felder außen herum nur zum Teil. Je nach gewählter Skalierung kann man dass aber auch anders einstellen.
Die angezeigten Objekte selbst sind extra etwas größer dargestellt (momentan ca. 30px) um sie besser anklickbar zu machen. Das kann in Zukunft aber noch anders skaliert werden. Je nach Einsatzzweck für die Karte kann man die Skalierung wunschgemäß in der Konfiguration eintragen.
Außerdem werden mehrere Ebenen unterstützt. Für Nouron liegen z.B. auf der untersten Ebene die Objekte für großflächige Felder wie Asteroidenfelder und Trümmerhaufen. Darüber dann die Ebene mit Planeten und Monden. Und darüber dann die Ebene für Schiffe/Flotten.

Was habe ich bisher durch dieses Projekt gelernt?

  • ich konnte einige meiner eingestaubten SVG-Grundlagen auffrischen
  • ich habe gelernt wie man mit Javascript SVG erzeugt,
  • dass man aufgrund des in den meisten Browser umgesetzten Sicherheitskonzepts namens ‚Same Origin Policy‚ nicht mal eben eine JSON-Datei vom Dateisystem als Beispiel-Datenquelle nutzen kann,
  • dass man mit SVG keine Techniken ähnlich der CSS Sprites anwenden kann (!) und
  • wie man ein Projekt mit Bower.js – Support austattet

Bisher aufgetretene Probleme

Die erwähnte ‚Same Origin Policy‘-Problematik kann man durch Webserver-Einsatz umgehen. Entsprechenden Hinweis habe ich in der README hinzugefügt und damit ist das Problem vom Tisch. Die fehlende Möglichkeit jedoch mit SVG eine Technik ähnlich der CSS-Sprites einzusetzen hat mir schon einen gehörigen Strich durch die Rechnung gemacht. Um Requests zu sparen ist eine Sprite-Technik sehr wichtig. Leider ist das wie gesagt mit SVG nicht wie gewünscht möglich. Insofern sah ich mich gezwungen einen zweiten Modus einzubauen: den Hybrid-Modus. Dies ist wie der Name vermuten lässt eine Kombination aus HTML und SVG. Somit kann ich hier auf klassische CSS-Sprites setzen. SVG wird dabei momentan eigentlich nur noch für den Hintergrundraster verwendet.

So richtig glücklich bin ich damit nicht weil ich jetzt zwei Modi unterstützen muss und das natürlich zusätzliche Komplexität in den Quellcode des Projekts bringt. Ich bin schon stark am überlegen ob ich die SVG-Komponente doch wieder ganz entfernen werde. Wollen tue ich das aber eigentlich nicht – schließlich war es ursprünglich das Primärziel dieses Projekts.

Welche Funktionalität fehlt jetzt noch?

Es muss eine Möglichkeit geben Objekte anzuklicken und deren Informationen anzuzeigen. Dies soll so universell wie möglich geschehen. Es wird also auf einen Ajax-Request auf eine individuell einstellbare Url hinauslaufen, deren Response-Daten entweder in ein zuvor definiertes DOM-Element wie z.B. ein Popup geladen werden.

Wenn ich dann noch irgendwann Lust drauf habe, baue ich vielleicht noch einen Editor, mit dem man sich Karten aus gegebenen Sets zusammenklicken kann – aber das ist momentan noch eher Wunschdenken.

Wie gehts weiter?

Von Zeit zu Zeit werde ich weiter an der Karte basteln und sie so anpassen, dass ich sie für Nouron einsetzen kann – aber auch so dass sie für andere Browsergameprojekte einsetzbar wird. Für die oben angesprochenen SVG-Problematik muss ich noch eine Lösung finden… vielleicht ein Fork ohne SVG-Support?

Wie dem auch sei: ich hoffe ich konnte mal wieder einen kleinen Einblick gewähren und würde mich über Feedback sehr freuen!

Bis zum nächsten Mal,
tector 🙂

Advertisements

Nouron – Stand: Juli 2013

Hallo verehrter Blogbesucher und alle Interessierten! Ich habe diesen Post fürs Wochenende versprochen und.. nunja.. es ist ja noch nicht ganz vorbei 😉 Es ist schon wieder zu lange her, dass ich etwas zum aktuellen Stand von Nouron geschrieben habe. Das möchte ich hiermit nachholen: Was hat sich bei Nouron getan?

Aktionspunkte
Das ist wirklich ein großes Thema! Aktionspunkte (kurz: AP) kamen im Rahmen einer ‚Brainstorming-Session‘ mit meinem Kumpel ins Gespräch und lassen mich seitdem nicht mehr in Ruhe! Wie ich bereits einmal twitterte schießen mir ständig tolle Ideen vor allem im Zusammenhang mit Aktionspunkten in den Kopf. Ich habe das Gefühl, dass man mit Aktionspunkten das ganze Spiel vielseitiger und interessanter machen kann. Vor allem vermeide ich damit auch etwas Leerlauf gerade für Neueinsteiger, weil es etwas mehr Klicks benötigt und man dann nicht so stark das Gefühl bekommt am Anfang wenig machen zu können. Andererseits muss ich aber aufpassen damit nicht gegen das Grundkonzept ‚wenig Klickaufwand‘ zu verstoßen – aber solange man nicht jeden Aktionspunkt einzeln klicken muss werde ich das schon in Einklang bringen können.

Ich wundere mich selbst, dass ich bei einem quasi rundenbasierten Spiel – wo Aktionspunkte ja nichts unübliches sind – nicht von vornherein die Möglichkeit von Aktionspunkten bedacht habe. Man kann damit viel flexibler agieren z.B. beim Bau von Gebäuden indem man den Bau auch unterbrechen oder die Fertigstellung verschiedener Gebäude allein durch die richtige Verteilung von AP synchronisieren kann. Aber wie soll das Ganze überhaupt funktionieren?
Zunächst einmal ergänzen sich das Versorgungssystem (=Supply) und die Aktionspunkte wunderbar! Denn nun kommt zu den statisch investierten Versorgungspunkten (konstant verbraucht pro Tick) die dynamisch einsetzbaren AP (stehen pro Tick erneut zur Verfügung). Hier kommen dann auch die Berater bzw. Personal ins Spiel: um Personal zu bekommen investiert man Versorgungspunkte (=VP bzw. Supply) und bekommt dafür AP. Je nachdem in welches Personal man VP investiert bekommt man unterschiedliche Arten von AP (BauAP, ForschungsAP, HandelsAP, FlottenAP, DiplomatieAP). Diese wiederum braucht man um Gebäude oder Forschungen fertigzustellen (neben den benötigten Ressourcen), Verträge zu schließen oder Gesetze zu entwerfen. Und so weiter, und so fort… Ich hoffe ich kann ansatzweise verdeutlichen wieviel Potential da drin steckt. Hoffe es wird nicht zu kompliziert… die nächste Brainstorming-Session ist bereits geplant 😉

Unittests

Ein heikles Thema aus der technischen Ecke! Info für alle Nichtprogrammierer: Es geht darum den geschriebenen Code mit automatisierten Tests abzudecken um die Codequalität und -zuverlässigkeit zu erhöhen und die Wartbarkeit zu erleichtern. Vor der Umstellung auf das Zend Framework 2 hatte ich mit der alten Version eine recht gut Testabdeckung des Quellcodes von über 70%. Mit dem ZF2 habe ich lange gebraucht überhaupt die Testfunktionalität zur verfügbar zu machen. Dies ist mir nun aber gelungen und ich werde langsam aber sicher mehr und mehr Tests hinzufügen.

Flottenmanagment
Nachdem ich mit der Art und Weise wie die Flotten zusammengestellt werden irgendwie nicht zufrieden war, habe ich diesen Teil nochmal komplett überarbeitet und radikal vereinfacht. Das ging eigentlich ziemlich gut und ich bin ganz zufrieden damit. Jetzt sollte das auch auf mobilen Geräten ganz gut funktionieren – habe es aber noch nicht getestet.

Handel (insbesondere Gebote einstellen)
Die Handelskomponente ist jetzt erstmal die letzte dringende Kernkomponente die ich von der alten Version auf die neue portieren muss. Dann wären Techtree, Galaxie, Flotten und Handel grob fertig – und fast ein spielbarer Status erreicht (naja ‚fast‘). Am Anfang ging das mit dem Handel auch ganz gut: Suchform, Angebotsform, Tabellarische Übersicht, Seitennavigation.. Aber irgendwas hindert mich daran die Funktion zum ’neues Angebot erstellen‘ fertigzustellen. Es ist ziemlich komplex, da hier sowohl (Zend) Formularkomponente, Validierung, Formatierung/Fehlerausgabe, Datenbank (zum abspeichern) und dieser ganze Ajax-Mist mit reinspielen. Das ist schon heftig für eine eigentlich doch so simple Funktion… Aber ich bleibe dran und das wird schon noch werden! 🙂

neuer Texter
Ich habe jemanden kennengelernt, der als begeisterter Rollenspieler sehr viel Lust hat in Zukunft für Nouron die Story, Beschreibungen, Charaktere etc. zu entwerfen. Bin gespannt was die Zukunft bringt… Mehr dazu bald.

Was steht als nächstes auf dem Plan?
Ich muss jetzt erstmal weiter an den neuen Aktionspunkten arbeiten – was hier und da leider wieder Umbauten erfordert. Bin aber trotzdem ganz zuversichtlich, dass das relativ problemlos laufen wird. Weiterhin versuche ich demnächst die Ajax-Funktionen in den Griff zu kriegen und einheitlich zu gestalten… (z.B. beim Gebäude bauen oder Handelsgebot einstellen).
Javascript und vor allem Ajax sind wirklich nicht mein Ding – aber es muss ja leider sein in der heutigen Zeit… Desweiteren werde ich parallel mehr und mehr Unittests schreiben um den bestehenden Code abzudecken. Mehr möchte ich erstmal nicht vorausplanen. Wenn ich das Entwicklungtempo der Vergangenheit als Schätzungsgrundlage nehme werden diese Dinge wohl wieder einige Monate in Anspruch nehmen (da ich meist nur am Wochenende Zeit für Nouron habe). Bis dahin gibt es dann natürlich wieder Updates per Twitter, Facebook, Google+ und natürlich hier im Blog. Bitte unterstützt das Projekt indem ihr folgt, kommentiert, teilt und/oder liked… Vielen Dank und bis bald!

Flottenmanagement in Nouron

Ich habe hier im Blog schon über die Flottenbewegungen geschrieben, aber noch nicht über die Flotten selbst. Ich möchte hier nun etwas auf das Flottenmanagement in Nouron eingehen. Aber zunächst möchte ich noch einmal auf eine technische Besonderheit aufmerksam machen:

Im Techtree von Nouron gibt es vier Kategorien: Gebäude, Forschungen, Schiffe und Berater. Diese Objekte laufen alle unter dem Namen ‚Technologie‘ – ja, auch Berater sind aus technischer Sicht Technologien 🙂 Jede Technologie hat neben der Kategorie (Typ) auch einen Zweck, wie z.B. Zivil, Wirtschaft, Militär etc. (evtl. wird es pro Technologie auch mehr als ein Zweck geben). Zudem haben Technologien ein Attribut welches sie als handelbar auszeichnet oder eben nicht. Ich spiele durchaus mit dem Gedanken auch Gebäude handelbar zu machen – aber da ist ebenso noch nichts in Stein gemeißelt.

Was ist nun eine Flotte?

Eine Flotte ist ein Verbund von Raumschiffen, also Technologien der Kategorie ‚Schiff‘. Weiterhin benötigt eine Flotte Crew-Mitglieder, also Technologien der Kategorie ‚Berater‘. (‚Berater‘ ist vielleicht nicht das optimale Wort, das wird evtl. noch geändert) Optional kann eine Flotte Fracht in Form von Passagieren (=Berater), Technologien (Gebäude, Forschungen, evtl. kleine Schiffe/Satelliten/Drohnen) und Ressourcen zugewiesen bekommen. Man muss sich also nicht pro Schiff um die Einzelheiten kümmern, sondern um die Flotte als Ganzes.
Ein einzelnes Schiff ist technisch gesehen zwangsläufig eine eigene Flotte.

Was wird es nicht geben?

Es wird keine individuellen, aus Modulen bestehenden Raumschiffe geben. Ich weiß, dass das ein tolles Feature wäre was viele vermissen werden. Aber ich werde darauf verzichten um das Spiel nicht zu komplex in diesem Bereich werden zu lassen. Der Schwerpunkt von Nouron liegt ja woanders. Andererseits ist diese Entscheidung nicht fest in Stein gemeißelt und ich werde sobald das Spiel mal einen stabilen, spielbaren Status hat nochmal über diese Möglichkeit nachdenken.

Welche Schiffstypen gibt es?

Ich unterscheide in zivile und militärische Schiffe. Momentan sind bei den zivilen Schiffen kleine, mittlere und große sowie Personen- Transporter geplant – und ach ja: das Kolonieschiff. Bei den militärischen Schiffe sind es Jäger, Fregatten und Kreuzer. Ja, das sind nicht so viele Typen bisher aber wie schon erwähnt: Schwerpunkt und so. Dennoch gibt es gewisse Schiffstypen die ich evtl. noch gerne einbauen würden. Z.B. ein Spionageschiff das über Tarnung verfügt, ein Forschungsschiff (ermöglicht Handel mit Forschungen) oder ein Konstruktionsschiff (Handel von Gebäuden).
Aber das sind alles Dinge die später eingebaut werden können wenn mal das Grundgerüst steht.
Jeder Schiffstyp hat unterschiedliche Ausprägungen von Schiffsattributen, u.a. Geschwindigkeit (verfügbare Aktionspunkte pro Tick), Frachtraum

Flottenbefehle

Flottenbefehle die in der ersten spielbaren Version möglich sein sollen sind ‚erstellen‘, ‚auflösen‘, ‚bewegen‘ und ‚angreifen‘. Später sollen dann Befehle wie ‚joinen‘, ’stationieren‘ und ‚eskortieren‘ möglich sein.

Was ist momentan noch problematisch?

Es ist noch ungeklärt wie der Zustand der Flotte bzw. der einzelnen Schiffe technisch umgesetzt wird. Technologien altern prinzipiell was den Zustand senkt. Bei Gebäuden äußert sich das in dem der Level sinken kann wenn man den Zustand durch Reparatur nicht verbessert. Wenn Schiffe einer Flotte zugewiesen sind (und nicht der Kolonie) funktioniert das momentan noch nicht. Hierbei wird zwangsläufig auch der Zustand unterschiedlich werden. Das ist problematisch und bedarf noch einer Lösung.

So das war es zu dem Thema erstmal. Hoffe ich habs nix vergessen. Wenn ihr noch Fragen oder Feedback/Anregungen habt nutzt bitte die Kommentarfunktion! Bis dann, have fun!

Nouron TODO-Liste

Hi, was neues über Nouron? Hm.. nicht viel, aber ich hab mal ne kleine TODO-Liste für die nächsten Schritte gemacht (hauptsächlich technische Umstellungen, nicht vollständig und nicht unbedingt in der Reihenfolge):

  • überarbeitete Portalseite !!!! (die jetzige ist sowas von unaktuell)
  • Cloud-Server + Domain einrichten
  • Nouron Forum abschalten (schon ewig inaktiv… in Zukunft nur noch lokales Archiv)
  • Nouron Koordinatenformat mit Json statt Arrays umsetzen
  • fehlerhafte Views korrigieren
  • von SVN auf GIT wechseln
  • Repository auf GitHub (dazu auch Lizenzen klären!)
  • Zend Framework 2 (endlich mal rantrauen, ausprobieren und später dann Nouron von ZF1 auf ZF2 migrieren)

… frohes Neues

hallo,

leider hat es nicht geklappt, dass meine zuvor erstellten Blog-Einträge mit den Weihnachts- und Neujahrgrüßen automatisch am 25.12. und 1.1. publiziert werden. Zumindest letzteres hol ich hiermit nach:

Ein frohes neues Jahr wünsch ich euch!

Die freien Tage habe ich u.a. dazu genutzt weiter an Nouron zu programmieren. Folgende Änderungen gibt es nun:

  • Script zur Tickberechnung begonnen: Tickberechnung erfolgt 3 Uhr nachts; während der Tickberechnung ist  User-Login gesperrt; Ressourcen werden jetzt pro Tick erzeugt; die Menge ist abhängig von der Anzahl der produzierenden Gebäude (alles noch sehr rudimentär, aber der Anfang ist gemacht ^^)
  • Techtree debuggt/erweitert;
  • Admin-Modul erweitert und debuggt: Technologie-Kosten können über das Admin-Modul eingetragen/geändert werden;
  • Models erweitert / SQL geändert: neue Views in der Datenbank (u.a. für Ressourcenproduktion) erstellt
  • Template für Tabellenköpfe erstellt und Sortierfunktion für Tabellen;
  • JS auch im Admin-Modul verfügbar (ein/ausblenden von Technologien zur besseren Übersicht)
  • Spielerliste, Spielerprofile funktionieren rudimentär
  • Technologiebesitz ist jetzt von Kolonien abhängig und nicht mehr vom User
  • man kann zwischen seinen Kolonien umschalten
  • … ein paar Kleinigkeiten hier und da debuggt

Nouron-Restrukturierung und aktuelle Fortschritte

Wie ich im Forum bereits vor einigen Tagen schrieb, werde ich nun das Projekt ‚Nouron‘ alleine weiterentwickeln. Demzufolge habe ich nun einige Umstrukturierungen vorgenommen:

  • Die Eröffnung dieses Blogs
  • Den Ausbau des Gästebereichs im Forum für Vorschläge und Kritik

Außerdem habe ich am vergangenen WE mal wieder etwas geschafft für Nouron zu proggen:

  • Button/Icon-Sprites hinzugefügt
  • Techtree weitergemacht und Javascript-Fehler behoben
  • Sortierung bei klassischen Techtree und Administration
  • farbliche Hinterlegung der Techtypen
  • Fehler in Adminbereich behoben
  • weitere Tech-Vorraussetzungen in die DB eingetragen

Hier ein paar aktuelle Bilder (ja, die sind absichtlich so klein, damit man nicht zuviel erkennen kann ^^):


Administrationsmenü


Techtree


Handel