Der letzte Monat in diesem Jahr hat begonnen, Zeit also über den Fortschritt im November zu berichten.

Ich habe viel an den allgemeinen Projektkonfigurationen gearbeitet. Ich habe ein Tool geschrieben, um automatisch alle gemeinsamen Dateien aller Projekte zu aktualisieren. Vorher muss ich immer jedes Projekt manuell updaten, wenn ich beispielsweise eine Abhängigkeit auf einen Stand bringen wollte. Das wird mir jetzt viel Zeit ersparen und vor allem auch dafür sorgen, dass die Projekte nicht mehr auseinander laufen.

clockUtils:

Auf Code-Seite habe ich nur die Projektinfrastruktur aktualisiert, damit sie mit der neuen Konfiguration zusammenpasst. Aber ich habe clockUtils auch in das GitHub-Repository für Vcpkg gebracht. Das ist ein Repository für Visual Studio-Projekte, um einfach an aktuellen Versionen für verschiedenen Open-Source-Bibliotheken zu kommen. Ich hoffe, dass es helfen wird, clockUtils zu verbreiten.

m2etis:

m2etis hat einige nützliche Verbesserungen erhalten. Ich habe einige überflüssige Threads entfernt und alte Threads wiederverwendet. Ich habe die Performance dafür nicht gemessen, aber selbst, wenn es nicht schneller ist als vorher, ist der Code jetzt deutlich besser. Außerdem habe ich gflags durch clock_argParser ersetzt. Das war sehr einfach und jetzt funktioniert alles auf allen unterstützten Plattformen auf die selbe einfache Art.

Ein cooler Nebeneffekt beim Update von m2etis auf die Projektkonfiguration war, dass m2etis jetzt problemlos für Android gebaut werden kann. Ich habe damit noch keine Applikation getestet, aber es kompiliert zumindest problemlos. Das ist ein weiterer Schritt vorwärts, um letztlich die i6engine für Android zu bauen.

Cwizz:

Cwizz' GUI wurde weiter verbessert. Ich habe dazu auf Qt 5.6 aktualisiert. Dadurch kann ich jetzt automatische DPI-Skalierung nutzen. Das behebt die meisten Probleme, die ich unter Android hatte. Es gibt noch ein paar Probleme, aber die sind nicht so groß wie die vorher. Ich hoffe ich kriege alles innerhalb der nächsten Wochen behoben, damit die Open Beta im Frühjahr 2017 beginnen kann.

Elemental War:

Sehr gute Neuigkeiten für Elemental War: Ich habe alle Aufgaben für die Singleplayer-Alpha abgeschlossen und diese vor einer Woche an ein paar Freunde geschickt. Ich habe zwar noch kein Feedback erhalten, aber die Arbeit geht weiter. Ich habe bereits ein paar Optimierungen und weitere Grafiken eingebaut und mit der konzeptuellen Arbeit für die Multiplayer-Modi begonnen. Der Singleplayer war ein erster großer Schritt für mich, der nächste wird die Multiplayer-Alpha. Ich hoffe ich werde damit schnell fertig.

 

Wie üblich gibt es viel mehr kleine Dinge, die im letzten Monat erledigt wurden. Aber ich wollte mich auf die großen Dinge konzentrieren. Der nächste Fortschrittsbericht wird möglicherweise ein Rückblick auf das komplette Jahr 2016. Aber da bin ich noch nicht sicher. Vielleicht schreibe ich auch einfach zwei News dafür.

Datum: 3.12.2016

Oktober ist vorbei und es war ein großartiger Monat.

clockUtils:

clockUtils 1.1 ist bereits fertig, aber ich muss noch die Linux-Pakete bauen und hochladen, bevor der offizielle Release kommt. Aber GitHub ist bereits aktualisiert und auch im Downloadbereich gibt es bereits das Source-Archiv und die Prebuilt-Package für Visual Studio 2013 und 2015, wie gewohnt als 32 und 64 bit Variante.

Die wichtigsten Änderungen sind bessere ini-Parser-Fähigkeiten, um einige Informationen über die enthaltenen Daten abzufragen, bessere Socket-Performance und eine neue LockFreeQueue-Implementierung in unserer Container-Bibliothek. Der komplette Changelog kann auf der Changelog-Seite eingesehen werden.

