20.06.2024
Datenzugriff
Neue Open-Source-Tools für die Datenserialisierung
Autor: Online Redaktion
dotnetpro
Auf den ersten Blick erscheint die Serialisierung einfach: Daten in eine Datei schreiben und später wieder einlesen. Doch die Realität ist komplizierter. Eine neue Reihe von Open-Source-Tools soll effiziente und flexible Serialisierung leichter machen.
Die Serialisierung von Daten ist ein komplexes und oft mühsames Unterfangen - das gilt auch für die Spieleentwicklung. Die Herausforderung besteht nicht nur darin, Spieldaten zu speichern, sondern auch darin, diese Daten später korrekt zu laden und zu verwenden. Dies umfasst unter anderem das Handling von veralteten Speicherständen, das Wiederherstellen hierarchischer Zustandsmaschinen und die polymorphe Deserialisierung. Nun gibt es jedoch eine neue Reihe von Open-Source-Tools, die Entwicklern diese Aufgabe erheblich erleichtern sollen.
Die Herausforderung der Serialisierung
Auf den ersten Blick erscheint die Serialisierung einfach: Daten in eine Datei schreiben und später wieder einlesen. Doch die Realität ist komplizierter. Was passiert, wenn das Speicherdatum nicht mehr mit den aktuellen Datenmodellen übereinstimmt? Wie rekonstruieren Sie eine hierarchische Zustandsmaschine oder übersetzen gespeicherte Daten in polymorphe Modelle? Diese und weitere Fragen machen die Serialisierung zu einer komplexen Aufgabe.
Nach sechs Monaten Entwicklung wurden drei bestehende Pakete aktualisiert und vier neue Pakete vorgestellt, die speziell für die Anforderungen der Serialisierung in C#-Spielen entwickelt wurden. Diese Tools basieren auf einem quelloffenen Technologie-Stack und versprechen eine deutliche Erleichterung bei der Entwicklung von Speichersystemen für Spiele.
Ein gutes Speichersystem sollte plattformübergreifend funktionieren, insbesondere auf iOS, wo Ahead-of-Time (AOT) Kompilierung erforderlich ist. Es sollte einfach zu erweitern sein, polymorphe Deserialisierung unterstützen, Sammlungen effizient handhaben und Versionierung ermöglichen, um mit sich entwickelnden Datenmodellen umzugehen. Zudem sollten benutzerdefinierte Serialisierungshooks für spezielle Anforderungen verfügbar sein.
Neue Lösung
Das neue Serialisierungssystem baut auf dem weit verbreiteten System.Text.Json auf und erweitert es um Funktionen, die speziell auf die Bedürfnisse von Spielentwicklern zugeschnitten sind. Dies umfasst die Unterstützung für AOT-Kompatibilität, die einfache Erweiterbarkeit durch Attribute und die Handhabung von Sammlungen und vererbten Typen. Zudem wird eine Versionierung der Modelle ermöglicht, sodass alte Speicherdaten automatisch aktualisiert werden können.
Der Introspection Generator ist das Kernstück der neuen Tools und generiert automatisch Metadaten über alle im globalen Scope sichtbaren Typen, einschließlich verschachtelter Typen. Dies ermöglicht eine performante und flexible Serialisierung, die speziell auf die Anforderungen von Spielen zugeschnitten ist.
Für Entwickler, die mit der Godot-Engine arbeiten, gibt es zusätzliche Erweiterungen, die die Serialisierung von Godot-spezifischen Typen wie Transform3D und Vector3 unterstützen. Diese Erweiterungen sind als separate Pakete verfügbar und bieten spezielle JSON-Konverter für Godot.
Der SaveFileBuilder ermöglicht es Entwicklern, komplexe Speicherstrukturen zu definieren und die Daten aus verschiedenen Teilen des Szenenbaums zu extrahieren und wiederherzustellen. Dies geschieht durch das Erstellen von SaveChunks, die als Baumstruktur organisiert sind und eine rekursive Konstruktion der Speicherdatei ermöglichen.
Unternehmens-Cockpit
Alles unter Kontrolle
Das Attribut «Management» findet sich in vielen Arten von Business Software. Reines Marketing? Nicht nur, Software zur Kontrolle und Verwaltung von Daten und Prozessen wird dem Begriff durchaus gerecht.
>>
ERP
Der digitale Zwilling des Unternehmens
Die digitale Transformation beruht in den meisten Unternehmen auf dem Einsatz von ERP-Software. Diese wird zunehmend zum entscheidenden Wettbewerbsfaktor.
>>
Programmiersprachen
Rust-nach-.NET-Compiler - ein Blick hinter die Kulissen
Ein Entwickler erklärt in einem Blogpost, was Unwinding und Panics in Rust sind und wie diese in einem Rust-to-.NET-Compiler behandelt werden.
>>
Künstliche Intelligenz
AlbiruniML, eine C#-Bibliothek für lineare Algebra und maschinelles Lernen
AlbiruniML bietet für Entwickler eine leistungsstarke Plattform für lineare Algebra und maschinelles Lernen in C#, inspiriert von TensorFlow.
>>