MauryDev.KoGaMa.ModelAPI.KoGaMaTools
1.0.1
dotnet add package MauryDev.KoGaMa.ModelAPI.KoGaMaTools --version 1.0.1
NuGet\Install-Package MauryDev.KoGaMa.ModelAPI.KoGaMaTools -Version 1.0.1
<PackageReference Include="MauryDev.KoGaMa.ModelAPI.KoGaMaTools" Version="1.0.1" />
<PackageVersion Include="MauryDev.KoGaMa.ModelAPI.KoGaMaTools" Version="1.0.1" />
<PackageReference Include="MauryDev.KoGaMa.ModelAPI.KoGaMaTools" />
paket add MauryDev.KoGaMa.ModelAPI.KoGaMaTools --version 1.0.1
#r "nuget: MauryDev.KoGaMa.ModelAPI.KoGaMaTools, 1.0.1"
#:package MauryDev.KoGaMa.ModelAPI.KoGaMaTools@1.0.1
#addin nuget:?package=MauryDev.KoGaMa.ModelAPI.KoGaMaTools&version=1.0.1
#tool nuget:?package=MauryDev.KoGaMa.ModelAPI.KoGaMaTools&version=1.0.1
KoGaMa Model Serializer (KGMT)
A high-performance serialization library for KoGaMa model data. This project provides tools to convert complex 3D model structures (composed of cubes, materials, and coordinates) into compact binary formats for storage or network transmission.
🚀 Features
- Modern Serialization: Uses MessagePack for highly efficient, compact binary serialization.
- Legacy Support: Includes a
LegacyKGMTSerializerto maintain compatibility with older.ktmodelbinary formats. - DTO Mapping: Implements a clean separation between Domain Models (
ModelInfo,Cube) and Data Transfer Objects (CubeInfoDTO) to ensure data integrity and flexibility. - Flexible I/O: Support for
Streambased operations, direct file system saving/loading, and byte array conversion.
🛠 Technical Architecture
1. Modern Serializer (KGMTSerializer)
The modern implementation leverages MessagePack. It transforms the domain model into a flattened DTO structure before serialization. This approach reduces the payload size and increases deserialization speed.
Data Flow:
ModelInfo → ModelMapper → CubeInfoDTO[] → MessagePack Binary
2. Legacy Serializer (LegacyKGMTSerializer)
The legacy implementation uses a custom binary format identified by the KTMODEL signature. It reads and writes raw bytes and shorts, making it ideal for reading older version files.
📦 Installation
This project depends on the MessagePack NuGet package.
dotnet add package MessagePack
💻 Usage
Modern Serialization (Recommended)
Use the KGMTSerializer for new projects and optimal performance.
using MauryDev.KoGaMa.ModelAPI.KoGaMaTools;
using MauryDev.KoGaMa.ModelAPI.Model;
// 1. Create your model
ModelInfo myModel = new ModelInfo();
myModel.AddCube(new Cube {
Position = new IntVector(0, 0, 0),
Materials = new byte[6],
Corners = new byte[8]
});
// 2. Initialize serializer
var serializer = new KGMTSerializer();
// 3. Save to file
serializer.SaveToFile("model.kgmt", myModel);
// 4. Load from file
ModelInfo loadedModel = serializer.LoadFromFile("model.kgmt");
Legacy Serialization (Backward Compatibility)
Use the LegacyKGMTSerializer if you are dealing with files that start with the KTMODEL header.
using MauryDev.KoGaMa.ModelAPI.KoGaMaTools;
var legacySerializer = new LegacyKGMTSerializer();
// Load an old .ktmodel file
ModelInfo oldModel = legacySerializer.LoadFromFile("old_model.ktmodel");
// Save in legacy format
legacySerializer.SaveToFile("backup_legacy.ktmodel", oldModel);
📊 Comparison
| Feature | KGMTSerializer |
LegacyKGMTSerializer |
|---|---|---|
| Format | MessagePack (Binary) | Custom Binary (KTMODEL) |
| Speed | Very High | High |
| File Size | Extremely Compact | Compact |
| Use Case | New versions / API calls | Old file compatibility |
| Mapping | Uses DTOs | Direct Stream read/write |
📜 License
MIT License
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- MauryDev.KoGaMa.ModelAPI (>= 1.0.1)
- MessagePack (>= 3.1.7)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on MauryDev.KoGaMa.ModelAPI.KoGaMaTools:
| Package | Downloads |
|---|---|
|
MauryDev.KoGaMa.AvatarAPI.KoGaMaTools
avatar api kogama kogama-tools |
GitHub repositories
This package is not used by any popular GitHub repositories.