Ende 2001 Namenlose Engine für StarWing-Clone mit UpdateServer, GrafikServer angelegt, einfaches Partikelsystem implementiert. Komische Verzeichnisstruktur verwendet, herkömmliche Zeiger eingesetzt, mit char *-strings gearbeitet. Statt wildwuchernder "Manager" gab's nun "Server", die jeweils nur für ein Subsystem zustände waren. Statusupdates über UpdateServer durchgeführt. Fast wie die Enginuity-Serie bei gamedev.net. Anfang 2002 Neue Engine mit Namen "Flex" angelegt, deren Struktur sich ein wenig an "The Nebula Device" anlehnte, ebenfalls mit Plugin-Architektur. Abstrakte Scriptunterstützung mit TCL-Implementation. Alles in ungarischer Notation gehalten, Intrusive Referenzzählung via CObject-Basisklasse und CObjectPointer (kurz: COP) als smart-pointer, std::strings in grossem Umfang genutzt, hinter den Kulissen häufig mit char-arrays hantiert um vermeintlich schneller zu sein. Komplett neue Verzeichnisstruktur nach Nebula-Vorbild ausgedacht, die den Anforderungen eher angemessen war. Mitte 2002 Eine Menge Hilfsklassen geschrieben, einen Kernel mit gut ausdesignten Komponenten wie StorageServer zur Datenspeicherung, ScriptServer für's Scripting und EventServer für's Event-Handling geschrieben. Alle Kommentare überarbeitet und auf DoxyGen-Format umgestellt, Engine kurz darauf umbenannt in Nuclex (= Nucleus - sollte Mikrokernel-artige Architektur verdeutlichen). VideoServer FontServer ImageServer geschrieben, alles noch in einem Plugin namens NCXGame.ncx enthalten, das über andere Plugins mit der Implementierungen von ImageLoadern etc. versorgt wurde. Ende 2002 NCXGame-funktionalität in Nuclex direkt integriert (keine gegenseitigen Abhängigkeiten zwischen Plugins mehr, komplettes Node-System (quasi ein Dateisystem nur mit Objekten für's Skript) verworfen weil dieses auch extern nachgebildet werden kann. Plugins für den StorageServer zum öffnen von Zip und Rar entwickelt, Bildlade-Plugin mit DevIL und AudioServer sowie fmod-Plugin geschrieben. Komplette Restrukturierung von allem, CObject und CClass (stuss ^_^) ersatzlos beseitigt, externe Referenzzählung mit Boost::shared_ptr<>, alle Loaders sind nun Codecs, und es werden ausgiebig und ausschliesslich die STL-Containerklassen verwendet Anfang 2003 Statische Bibliothek wrappt nun main(), so dass Anwendungen über NuclexMain() starten. fmod-Plugin weggeschmissen und Audiere genutzt, DevIL-Plugin weggeschmissen und Corona genutzt. Ungarische Notation aus der gesamten Klassenhierarchie entfernt. Man hat ein viel klareres Verständnis des Zwecks von Klassen und Variablen wenn kein Zeichensalat das Gehirn ablenkt. Python-Plugin für's Scripting entwickelt. TCL rausgeworfen. Lua-Plugin für's Scripting entwickelt, Python rausgeworfen. Mitte 2003 VideoRenderer weiterentwickelt, direkt mit VertexDeclaration gearbeitet und DirectX-Artiges FVF im voraus verworfen. Vertex- und PixelShader vorgesehen, Downcast beim Auswählen von Resourcen akzeptiert um Kapselung zu erhalten. Hierarchisches GUI-System entwickelt, bei dem wie in Windows alle Elemente von 'Window' abgeleitet wurden. Beliebig verschachtelte Unterfenster, keine Unterscheidung zwischen Fenster und Control. Anwendungsfenster gehört jetzt der Engine, nicht mehr dem Renderer. Vorher musste Initialisierungsreihenfolge beachtet werden, das geplante DirectInput-Plugin müsste seine Geräte erst später erstellen, zuviele Verweise zwischen Renderer und allen anderen Systemen. Ende 2003 Eingabesystem entwickelt, Default-Eingabegeräte geschrieben, die SigC++ Events aus der Anwendungsfenster-Klasse abfangen und so die Benutzereingaben zur Verfügung stellen. Eingaben werden als Objekte z.B. an das GUI-System ausgeliefert und verarbeitet. Alle Plugins heissen jetzt Xyz.plugin.dll, alle Untersysteme liegen nun in namespaces, FontServer heisst TextServer, Image heisst Bitmap, Storage heisst Archive... Komplett neue PixelFormat-Bearbeitung geschrieben und integriert. Verwendet nun templates um den optimalen Code zur Konvertierung, zum Blitten und für Software-Alphablending zu synthetisieren, komplett plattformunabhäng. Anfang 2004 Serializer im Storage-Subsystem überarbeitet und neu entworfen, dazu einen XML-Serializer auf Basis von tinyXML implementiert. Resourcenskripts zum Laden von Resourcen eingeführt. GUI-System voll funktionsfähig gemacht, allgemeinen Satz von Widgets eingebaut, die sich über eine Schnittstelle zeichnen. DynamicTheme-Klasse geschrieben, die das Aussehen der Widgets einer XML-beschreibung entnimmt. Weitere Hilfsklassen für Zeitmessung und Threads geschrieben. Eigene string-Klasse komplett aufgelöst und std::string in den Nuclex namespace importing. Zusatzfunktionen aus alter string-Klasse sind jetzt herkömmliche globale Funktionen geworden. Mitte 2004 VertexDrawer komplett neu aufgebaut und besser unterteilt. Es gibt jetzt eine TextureCache-Klasse zur Optimierung des Renderns von vielen kleinen Texturen und eine VertexCache-Klasse zur Optimierung des Renderns von vielen kurzen Vertex-Gruppen. Hardware-Mauscursor eingebaut, da ein Sprite-Cursor im Backbuffer bei niedrigen Framerates die Bedienung der GUI zu einem Frusterlebnis werden lässt.