Bereits veröffentlicht wurde diesen Monat SocketPerformanceChecker 0.9. Ich habe da noch ein paar lokale Änderungen, die noch nicht auf GitHub sind. Das sind alles nur Sachen, um die Toolchain Visual Studio 2015 zu unterstützen. Ich werde das Repository bald aktualisieren, arbeite aber gerade noch an ein paar Verbesserungen.

i6engine:

Für die i6engine habe ich einige Bugs im Zusammenhang mit der GUI behoben, die mir bei der Arbeit an Elemental War aufgefallen sind. Die funktioniert jetzt deutlich besser.

Außerdem habe ich die Arbeit an einem Tool für die i6engine namens TakeControl gestartet. Es wird die Synchronisation von Sprachausgaben deutlich vereinfachen. Aktuell gibt es da nur einen GUI-Prototyp ohne Funktionalität, aber es wird da weiter gehen.

Elemental War:

Die GUI fürs Hauptmenü ist fast komplett fertig und ich habe einige weitere Bugs behoben. Es stehen jetzt nur noch ein paar Bugfixes und einige Tests aus für die interne Singleplayer-Alpha.

Datum: 1.11.2016

Der September ist vorbei und wir haben beinahe einige große Milestones erreicht. Mal sehen, was wir diesen Monat geschafft haben.

 

i6engine:

Ich habe nicht viel für die i6engine gemacht, aber was ich gemacht habe war wichtig. Die meisten Spiele nutzen in irgendeiner Art und Weise animierte Texturen. Man denke nur and 2D-Spiele, die Sprites benutzen. In meinem Fall brauchte ich das für ein unangekündigtes Spiel und für Elemental War, was animierte Mauscursor bieten wird. In diesem Monat habe ich mich als mit diesem Feature beschäftigt und eine Möglichkeit in die GUI-API eingebaut, das einfach zu verwenden.

 

Cwizz:

Die Open Beta von Cwizz ist beinahe fertig. Nur noch einige kleinere Tickets hier und da sind offen und die GUI muss nochmal überarbeitet werden, um eine bessere Skalierung auf verschiedenen Geräten zu bieten, besonders bei unterschiedlichen DPI-Werten. Das wird noch eine Weile dauern, aber wir werden Cwizz bald für Android, Windows und Linux veröffentlichen. Der erste Release wird dabei nur deutsche Fragen enthalten, aber wir werden so bald wie möglich auch englische Fragen einfügen.

Falls du coole Ideen für Fragen hast, kannst du eigene in der Browser-Version von unserem QuestionManager erstellen, den Michael geschrieben hat. Dieser wird hoffentlich morgen verfügbar sein. Ich muss ihn noch ein wenig testen und eventuell Bugs fixen. Ich werde dafür eine extra News schreiben.

 

Elemental War:

Elemental War hat auch große Fortschritte gemacht. Die Singleplayer-Alpha ist beinahe startklar. Nächste Woche bekomme ich die Texturen für das neue Hauptmenü, Mauscursor und mehr. Auf der Codeseite fehlen nur noch ein paar Fixes und Tests. Die Singleplayer-Alpha wird an ein paar Freunde geschickt, um Feedback für das Gameplay zu erhalten. Alle drei Singleplayer-Modi, die Elemental War bietet, sind komplett integriert und werden nur um mehr Inhalt wie Items, Texturen, Objekte und kleinere Features erweitert. Es soll aber keine großen Änderungen mehr geben (außer meine Tester finden noch etwas, was unbedingt geändert werden sollte).

Nach diesem internen Release wird die Arbeit am Multiplayer beginnen. Ich habe bereits viel darüber nachgedacht und der wird richtig cool.

 

Neben diesen drei Projekten habe ich auch viel für unsere Test-Infrastruktur getan. Ich habe vor einer Weile ein Continous-Integration-Framework aufgesetzt und viele Jobs angelegt und dadurch auch schon einige Bugs in verschiedenen Projekten gefunden. Nicht alle Projekte werden schon getestet, aber zumindest die aktuell wichtigsten wie i6engine, Cwizz, Elemental War und clockUtils bietet bereits zahlreiche Tests, um auf Nummer sicher zu gehen.

