Aktuelle Codemetriken

Patrizier Sven
Stadwappen Oskarhamn

Ab und zu erhalte ich von interessierten Leuten Emails mit der Frage wie umfangreich eigentlich so ein Spiel sei. Daher gibt es heute mal ein paar Codemetriken zum aktuellen Stand 😉

Das Spiel selber ist in Frontend und Backend aufgeteilt. Das Frontend ist alles, was ihr unter trader.galiator.de seht, das Backend ist nur für mich :D. Zum Backend selbst gehört auch der Daemon, welcher fleißig das Spiel am laufen hält und alle möglichen Berechnungen und Datenbankupdates macht.

Das Spiel selber ist komplett in PHP geschrieben, setzt auf CakePHP als Framework auf, nutzt als Datenbank MySQL und läuft auf einem Debian vServer von 1st-rootserver. Die Darstellung für den Spieler benötigt keinerlei Plugin, da nur reines HTML sowie Javascript in Form von jQuery zum Einsatz kommt.

Frontend

  • besteht aus 55 Controllern, sowie aus 40 definierten Model Klassen – der Rest wird automatisch an Hand der Datenbankstruktur zur Laufzeit erzeugt
  • die Controller, sowie die Modelle enthalten 10868 Zeilen PHP Code und 4684 Kommentarzeilen bzw. ApiGen Dokumentation
  • für die Ausgabe sorgen 203 Views und 333 Grafiken
  • 1100 Zeilen Javascript – neben jQuery – erzeugen die Dynamik im Browser

Backend schlanker

  • alle Ausgaben und Bearbeitungsmöglichkeiten sind per Scaffolding mit 150 Zeilen PHP Code und 4 Views abgedeckt
  • der Daemon besteht aus 5500 Zeilen PHP Code, nutzt 48 Models und wird ausschließlich als Konsolenprogramm gestartet
  • die Hauptroutine des Daemon ist eine Endlosschleife mit sleep(), welche die Ausführung der einzelnen Jobs aus der Queue anstößt

Datenbank

  • hat derzeit 85 Tabellen, wobei nur 59 genutzt werden – die restlichen sind schon für neue Funktionen und Erweiterungen entworfen worden
  • enthält rund 50.000 Datensätze mit einer Gesamtgröße von 10 MB für das Spiel
  • ca. 800.000 Datensätze für statistische Anzeigen der Warenpreise, Berechnung der Bevölkerungsentwicklung und anderen temporären Daten

»«

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.