Software des Simulated-Universe

Auch wenn am Ende kein Browsergame entstanden ist, sind dabei doch viele tausend Zeilen Programm-Code und ein paar interessante Entwicklungs-Tools entstanden.

  • Simulationskern (Application-Core)
  • UML2 Code-Generator (Model2Text Translator)
  • Simulationstester

Simulationskern (Application-Core)

Ich bin dabei die Bezeichnung ein bisschen abzuändern, weil es eben nicht mehr nur ein Simulationskern ist. Das ist jedoch nicht ganz so einfach, weil sie das ursprüngliche Einsatzgebiet durch das gesamte Projekt zieht.

Es ist also nicht ganz einfach aus einem Simulationskern einen Applikationskern zu machen.

Im wesentlichen erfüllt dieser Kern folgende Aufgaben:

  • Kommunikation mit den Clients
  • Kommunikation mit den Datenbanken
  • Laden und Ausführen der Anwendung
Grobe Struktur

UML2 Code-Generator (Model2Text)

Eine der größten Herausforderungen für die Entwicklung einer Anwendung ist eine konsistente Abbildung des Ist-Zustands der Entwicklung.

Grundsätzlich bietet sich dazu die Verwendung eines UML-Modellers an. Die aktuelle Version 2.x definiert eine ausreichende Menge an Modellelementen um alle wesentlichen Bestandteile einer Software beschreiben zu können.

Was jedoch in all den Jahren der Nutzung von UML und UML2 kaum Beachtung fand war die Bereitstellung eines alltagstauglichen Tools, mit dem man die erstellten Modelle in passende Artefakte umwandeln konnte.

Parallel zu der Entwicklung der Kernsoftware ist daraus ein UML2 Code-Generator (aka M2T Translation) entstanden der sich bei mir im täglichen Einsatz für meine diversen Versuche auch kontinuierlich weiter entwickelt.

Aktuell wird er nur zusammen mit StarUML verwendet, da dieses auf allen wichtigen Plattformen zur Verfügung steht. Das Design ist jedoch darauf ausgelegt beliebige UML2-Modeller zu unterstützen. Es wird lediglich ein entsprechender Parser benötigt, der das Modell einliest.

Es werden folgende Programmiersprachen unterstützt:

  • C/C++ (inkl. Qt specials)
  • Simulation-Core description
  • PHP
  • JScript

Da ich im allgemeinen kein PHP und auch kein JScript in meinen Entwicklungen verwende ist der Support entsprechend unvollständig.

Simulationstester

Sowohl nach außen als auch im inneren des Simulationskerns wird mit Messages und Signalen kommuniziert. Wenn an dieser Kommunikation auch noch unterschiedliche Clients beteiligt sind, dann wächst der Testaufwand für die Simulation extrem an und ist schnell nicht mehr von einem einfachen Entwickler zu bewältigen.

Deshalb ist aktuell eine Test-Software in der Entwicklung die in der Lage ist die Simulation mit Messages zu stimulieren und die Reaktionen auf diese Messages auszuwerten.

Für die Auswertung können auch die Datenbanken abgefragt und die darin gespeicherten Werte geprüft werden.

Es werden ganze Test-Suiten in XML-Dateien gespeichert die dann aus einer ganzen reihe von einzelnen Tests bestehen können.

Historie des Simulated-Universe

Ungefähr um das Jahr 2007 herum bin ich durch Zufall über eine kleine Gruppe Browsergame begeisterter Leute gestolpert, die gerne ihre eigenen Ideen in einem Browsergame verwirklicht sehen wollten.

Ich hatte solche Spiele auch schon gespielt und fand den Gedanken faszinierend, mit vielen Spielern gleichzeitig auf einem Spielfeld unterwegs zu sein.

Da sich in der Gruppe kein einziger Programmierer befand, dachte ich mir, man kanns ja mal versuchen.

Ich hatte mir bis dahin keine nennenswerten Gedanken darüber gemacht, wie man ein Browsergame überhaupt lösen könnte. Oder um es deutlicher zu sagen. Ich hatte von Web-Programmierung überhaupt keine Ahnung. Doch das machte die Sache nur noch interessanter.

Während ich mir das nötige Know-How angelesen habe, haben die anderen immer größere und gewaltigere Ideen ausgebrütet. Das ist, wie ich finde, auch völlig in Ordnung, denn man wollte ja was besonderes kreieren.

Nur leider besserte sich die Situation bezüglich der Anzahl der Programmierer überhaupt nicht. Nun finde ich Unmögliches besonders reizvoll, weshalb ich trotzdem dabei geblieben bin. Aber wie sollte man das schaffen?

Größtes Problem dabei war, das ich zwar schon ein recht guter C/C++ Programmierer war, aber von PHP/JS/HTML und was es sonst noch alles gibt, keine Ahnung hatte. Da ich aber in meiner täglichen Arbeit eh nur in C/C++ programmierte, machte es in meinen Augen aus Gründen der Effektivität keinen Sinn noch PHP & Co zu lernen.

Wenn ich das ganze in C/C++ programmieren würde, so hatte ich jedenfalls den Eindruck, dann wäre es letztendlich kein Problem die angedachten Feature auch wirklich zu realisieren.

Dabei würde man wohl am sinnvollsten eine Simulation programmieren in der das Browsergame ablaufen würde. Da wären auch meine Künste aus der C/C++ Programmierung genau am richtigen Ort.

Für die Versorgung des Frontends würde man einen Standard LAMP installation verwenden können. Wenn sich also später noch ein PHP Programmierer finden lassen würde, dann könnte man die Arbeit aufteilen und alles wäre schick gewesen.

Ein wesentliches Problem, das sich weder mit der einen noch der anderen Programmiersprache so einfach lösen lässt, ist die Komplexität und der dadurch mit der Pflege einhergehende Aufwand.

Es brauchte eine Strategie, die es relativ leicht machte, neue Komponenten hinzuzufügen ohne das dabei der bereits funktionierende Teil fehlerhaft wurde. Denn ein Spiel blieb nur solange attraktiv, wie man in der Lage war kontinuierlich neue Inhalte hinzuzufügen. Es würden also kontinuierliche Updates erfolgen. Das würde bei den ersten zwei oder drei Updates wohl recht zuverlässig funktionieren, aber dann neigten die mir bekannten Software-Systeme dazu soviele Fehler zu produzieren, das man eher das ganze neu programmieren musste.

Aus diesen wenigen Anforderungen enstand die Idee zu einer allgemeinen, leistungsstarken Simulation. Um meine eigenen Arbeiten von denen der restlichen Gruppe ein wenig zu trennen und mir die Möglichkeit einer Vermarktung offen zu halten, habe ich dann nach einem treffenden Namen gesucht.

Daraus ist “The Simulated-Universe” entstanden.

Ein Browsergame auf dieser Basis ist jedoch nie entstanden.