GameDevWare.Charon 2024.4.5

dotnet add package GameDevWare.Charon --version 2024.4.5
                    
NuGet\Install-Package GameDevWare.Charon -Version 2024.4.5
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="GameDevWare.Charon" Version="2024.4.5" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="GameDevWare.Charon" Version="2024.4.5" />
                    
Directory.Packages.props
<PackageReference Include="GameDevWare.Charon" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add GameDevWare.Charon --version 2024.4.5
                    
#r "nuget: GameDevWare.Charon, 2024.4.5"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#addin nuget:?package=GameDevWare.Charon&version=2024.4.5
                    
Install GameDevWare.Charon as a Cake Addin
#tool nuget:?package=GameDevWare.Charon&version=2024.4.5
                    
Install GameDevWare.Charon as a Cake Tool

Charon - Game Data Editor

<img width="894" alt="dashboard" src="https://raw.githubusercontent.com/gamedevware/charon/main/docs/assets/cover_github.png"/>

Documentation [PDF]DiscordWebsiteChangelogIssues

Plugins

<img width="100" alt="unity" src="https://raw.githubusercontent.com/gamedevware/charon/main/docs/assets/unity_logo.svg"/> <img width="100" alt="unreal engine" src="https://raw.githubusercontent.com/gamedevware/charon/main/docs/assets/unreal_engine_logo.svg"/>

[Unity Asset Store] [Unity OpenUPM] [Unreal Engine Marketplace]

Standalone

How to start with custom game engineC#TypeScript

Summary

Charon is a powerful data-driven game development tool designed to streamline the creation and management of static game data within your game. It allows both developers and game designers to efficiently model and edit game entities such as characters, items, missions, quests, and more, directly within the Unity/Unreal Engine/Browser environment. Charon simplifies the process of data manipulation, offering a user-friendly interface and automatic source code generation, which significantly reduces development time and minimizes manual coding errors. Charon also offers support for working with text in multiple languages, with easy loading and unloading of translated text.

With Charon, game developers can focus on creating engaging gameplay experiences without worrying about the technical details of managing game data. It is available in three deployment variants, including a standalone/offline application, web application, Unity and Unreal Engine plugins.

Why Choose Charon?

Charon replaces traditional spreadsheets or config files with an in-game database, offering a structured and efficient way to manage game data. It allows developers to focus on creating engaging gameplay experiences without worrying about the technical details of data management.

Is It Free?

The offline version, CLI and plugins are completely free and have no restrictions. They are distributed under a free license and allow you to distribute tools along with the game for modding games.

The online version, which allows working in large teams on shared game data, requires a subscription.

What is Charon

It is a .NET 8 console application that can be used as a command-line tool for performing CRUD operations with your game data, or as an HTTP Server to provide a UI for modeling and editing your game data. There are plugins for Unity and Unreal Engine that provide a more integrated experience while using Charon.
As with any .NET application, it can be launched as is on Windows, macOS and Linux and via dotnet.

How it works

<img width="894" alt="scheme" src="https://raw.githubusercontent.com/gamedevware/charon/main/docs/assets/how_it_works.png"/>

Unity or the Unreal Engine plugin provides a more natural experience of interacting with game data. Check out the corresponding plugin page for more information on getting started.

To get started with standalone Charon, you’ll need the following:

  • The dotnet runtime installed.
  • Use standalone tool, which you can install globally using the command:
    dotnet tool install dotnet-charon --global  
    

Once set up, follow these steps:

  • Create an empty gamedata.json file or use dotnet charon INIT gamedata.json command.
  • Launch the Charon tool by running:
    dotnet charon gamedata.json
    
    This command starts an HTTP server and automatically opens the Charon UI in your default web browser.
  • Use the intuitive web-based UI to design and edit your game data.
  • After editing, utilize Charon’s source code generator to produce language/engine-specific source code for your game data.
  • Integrate the generated source code into your game project. This allows you to load the gamedata.json file into your game in a structured and type-safe way, ensuring seamless and error-free data usage.

Editor's UI

<img width="894" alt="screenshot" src="https://raw.githubusercontent.com/gamedevware/charon/main/docs/assets/editor_screenshot.png"/>

C# Code Example

using System.IO;

using var fileStream = File.OpenRead("gamedata.json"); // or .gdjs
var gameData = new GameData(fileStream, new Formatters.GameDataLoadOptions { Format = Formatters.Format.Json });

var heroes = gameData.Heroes.AsList // -> IReadOnlyList<Hero>
// or
var heroById = gameData.AllHeroes.Find("Arbalest"); // -> Hero | null

C++ Code Example

#include "UGameData.h"

TSoftObjectPtr<UGameData> GameDataPtr = TEXT("/Game/Content/GameData");
auto GameData = GameDataPtr.LoadSynchronous(); // -> UGameData*

auto Heroes = GameData->Heroes; // -> TMap<FString,UHero*>
auto HeroById = GameData->Heroes.Find(TEXT("Arbalest")); // -> UHero**

TypeScript Code Example

import { GameData } from './game.data';
import { Formatters } from './formatters';

