GameDevWare.Charon
2024.1.4
See the version list below for details.
dotnet add package GameDevWare.Charon --version 2024.1.4
NuGet\Install-Package GameDevWare.Charon -Version 2024.1.4
<PackageReference Include="GameDevWare.Charon" Version="2024.1.4" />
paket add GameDevWare.Charon --version 2024.1.4
#r "nuget: GameDevWare.Charon, 2024.1.4"
// Install GameDevWare.Charon as a Cake Addin #addin nuget:?package=GameDevWare.Charon&version=2024.1.4 // Install GameDevWare.Charon as a Cake Tool #tool nuget:?package=GameDevWare.Charon&version=2024.1.4
Charon - Game Data Editor
<img width="894" alt="dashboard" src="https://raw.githubusercontent.com/gamedevware/charon/main/docs/assets/cover_github.png"/>
Documentation • Discord • Website • Changelog • Issues
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"/>
Standalone
How to start with custom game engine → C# • 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 4.6 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 and via Mono on macOS and Linux.
How it works
You create an empty gamedata.json
file when launching the Charon.exe application, which acts as an HTTP server. You edit your game data in the UI, then generate source code for your game engine. With this source code, you load gamedata.json
into your game and use it in a safe and structured manner.
<img width="894" alt="scheme" src="https://raw.githubusercontent.com/gamedevware/charon/main/docs/assets/how_it_works.png"/>
If you use plugins for Unity or Unreal Engine, it is a little bit easier than shown in the diagram.
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
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 | Versions Compatible and additional computed target framework versions. |
---|---|
.NET Framework | net472 is compatible. net48 was computed. net481 was computed. |
-
.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.3.6 | 170 | 10/18/2024 |
2024.3.4 | 166 | 10/2/2024 |
2024.2.22 | 135 | 7/9/2024 |
2024.2.18 | 174 | 7/1/2024 |
2024.2.6 | 124 | 6/11/2024 |
2024.2.5 | 104 | 6/10/2024 |
2024.1.13 | 306 | 5/6/2024 |
2024.1.6 | 423 | 3/3/2024 |
2024.1.4 | 257 | 2/20/2024 |
2024.1.1 | 248 | 1/15/2024 |
2024.1.0 | 228 | 1/4/2024 |
2023.4.22 | 252 | 12/13/2023 |
2023.4.16 | 248 | 11/14/2023 |
2023.4.14 | 323 | 10/30/2023 |
2023.4.4 | 308 | 10/15/2023 |
2023.4.1 | 232 | 10/5/2023 |
2023.4.0 | 244 | 10/3/2023 |
2020.1.1 | 2,154 | 3/1/2020 |
2020.1.0 | 608 | 1/22/2020 |
2019.4.3 | 581 | 12/23/2019 |
2019.3.10 | 619 | 11/12/2019 |
2019.3.9 | 580 | 10/28/2019 |
2019.3.8 | 587 | 10/8/2019 |
2019.3.5 | 614 | 9/15/2019 |
2019.3.1 | 988 | 7/22/2019 |
2019.2.3 | 1,172 | 5/5/2019 |
2019.2.0 | 625 | 4/24/2019 |
# 2024.1.3
## Game Data Editing
- Added `ChangeNumber` and `ToolsVersion` fields to exported data when mode = Publication.
- Added better messages for unexpected errors. Changed logging to include `errorId` and other contextual properties.
- Fixed `Export->Publication` causing all languages to be selected in `ProjectSettings->Languages`. Now it is limited to original languages.
- Fixed reference names not being updated after the original document changed.
- Fixed error when renaming schema.
## Code Generation
- (UE C++) Added generation of `GetXXX` blueprint functions for resolving `FGameDataDocumentReference` in UE C++ code generator.
- (UE C++) Added `ProjectSettings` class rename to prevent name collision with multiple game data modules in the same project.
- (UE C++) Updated code generator to refer to the actual 'Charon' module instead of the old 'UeCharon'.
## User Interface
- Added custom `Publish` and `Generate C++ Code` buttons when Charon is embedded in UE Editor.
- Added an error count indicator to the dashboard (on `Publish` button).
- Added a search field `Clear` button.
- Styled filters and search fields with better spacing.
- Fixed the `New XXX` button cannot be pressed around the icon area.