Datum: 1.10.2016

Wow, ein weiterer Monat ist vorbei, die Zeit vergeht so schnell. Diesen Monat habe ich die Spiele fokussiert. Ich habe auch einige kleine Dinge für die Bibliotheken erledigt, aber da war nichts allzu interessantes dabei. Aber eine wichtige Verbesserung war der Start des Continous-Integration-Tests. Ich habe ein kleines Framework dafür geschrieben, das alle unsere Projekte testen wird. Es gibt bereits einige Jobs für einige der Projekte und hab auch schon einige Fehler gefunden, hauptsächlich in den Toolchains.

Aber jetzt komme ich zu den Projekten.

clockUtils:

Ich hab diesen Monat nicht allzu viel geschafft, aber die gute Nachricht ist, dass ein neuer Release beinahe abgeschlossen ist. Es ist nur noch ein Ticket offen. Ich will eine lock-free Queue in die Container-Bibliothek einbauen. Danach wird der neue Release kommen. Wenn nichts dazwischen kommt wird der Release im September sein. Cwizz benutzt eine 1.1 Revision bereits, weil es die neue Funktionalität des ini Parsers benötigt.

 

Cwizz:

Cwizz hat eine komplette Überarbeitung der Grafik bekommen. Ich habe nicht nur das Layout verbessert, sondern auch den kompletten Style. Es sieht jetzt sehr viel besser aus. Abgesehen davon habe ich auch einige Fehler behoben, die wir während des Testens gefunden haben. Diesen Sonntag wird die nächste Version in der geschlossenen Beta veröffentlicht. Danach gibt es nur noch eine weitere Version bevor die deutsche offene Beta startet. Diese Version ist dann für November angesetzt, also nicht mehr lang bis dahin.

Eine weitere interessante Entwicklung für Cwizz ist die Browser-Version unseres Fragenerstellungstools. Es befindet sich noch in einem frühen Stadium, aber ich hoffe Michael kriegt das bald fertig.

Es tut sich hier also gerade viel.

 

Elemental War:

Auch in Elemental War hat sich viel getan. Ich habe alle Gameplay-Element, die ich für die Singleplayer-Alpha, die ich in den kommenden Monaten starten will, abgeschlossen. Es fehlen jetzt nur noch ein paar Dinge, hauptsächlich Optimierungen und ein wenig Inhalt. Aber grundsätzlich ist der Singleplayer jetzt so gut wie fertig. Nach dem Start der Singleplayer-Alpha wird der nächste große Schritt die Multiplayer-Modi einzubauen. Ich denke also ein Release in 2017 ist möglich.

 

Im Gegensatz zu den letzten News, die sich hauptsächlich mit den Bibliotheken beschäftigt haben, hat sich der Fokus mittlerweile etwas verschoben. Das liegt daran, dass die Bibliotheken mittlerweile ziemlich gut sind. Ich baue fast nur noch die Features ein, die ich für die Spiele brauche. Und die Spiele werden bald kommen.

Datum: 1.9.2016

Hallo mal wieder. Ein weiterer Monat ist vergangen und ich habe wieder zahlreiche Ziele erreicht, auch wenn ich etwas unproduktiv war, vor allem aufgrund der Hitze. Aber nichtsdestotrotz gibt es hier den neuesten Fortschrittsbericht.

clockUtils:

clockUtils 1.1 macht sehr gute Fortschritte. Diesen Monat hab ich MinGW auf Windows zum Laufen gekriegt. Der Trick dabei war die mingw64-Distribution zu verwenden, da diese std::thread unterstützt. Ich musste einige Anpassungen machen, aber nun kompiliert es auch unter Verwendung von MinGW. Abgesehen davon gibt es kaum interessantes zu berichten. Ich habe einige kleinere Tickets abgearbeitet. Dazu gehört z.B. die Möglichkeit Einträge aus ini-Dateien zu entfernen und asserts zum Checken von validen Zuständen im Debugmodus (z.b. für die Unittests).

