{"id":26671482,"url":"https://github.com/pjmagee/paradox-clausewitz-save","last_synced_at":"2026-06-10T07:31:12.716Z","repository":{"id":280861860,"uuid":"942938577","full_name":"pjmagee/paradox-clausewitz-save","owner":"pjmagee","description":"A PDS Clausewitz Engine Save file reader","archived":false,"fork":false,"pushed_at":"2025-04-26T19:17:24.000Z","size":39055,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-05-18T01:11:45.888Z","etag":null,"topics":["aot","aot-compilation","csharp","dotnet","paradox-interactive","parser-library","saves","stellaris"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pjmagee.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-03-04T23:21:26.000Z","updated_at":"2025-10-16T18:27:00.000Z","dependencies_parsed_at":null,"dependency_job_id":"ddabd4d9-ce52-4b63-9100-123e9047cc36","html_url":"https://github.com/pjmagee/paradox-clausewitz-save","commit_stats":null,"previous_names":["pjmagee/stellaris-sav-parser","pjmagee/paradox-clausewitz-save"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/pjmagee/paradox-clausewitz-save","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pjmagee%2Fparadox-clausewitz-save","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pjmagee%2Fparadox-clausewitz-save/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pjmagee%2Fparadox-clausewitz-save/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pjmagee%2Fparadox-clausewitz-save/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pjmagee","download_url":"https://codeload.github.com/pjmagee/paradox-clausewitz-save/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pjmagee%2Fparadox-clausewitz-save/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34142637,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-10T02:00:07.152Z","response_time":89,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aot","aot-compilation","csharp","dotnet","paradox-interactive","parser-library","saves","stellaris"],"created_at":"2025-03-25T23:50:32.153Z","updated_at":"2026-06-10T07:31:12.696Z","avatar_url":"https://github.com/pjmagee.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Paradox Clausewitz Save Reader\n\nThis library is a parser for the Proprietary Clausewitz Engine save file format used by Paradox Interactive games.\nIt allows you to read and the contents of these save files in a structured way.\nInspired by `System.Text.Json`, this library provides a simple API to read the data in the save files.\n\n## Key Features\n\n- **NuGet Package Publishing**: Available as packages through NuGet\n- **Source Generator for Model Binding**: Automatically generate binding code for your models\n- **Native AOT Compilation**: Full support for Native AOT compilation across Windows, Linux, and macOS on both x64 and arm64 architectures, producing fully native binaries that require absolutely no dependency on the .NET Runtime\n- **System.Text.Json Inspired API**: Familiar and intuitive API design following patterns from System.Text.Json\n\n## Supported Games\n\n| Game | Status |\n|------|--------|\n| Stellaris | ✅ Supported |\n| Hearts of Iron IV | ⏳ Pending |\n| Europa Universalis IV | ⏳ Pending |\n| Crusader Kings III | ⏳ Pending |\n| Victoria III | ⏳ Pending |\n\n## Usage Examples\n\n### NuGet Package Usage\n\n```csharp\n// Load a Stellaris save file\nStellarisSave save = StellarisSave.FromSave(\"path/to/savegame.sav\");\n\n// Access meta information\nConsole.WriteLine($\"Save Name: {save.Meta.Name}\");\nConsole.WriteLine($\"Game Version: {save.Meta.Version}\");\nConsole.WriteLine($\"Game Date: {save.Meta.Date}\"); // DateOnly format\n\n// Access game state data\nConsole.WriteLine($\"Empire Name: {save.GameState.Player.EmpireName}\");\n// Access other game state properties as needed\n```\n\n### CLI Commands\n\nThe library includes a command-line tool (`paradox-clausewitz-sav`) with the following commands:\n\n```bash\n# List all available save files for a specific game\nparadox-clausewitz-sav list --game stellaris\n\n# Show a summary of a save file (using index from list command)\nparadox-clausewitz-sav summary --game stellaris --number 1 [--format text|json] [--output file.txt]\n\n# Export a save file to JSON format\nparadox-clausewitz-sav json --game stellaris --number 1 [--output save.json]\n\n# Display version information about the tool\nparadox-clausewitz-sav info\n```\n\nThe CLI tool is available in two formats:\n\n1. As a native AOT binary that requires no .NET runtime dependency\n2. As a .NET global tool that can be installed via the dotnet CLI\n\n#### Installing as a .NET Global Tool\n\n```bash\n# Install the tool globally on your system\ndotnet tool install --global MageeSoft.Paradox.Clausewitz.Save.Cli\n\n# Update to the latest version\ndotnet tool update --global MageeSoft.Paradox.Clausewitz.Save.Cli\n```\n\n## PowerShell Scripts and Configuration\n\nThe `/etc` directory contains configuration files and utility scripts used for development, building, and maintaining the project. This follows the Unix-like convention of storing system-wide configuration files in `/etc`.\n\n## Why PowerShell?\n\nPowerShell is used across all platforms (Windows, Linux, macOS) in this project because:\n\n1. It provides true cross-platform support through PowerShell Core (Pwsh)\n2. Maintains a single codebase for scripts rather than maintaining separate bash and PowerShell versions\n3. Offers consistent behavior across different operating systems\n4. Provides rich object manipulation and .NET integration\n5. Reduces maintenance overhead by avoiding platform-specific script variants\n\nAll scripts in this directory are written in PowerShell and can be executed using PowerShell Core (pwsh) on any supported platform.\n\n## Versioning\n\nThis project uses a comprehensive build system to create native executables and packages for multiple platforms:\n\n- [Versioning Guide](versioning.md) - How version numbers are determined using GitVersion\n\nThe build system produces native executables for:\n\n- Windows (x64, arm64)\n- Linux (x64, arm64)\n- macOS (x64, arm64)\n\nAll builds use a consistent naming convention: `paradox-clausewitz-sav_[version]_[platform]_[arch].[ext]`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpjmagee%2Fparadox-clausewitz-save","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpjmagee%2Fparadox-clausewitz-save","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpjmagee%2Fparadox-clausewitz-save/lists"}