// Node.js
import { readFileSync } from 'fs';
const gameDataStream = readFileSync(gameDataFilePath);

// Blob or File
const gameDataStream = gameDataFileBlob.arrayBuffer();

// XMLHttpRequest (XHR)
// gameDataRequest.responseType -> "arraybuffer"
const gameDataStream = gameDataRequest.response;

const gameData = new GameData(gameDataStream, {
  format: Formatters.GameDataFormat.Json
});

let heroes = gameData.heroes; // -> readonly Hero[]
let hero = gameData.heroesAll.find("Arbalest"); // -> Hero | undefined

Haxe Code Example

import GameData;
import Formatters;
import haxe.io.Path;
sys.io.File;

var input = File.read("RpgGameData.gdjs"); // or .json
var options = new GameDataLoadOptions();
options.format = GameDataFormat.Json;
var gameData = new GameData(input, options);

var allHeroes = gameData.heroesAll.list // -> ReadOnlyArray<Hero>
var heroById = gameData.heroesAll.get("Arbalest"); // -> Hero

License

  • Generated Code - MIT
  • Plugins:
    • Unreal Engine - MIT
    • Unity - Unity Asset Store License
  • Charon - CC BY-ND - can freely use and can redistribute, as long as it is passed along unchanged and in whole.
Product Compatible and additional computed target framework versions.
.NET Framework net472 is compatible.  net48 was computed.  net481 was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETFramework 4.7.2

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
2024.4.5 166 4/29/2025
2024.4.4 224 2/4/2025
2024.4.3 252 12/19/2024
2024.3.6 297 10/18/2024
2024.3.4 205 10/2/2024
2024.2.22 164 7/9/2024
2024.2.18 204 7/1/2024
2024.2.6 156 6/11/2024
2024.2.5 130 6/10/2024
2024.1.13 346 5/6/2024
2024.1.6 445 3/3/2024
2024.1.4 280 2/20/2024
2024.1.1 267 1/15/2024
2024.1.0 253 1/4/2024
2023.4.22 274 12/13/2023
2023.4.16 259 11/14/2023
2023.4.14 334 10/30/2023
2023.4.4 320 10/15/2023
2023.4.1 243 10/5/2023
2023.4.0 261 10/3/2023
2020.1.1 2,210 3/1/2020
2020.1.0 654 1/22/2020
2019.4.3 626 12/23/2019
2019.3.10 665 11/12/2019
2019.3.9 632 10/28/2019
2019.3.8 637 10/8/2019
2019.3.5 660 9/15/2019
2019.3.1 1,074 7/22/2019
2019.2.3 1,221 5/5/2019
2019.2.0 678 4/24/2019

# 2024.4.5
Fixed forward compatibility with the latest server version.
This is the latest version of this tool, please migrate to new versions of plugins and new `dotnet-charon` tool:
- Unity https://gamedevware.github.io/charon/unity/overview.html#getting-started
- Unreal Engine https://gamedevware.github.io/charon/unreal_engine/overview.html#getting-started
- Standalone/CLI https://gamedevware.github.io/charon/standalone/overview.html#installation-and-updates
# 2024.4.4
## Game Data Editing
- Improved the Logical data type parser to accept "1" and "0" values during XLSX import.
- Fixed an issue in the Reference Repairer where referenced document IDs were not updated if they were in an unexpected format (e.g., a string instead of an integer).
- Resolved XLSX formatting errors that occurred when opening files in MS Excel.
- Fixed an XLIFF import error caused by a missing XLIFF version during deserialization.
- Corrected OPTIONS requests to files, ensuring that `Allow` headers are properly returned instead of producing an error.
- Fixed issues with language mix-ups during export due to incorrect language lookup logic, particularly affecting XLIFF source and target languages.
- Prevented non-localizable columns from being included in exports performed using the DATA I18N EXPORT command or the Export Text option in the UI.
- Updated the `SafeUpdate` import mode to preserve document IDs, as this mode guarantees that document structure and identity remain unchanged.
- Ensured the `idle timeout watcher` waits for the full data source load before tracking process idleness.
- Fixed stackoverflow in `XLSX` formatter due to recursive schemas.
- Fixed `XLIFF` formatter error due to recursive schemas.
## User Interface
- Added tooltips for document reference fields to display extra-long reference names.
- Enhanced "connection error" messaging and enabled auto-refresh of error messages upon `Retry` action.
- Added a server shutdown notification message.
- Localized all UI fonts to be served locally instead of through internet-based CDNs. This includes the 'Material Icons' font and associated icons.
## CLI
- Fixed an issue where the DATA EXPORT command failed to export XLSX files due to an error.
## Code Generation
- Fixed compilation errors in Unreal Engine versions 5.1 to 5.3 by replacing the use of `FJsonObject::GetField` with two arguments (introduced in 5.4) with a template parameter and a single argument for compatibility.
- Resolved `DateTime` and `DateTimeOffset` parsing issues caused by the use of mutually exclusive flags `DateTimeStyles.RoundtripKind` and `DateTimeStyles.AssumeUniversal`.
## Web
- Fixed limited resource rolling at the end of the month (AI tokens, Translation Words ...).