Da der SocketPerformanceChecker immer noch offiziell zu clockUtils gehört erwähne ich ihn hier. Eventuell werde ich ihn auch auf der Homepage irgendwann mal in ein extra Projekt umziehen. Jedenfalls hat der SPC eine neue Statistik bekommen, die den Durchsatz repräsentiert. Ich dachte das wäre sinnvoller als die aktuellen Dauern, weil man so direkt sieht wie viele Nachrichten bei einer gegebenen Nachrichtengröße pro Sekunden gesendet werden können. Außerdem zeigt der SPC jetzt alle Ergebnisse in einem LineChart an. Sieht meiner Meinung nach schon sehr gut aus. Der Code dafür steht bereits auf GitHub.

i6engine:

i6engine kam diesen Monat etwas zu kurz. Ich habe noch nicht einmal die News für den i6engine 1.0.1 Release geschrieben, obwohl sie bereits seit ein paar Wochen auf GitHub und der Homepage steht. Ich habe während der Arbeit an Elemental War einiges Bugs gefunden und mich daher entschieden, das Update bereitzustellen. Abgesehen davon habe ich einen weiteren Bug behoben, wobei der Splash Screen unter Windows nicht immer das oberste Fenster war. Das ist es jetzt. Die anderen Änderungen waren Sachen wie sich selbst beendende Integrationtests und Lua aus dem Engine-Code entfernen und stattdessen als Abhängigkeit anzulegen.

m2etis:

m2etis baut jetzt wie die meisten anderen Projekte alle seine Abhängigkeiten selbst beim Aufruf von CMake. Aber die größte Verbesserung betrifft die Performance. Obwohl m2etis immer noch nicht so schnell ist, wie ich es gerne hätte, konnte ich die Performance um ca. 25% verbessern. Das ist ganz gut soweit. Das Hauptproblem aktuell ist die langsame Serialisierung. Ich denke ich werde nach einer schnelleren Lösung als boost suchen oder es direkt selber schreiben für clockUtils.

Elemental War:

Hier hab ich sehr viel geschafft. Ich habe alle mir aktuell bekannten Bugs behoben und auch viele andere Tickets abgearbeitet. Diese beinhalten neuen Content wie Monsterfähigkeiten, aber auch neue Features und Optimierungen. Besonders das neue Itemsystem habe ich angefangen. Das ist fast das letzte Feature, das für die Singleplayer-Alpha fehlt, die ich dieses Jahr noch starten will. Aktuell sind noch fünf Feature-Tickets übrig und dazu ein paar Optimierungen, Content und Tests, die ich vor der Alpha noch abschließen will. Ich bin also im Zeitplan.

Eine weitere gute Nachricht: Ein alter Kollege von mir, mit dem ich bereits an den meisten meiner Gothic-2-Modifikationen gearbeitet habe, unterstützt mich jetzt mit Texturen. Er erstellt die Leveltexturen für einige der Settings und auch für neue Turmmodelle. Und für Turmmodelle habe ich jetzt auch einen Kontakt. Also macht endlich auch die graphische Seite Fortschritte.

 

Das waren die interessantesten Neuigkeiten. Ich könnte noch mehr über Cwizz erzählen, aber dafür will ich erst die Homepage erstellen. Aber um ein wenig vorzugreifen: Ich habe eine konkrete Roadmap für die Open Beta der deutschsprachigen Version angesetzt und die wird noch dieses Jahr kommen!

Datum: 1.8.2016

Wow, die erste Hälfte des Jahres ist bereits rum. In dieser Zeit hab ich sehr viele Dinge geschafft und die letzten Fortschritte gibt's in dieser News.

clockUtils:

Du hast es wahrscheinlich schon gesehen: Ich habe diesen Monat clockUtils 1.0.0 veröffentlicht. Das war ein großer Schritt, weil es unser erster Major-Release ist. Ich habe einige neue Features für diesen Release eingebaut wie beispielsweise die Möglichkeit eines DNS-Lookups für unseres Sockets und Verbesserungen unseres Argument-Parsers. The komplette Changelog ist hier.

