GameDevWare.Charon.Unity 2025.1.0

dotnet add package GameDevWare.Charon.Unity --version 2025.1.0                
NuGet\Install-Package GameDevWare.Charon.Unity -Version 2025.1.0                
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.Unity" Version="2025.1.0" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add GameDevWare.Charon.Unity --version 2025.1.0                
#r "nuget: GameDevWare.Charon.Unity, 2025.1.0"                
#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.
// Install GameDevWare.Charon.Unity as a Cake Addin
#addin nuget:?package=GameDevWare.Charon.Unity&version=2025.1.0

// Install GameDevWare.Charon.Unity as a Cake Tool
#tool nuget:?package=GameDevWare.Charon.Unity&version=2025.1.0                

Charon - Game Data Editor

DocumentationDiscordWebsiteChangelogIssues

Plugins

Unity Unreal Engine

Standalone

How to start with custom game engineC#TypeScript

Summary

Charon is a powerful game development tool that streamlines the game development process. It provides a structured approach to designing and modeling game data, with automatic source code generation that reduces the load on programmers and eliminates human 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.

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

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

  • The dotnet runtime installed.
  • Either Unity, the Unreal Engine plugin, or the 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 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.

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 net45 is compatible.  net451 was computed.  net452 was computed.  net46 was computed.  net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  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.5

    • 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
2025.1.0 86 2/1/2025
2024.4.2 133 12/19/2024
2024.4.1 119 11/25/2024
2024.2.19 230 7/3/2024
2024.1.7 234 3/26/2024
2024.1.6 161 3/3/2024
2023.4.16 347 11/11/2023
2023.4.14 175 10/30/2023
2023.4.10 168 10/25/2023
2023.4.5 164 10/16/2023
2023.4.4 210 10/15/2023
2023.4.1 196 10/5/2023
2023.4.0 188 10/3/2023
2021.1.1 522 3/21/2021
2019.4.3 787 12/23/2019
2019.3.6 828 10/7/2019
2019.3.5 588 9/15/2019
2019.2.3 735 5/5/2019
2019.2.2 597 5/5/2019

BREAKING CHANGE: Unity Plugin now targets .NET 4.5 instead of 3.5, very old versions (before 2010) of Unity will stop working with this plugin.
feature: added ReadJsonObject, ReadJsonArray, ReadJsonValue methods for CommandOutput
feature: make Promise and Promise<T> awaitable. They could be used in async context with `await` keywords. Example `await CharonCli.ExportAsync()`
fix: fixed error when `CharonCli.ExportAsync()`` is not capturing output of command and always raise 'No output captured during command execution.' exception.
feature: added `CharonCli.ListAsync()` command allowing to export all documents for one schema. You can pass `path = "*""` to get all documents including embedded.