Hallo liebe lotg spieler,
eine kleine Vorgeschichte, in 2004 bekam ich zum ersten Mal Internet und sofort suchte ich nach Browser Spielen, damals wurde LotGD mir bie Google empfholen und nach dem ersten RP schwierigkeiten überwenden wurden gefiel mir das Spiel immer mehr und mehr, irgendwann habe ich beschlossen das Spiel nachzubauen, ich besuchte Berufsbildende Schulen in fachrichtung Informatik, lernte PHP kennen, machte ausbildung und arbeite nun seit knapp 5 Jahren als PHP Entwickler. Ich habe es nie geschaft ein Browsergame zu entwickeln, angenfangen habe ich viele, jedoch lernte ich auf dem Weg viele interessante Personen. LotGD hat mich zu PHP Geführt, was dann mich letzendlich zu meinem Berufszweig geführt hat.
In den letzten jahren wurde die Entwicklung des Spiel eingestampft und ich habe mir gedacht, ich gebe dem Spiel das zurück was es mir gegeben hat.
Ich versuche in den nächsten Abschnitten auf die Fragen Was, Warum, Wie einzugehen
Was:
Es gibt mittlerweile viele versuche das Spiel von 0 auf zu Entwickeln, auch jetzt sind einige in Arbeit und ich habe mich auch selbst dran versucht. Ich möchte versuchen das Spiel aufzuräumen, Alle fortschritte der Spieler sollen erhalten bleiben, die Admins sollen in der Lage sein, den Code direkt zu aktualisieren.
Warum:
Viele Entwickler lieben es einen sogennanten "Greenfield" Projekt zu starten, wenn man sich aber unsere Arbeit anschaut, dann sieht man sehr oft vorhandenen Code, dieser muss gepflegt werden, bugs müssen behoben werden, unschöne hacks müssen entfernt werden usw. Dieser Prozess ist aber nicht so einfach, es ist nicht so dass man einfach sagt, ich verändere den Code und mach ihn besser, man muss immer im Hinterkopf wissen, was könnte durch meine änderung kaputt gehen. Der Prozess muss geübt werden und wenn ich mir den aktuellen Code von LotGD anschaue, ist es ein Perfektes übungsprojekt.
Wie:
Ich werde zunächst alle funktionen in Klassen auslagern, die methoden werden statisch sein, auf diesen weg muss ich im Inhalt der Funktionen nichts verändern und kann anschließend den C.R.A.P Index für die methoden ermitteln.CRAP bedeutet Change Risk Analysis and Predictions, in einfachen worten, wieviele automatisierte Tests benötige ich um 100% sicher zu gehen dass jeder Fall abgedekt ist. Sobald alle funktionen ausgelagert sind, werde ich nach und nach die Unittests für die Klassen erstellen, angefangen bei den Klassen mit dem Höhsten CRAP index.
Sobald die unittests da sind, dann kann man mit dem Refactoring beginnen.
Aktueller Status:
Der Sourcecode befindet sich auf LINK ENTFERNT er läuft auf PHP 7.0.4(default version von Ubuntu 16.04)
Ich habe mittlerweile 114 funktionen in Klassen übertragen, 391 sind noch übrig.
Die Klasse LINK ENTFERNT hat aktuell den höchsten CRAP Index von 11990
Durch das bearbeiten der Dateien im Hauptverzeichnis ist mir aufgefallen, dass sehr oft die output funktion aufgerufen wird, dadurch nehme ich an, dass durch die implementierung einer Template engine man schon sehr viel Code wegschmeißen wird.
Was hat das jetzt mit euch zu tun?
Zu einem dachte ich, dass es für die Admins hier interessant sein kann(php 5.6 wird ja nur noch bis zum Ende des Jahres entwickelt, anschlißend gibt es nur Security Fixes), zu anderem hoffe ich dass vielleicht sich ein Spieler oder Admin bereit erklärt einen Testserver aufzusetzen so dass die Spieler es testen könnten, das Spiel ist, soweit ich es sehen konnte, spielbar, aber ich bin nicht sonderlich weit im Spiel und viele stellen werden sicherlich ausgelöst wenn man bestimmten level erreicht hat oder auf einer anderen Art und weise.
Außerdem würde ich gerne wissen ob die admins hier sehr viel am code gearbeitet haben, wäre eventuell schade, wenn ich irgendwann fertig bin aber durch modifikationen ließe sich die neuere version nicht installieren.
Bitte verzeiht mir die Rechtschreibfehler, 8 Stunden auf der Arbeit programmiert, 5 Stunden nach der Arbeit an LotGD gearbeitet, kann ganz schön anstrengend sein
Viele Grüße,
BlackScorp