Seit dem Release habe ich natürlich die Arbeit an Version 1.1 gestartet. Das Kernfeature wird erweiterter Compiler-Support sein. Ich habe bereits eine offizielle Toolchain für Clang unter Linux eingebaut. Das hat zwar schon funktioniert, aber gtest für unsere Unittests wurde trotzdem mit gcc statt mit clang gebaut. Das hat sich jetzt geändert. Aktuell versuche ich unter Windows mit MinGW zu bauen. Das ist aber gar nicht so einfach, weil es nicht nur eine Distribution gibt, sondern viele verschiedene. Und leider unterstützen die meisten kein std::thread. Aber ich habe jetzt eine neue Spur gefunden, also krieg ich das vllt. bald hin. Das andere Feature für den nächsten Release sind Verbesserungen unseres ini-Parsers. Ich habe die Möglichkeit eingebaut alle Sektionen eines Konfig-Files abzufragen und für jede Sektion auch alle Einträge. Ich dachte es könnte nützlich sein, auch wenn ich noch keinen konkreten eigenen Use Case dafür hatte, als ich mit der Implementierung angefangen habe, da alle Einträge immer bekannt sind in unseren Projekten und wir keinen dynamischen Zugriff brauchten. Aber nur ein paar Tage nach der Implementierung habe ich ein Feature gefunden, das sich damit viel leichter implementieren wird, und zwar für Cwizz.

Zusammen mit clockUtils 1.0.0 habe ich meinen SocketPerformanceChecker auf Version 0.8.0 getagged auf GitHub. Ich erwähne das hier, weil ich das Tool as Benchmark- und Vergleichstool für unsere Sockets entwickelt habe. Die Ergebnisse sind auch wirklich gut.

Mittlerweile habe ich noch Support für Qt-Sockets und auch für m2etis eingebaut. m2etis ist zwar keine reine Socket-Implementieurng, daher wird es immer langsamer sein als diese, aber es ist eine sehr gute Möglichkeit m2etis zu profilen und mit Sockets zu vergleichen. Aktuell ist es noch ziemlich langsam, aber ich habe auch noch keine Performance-Optimierungen eingebaut.

 

i6engine:

i6engine 1.0.0 wurde ebenfalls diesen Monat veröffentlicht. Außerdem war das der erste offizielle Release der Engine. Ich will hier nicht ins Detail über den Release gehen, alle nötigen Informationen gibt es hier.

Seit dem Release habe ich nur ein paar kleinere Dinge gemacht wie das Upgraden der Dependencies (clockUtils, m2etis, CEGUI, boost, OpenAL Soft). Weil es auf Twitter auch gewünscht wurde gibt es jetzt ebenfalls eine kleine Galerie mit ein paar Screenshots der Tools, die wir mitliefern. Die kannst du hier finden.

Weil ich während meiner Arbeit an Elemental War wieder einige Bugs gefunden habe werde ich nach diesem Sprint, also Sonntag nächste Woche (10. Juli), ein Update auf Version 1.0.1 veröffentlichen.

 

m2etis:

m2etis 0.5.0 hat noch nicht viele Fortschritte gemacht bisher, aber der wichtige Punkt ist, dass ich die Arbeit daran wieder aufgenommen habe. Ich habe m2etis bereits mit Hilfe meines neues SocketPerformanceCheckers geprofiled und einige Bottlenecks gefunden. Ich habe einige von ihnen bereits behoben und noch viele Ideen, wie ich die Performance verbessern kann. Also mal sehen, was ich noch rausholen kann.

 

Elemental War:

Und natürlich hat auch Elemental War gute Fortschritte erzielt. Ich habe sehr viel Code refactored, um die Code-Qualität zu verbessern. Das hat eine Weile gedauert, aber dafür ist es jetzt sehr viel einfacher neue Features einzubauen, Bugs zu fixen usw. Außerdem habe ich andere Bereiche verbessert wie die Darstellung der Turm- und Gegnerstats und viele neue Features eingebaut.

Datum: 2.7.2016

Diesen Monat habe ich viele verschiedene Dinge geschafft.

 

clockUtils:

Obwohl der Code für clockUtils 1.0 bereits fertig ist, fehlen aktuell noch ein Logo, ein Icon und ein kleines Performance-Tool. Logo und Icon werde ich morgen bekommen, weil ich die nicht selbst erstellen kann, dafür habe ich begonnen das Performance-Tool zu schreiben. Das grundlegende Framework ist auch bereits fertig und bietet schon sechs verschiedene Socket-Implementierungen, die getestet werden können. Obwohl es noch hin und wieder abstürzt und noch nicht unter Linux getestet wurde, sind die Ergebnisse bereits sehr interessant: clockUtils asynchroner TCP-Socket schlägt boost::asios TCP-Socket und beide Modi von clockUtils' UDP-Socket schlagen den von boost::asio. Ich muss zwar noch einiges testen und die restlichen Bugs beheben, aber die Tendenz sieht gut aus.

Das komplette Performance-Tool kann im offiziellen GitHub-Repository unter https://github.com/ClockworkOrigins/SocketPerformanceChecker eingesehen werden.

Der Release von clockUtils 1.0 ist auf Sonntag festgelegt.

 

i6engine:

Auch die i6engine hat einige Aufmerksamkeit von mir bekommen. Ich habe alle übrigen Bugs behoben und die letzten Features für den anstehenden Release von Version 1.0 eingebaut.

Der ParticleEditor erlaubt es nun eine Box zu definieren, um die Größe der Partikel einschätzen zu können. Das wird bei der Skalierung neuer Partikel helfen und dafür sorgen, dass man sie nicht mehr ingame nachjustieren muss.

Während es bereits zahlreiche Plugin-Schnittstellen für unseren Leveleditor gibt, habe ich jetzt noch die Möglichkeit hinzugefügt Plugins zu schreiben, um eigene Typen von Objekten einzufügen. Als Beispiel-Plugin dafür habe ich eines geschrieben, um NPCs aus dem RPG-Modul einzufügen.

Als ich an der neuen GUI für Elemental War gearbeitet hab habe ich herausgefunden, dass man den Standard-Font, den die GUI benutzen soll, nicht setzen konnte. Jetzt kann man das.

Und das letzte große Feature war eine Möglichkeit, um die Skalierung eines MovableTexts abhängig von der Entfernung zwischen Kamera und Text zu ändern. Dafür gibt es jetzt eine Callback, die die neue Größe berechnen kann.

Aktuell sind gerade mal noch vier Tickets für den neuen Release übrig. Drei davon sind für das Logo, das Icon und zwei Texturen, die für den Release noch ausgetauscht werden müssen. Das letzte ist für die Tutorialsseite auf der Homepage.

Der Release von i6engine 1.0 ist auf Sonntag nächste Woche festgelegt.

 

Elemental War:

Elemental War ist jetzt öffentlich. Ich habe die Homepage freigegeben und den ersten Screenshot hochgeladen. Dieser zeigt die neue GUI. Ansonsten habe ich jede Menge neue Sachen eingebaut und viele Bugs behoben. Das Projekt macht sehr gute Fortschritte. Das einzige Problem aktuell ist, dass mir jemand für die Grafik fehlt, aber ich hoffe, dass sich das bald ändern wird.

 

Das ist soweit alles, aber bald gibt es mehr, schließlich stehen innerhalb der nächsten zwei Wochen zwei Releases an.

Datum: 1.6.2016

Heute habe ich die Homepage für Elemental War, ein Tower-Defense-Spiel, gestartet.

Elemental War bietet verschiedene Einzel- und Mehrspielermodi und macht sehr viel Spaß. Während des Gameplay für den Singleplayer beinahe fertig ist, habe ich den Multiplayer noch nicht angefasst. Auch die meisten Grafiken müssen noch erstellt werden. Trotzdem habe ich bereits einen Pre-Alpha-Screenshot in die Galerie geladen, um einen ersten Eindruck zu vermitteln.

Der nächste Meilenstein in der Entwicklung von Elemental War ist eine Singleplayer-Alpha für einige Freunde, um zu ermitteln, ob es auch anderen Spaß macht oder nicht und was noch verbessert werden sollte. Ich hoffe ich krieg das innerhalb der nächsten zwei Monate hin.

Datum: 26.5.2016