Nouron – Stand: April 2014

Stand: November 2013
Stand: Januar 2013
Stand: März 2014
Stand: April 2014

Fast ein halbes dreiviertel Jahr ist die letzte News zu Nouron her… und noch schlimmer: ich habe mehrmals einen neuen Blogeintrag angekündigt und es dann nicht eingehalten! Das tut mir leid für die 1-2 Leute die wirklich interessiert sind und darauf gewartet haben.
Wie du an den (symbolischen) Streichungen oben im Text sehen kannst habe ich durchaus mehrfach angefangen diesen Blogpost zu schreiben aber nie richtig vollendet und veröffentlicht. Das hole ich nun hiermit nach.

Und auch wenn es so von außen aussieht als ob sich nix getan hätte, ist das Gegenteil der Fall.
In den letzten Wochen gab es auch wieder vermehrt Commits auf GitHub – Meine Aktivität ist also wieder deutlich gestiegen. Aber ich erläutere einfach mal was sich so im letzten Jahr getan hat:

Phase 1: Sommer 2013 – November 2013

Es gab zwei sehr große Baustellen in dieser Zeit

Restrukturierung der Techtree-Objekte

Teil 1 von 2 großen Umbauten in diesem Jahr. Letztendlich eine sehr technische Sache von der man im Frontend gar nichts spürt. Aber für diesen Umbau musste ich gefühlt 60-70% des bestehenden Codes umschreiben. Statt alle Technologie-Arten (Gebäude, Forschungen, Schiffe, Berater) wie bisher in einer Tabelle der DB zu speichern werden sie jetzt in jeweils einzelnen Tabellen gespeichert. Also ein Schritt weg von ‚Oh, erfinde jetzt mal was bahnbrechend Neues und lege mir dabei selbst Steine in den Weg’… Bitte nicht falsch verstehen: Das Konzept hätte aufgehen können, aber es wurde einfach zu kompliziert für einen einzelnen Entwickler den Überblick zu bewahren. Und es ist schwer verständlich für andere Entwickler die vielleicht mal in das Projekt einsteigen wollen.
Insofern jetzt der klassische Ansatz den jeder Browsergame-Programmierer versteht.
Aber es mussten ja nicht nur die Tabellen der Datenbank umgeschrieben werden sondern auch die zugehörigen Model-Klassen. Außerdem mussten fast alle bereits implementierten Funktionen (Techtree, Flottenzusammenstellung, Handelsangebote) nochmal angefasst werden. Also das war schon eine Menge Arbeit.
Ich kann noch nicht mal behaupten, dass das wirklich schon 100% abgeschlossen ist. Hier und da stoße ich noch auf Probleme die mit dieser Umstellung zusammen hängen, wobei die Lösung mittlerweil recht einfach ist, da ich genau weiß wie ich es haben möchte! (das war auch nicht immer so 😉

Beim Techtree habe ich optisch nichts verändert. Bei der Flottenzusammenstellung jedoch habe ich die Oberfläche in diesem Zusammenhang komplett überarbeitet. Es ging dabei vor allem um eine Vereinfachung und die Möglichkeit auch auf kleinen Bildschirmen (Smartphones, Tablets) gut bedienen zu können.

Einführung von Aktionspunkten

Das war der zweite ganz große Umbau in diesem Jahr. Es gab so ein Gefühl in mir das irgendetwas an dem Spiel noch nicht stimmte aber ich wusste nicht was. Irgendwo fehlte einfach etwas.
Dann machte ich zusammen mit meinem besten Freund ein Brainstorming und heraus kam die Idee der Aktionspunkte. Personal gibt Aktionspunkte pro Tick. So wird neben dem statischen Supply auch eine dynamische Ressource eingesetzt. Es fühlt sich jedenfalls richtig an. Bei rundenbasierten Brettspiele ist der Einsatz von Aktionspunkten ja auch gang und gebe. Und ich glaube hier konnte ich eine große Lücke im Spieldesign schließen. Nach der Idee der Einführung der Aktionspunkte sprudelten die Ideen was man damit anfangen könnte nur so über. Ich bin jedenfalls schwer begeistert und denke dass da in Zukunft noch einiges kommen wird was ich dann genauer erklären kann.

Sonstiges

Neben diesen großen Umbauten gab es noch kleinere Baustellen und Experimente

  • Migration vom Frontend-Framework Bootstrap 2 zu Bootstrap 3
  • Update der verwendeten JQuery-Version
  • Behaviour Tests mit Behat [experimentell]
  • Kontaktaufnahme mit einem Texter der vielversprechend war, aber leider ist der Kontakt wieder ohne Ergebnisse abgebrochen

Phase 2: Dezember 2013 – Anfang Januar

Hier passierte nichts! Nicht weil ich nicht wollte, sondern weil daran gehindert wurde:
Zum einen hatte ich über einen Zeitraum von mehr als 2 Wochen kein Inet und zum anderen gab meine Festplatte den Geist auf und musste ersetzt werden. Ich hatte also eine neue Platte ohne die Tools die ich zum programmieren brauchte und kein Inet um mir die Tools zu besorgen aber ich hatte ganz viel Zeit die ich sonst nicht habe …
Scheiß Kombination >:-/

Phase 3:

Im Januar konnte ich dann wieder anfangen und habe erstmal die Umstellung auf Bootstrap 3 und JQuery-Update fertig gemacht. Dann war erstmal alles auf einen guten Stand und ich wollte mich daran machen die Aktionspunkte auch bei Flottenbewegungen zu implementieren. Nach längerem Überlegen bin ich zu dem Schluss gekommen, dass die momentane Karte nicht gut ist: alles viel zu klein und fummelig – außerdem nicht ansatzweise auf mobilen Geräten tauglich. Also Flottenbewegungen erstmal nach hinten verschoben. Jetzt muss erstmal eine neue Karte her…

Phase 4:

… und weils sonst langweilig wird, ist daraus ein eigenes Projekt entstanden. Naja es gab gute Gründe dafür:

  • ich will mehr SVG einsetzen und mit den aktuellen Browsern ist das nicht mehr so ein Krampf wie früher
  • ich will meine Javascript/JQuery/Ajax-Skills trainieren
  • ich will Teile meines Browsergames wiederverwertbar machen… so eine Karte kann man auch leicht in andere Browsergames einbauen
  • ich will damit die Einstiegshürde für Entwickler die mir evtl. helfen wollen verringern, da bei diesem Projekt keine Einarbeitungszeit in das komplexe Zend Framework 2 nötig ist
  • und nicht zuletzt: eine Referenz mehr auf GitHub 😉

Das Projekt heißt momentan ‚Nouron Galaxy Map‘ (Name kann und wird sich wohl noch ändern) und ist unter https://github.com/tector/ngm erreichbar.
Ich würde es auf dem aktuellen Stand noch niemandem empfehlen produktiv einzusetzen! Aber ich werde weiter dran arbeiten, dass das irgendwann mal der Fall ist.

Jedenfalls bin ich seit ein paar Wochen wieder deutlich aktiver und öfter am programmieren. Vielen Dank auch an @xBlackScorpx für die zusätzlich Motivation 🙂

BlackScorp hat mich auch auf das Tool Scrutinizer.com gestoßen, mit dem man leicht die CodeQualität seines Projekts überprüfen kann – was auch sehr motiviert diese zu verbessern. Tja, da ist mir erstmal aufgefallen an wievielen Stellen im Code man deutlich erkennen kann, dass ich meine Arbeit mittendrin aufgrund von Zeitmangel eingestellt habe und dann vergessen habe.. Solche Probleme versuche ich derzeit zu fixen. Und in diesem Zusammenhang schreibe ich nun auch wieder vermehrt Unittests. In der alten Version mit ZF1 hatte ich schon einiges an Unittests zusammengetragen und eine Code Coverage von ca. 75%. Das ist jetzt nicht mehr der Fall.. ich würde gerne wieder da hin kommen… momentan sind es aber gerademal 20%.

So das war doch jetzt mal ein sehr ausführlicher Blogpost 😉 Entschuldigt evtl. Rechtschreib/Grammatikfehler.. ich werde sie nachträglich beseitigen sollten mir welche auffallen aber jetzt wollte ich den Post endlich mal fertig stellen und nicht weiter verzögern. Deshalb leider auch NUR Text und keine Bilder… ich bin leider kein guter Blogger 😦

Abschließend möchte ich noch betonen, dass ich mich wie immer über jede Form von Feedback freue!
Folgt Nouron auch auf Twitter, Facebook und Google+
Vielen Dank und bis zum nächsten Mal! Have Fun!

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!