Design game data. Ship type-safe code.

Charon replaces fragile spreadsheets and config files with a validated schema, a visual editor, and generated C#, TypeScript, C++ or Haxe classes. Designers edit. Programmers get autocomplete. Nothing breaks silently.

dnx dotnet-charon -- ./gamedata.json --createIfNotExists
dotnet tool install -g dotnet-charon && charon ./gamedata.json --createIfNotExists
openupm add com.gamedevware.charon
or Asset Store

Creates the file if missing and opens the editor in your browser. Windows · macOS · Linux.

  • Free for offline use
  • No data-size limits
  • No credit card
  • Ship the editor with your game
Charon editor screenshot: document form with schema sidebar
5.0 ★ Unity Asset Store 276 favorites 5.0 ★ Unreal / Fab 96 ★ GitHub stars
2018 Shipping since Unity plugin Aug 2018 · cloud Nov 2023
Works with
  • Unity logoUnity
  • Unreal Engine logoUnreal Engine
  • .NET / C# logo.NET / C#
  • TypeScript logoTypeScript
  • Haxe logoHaxe
  • Lua logoLua
  • GitHub Actions logoGitHub Actions

Every team hits the spreadsheet ceiling.

Formulas break silently. A renamed constant, three designer files pointing at nothing, nobody notices until the build.
Validated schema. Every reference is checked on save, on import and before publish. Deleting an item that a quest still uses is an error, not a runtime surprise.
Programmers parse strings. (float)data["stats"]["hp"] and a prayer.
Generated classes. gameData.Heroes.Find("Arbalest").Stats.Hp with IDE autocomplete. Loading, lookups and localization plumbing already written.
Designers wait on tickets. Changing a boss threshold means asking a programmer.
A real editor. Designers define schemas and fill forms. Programmers regenerate code. Nobody blocks anybody.

Model. Edit. Generate. Ship.

  1. 1

    Model your data.

    Define Hero, Item, Quest as schemas: typed fields, inheritance, references between them, localizable text, formulas.

    Charon schema editor screenshot: Hero, Item and Quest schemas with typed fields and references
  2. 2

    Edit in a real UI.

    Forms generated from your schema. Inline validation. Import from XLSX/JSON, export back. Change history.

    Charon document form screenshot with one red validation error visible
  3. 3

    Generate code.

    One command produces typed classes for C#, TypeScript, Unreal C++, Haxe or Lua. Rerun on every schema change — in the editor, from the CLI, or in CI.

    dnx dotnet-charon -- GENERATE CSHARPCODE --dataBase ./gamedata.json --outputDirectory ./Generated
  4. 4

    Ship and keep shipping.

    Publish gamedata.json with your build. Validate on every commit. Diff two versions into a patch. Apply patches at runtime for DLC, live balance updates or player mods.

    - name: Validate game data
      run: dnx dotnet-charon -- DATA VALIDATE --dataBase ./gamedata.json

Your data, as code your IDE understands.

Generated, not hand-written. MIT-licensed output. Regenerate any time.

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

var heroes = gameData.Heroes.AsList;                 // IReadOnlyList<Hero>
var hero   = gameData.AllHeroes.Find("Crossbower");  // Hero | null
import { GameData } from './game.data';
import { Formatters } from './formatters';

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

let heroes = gameData.heroes;                        // readonly Hero[]
let hero   = gameData.heroesAll.find("Crossbower");  // Hero | undefined
#include "UGameData.h"

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

auto Heroes   = GameData->Heroes;                          // TMap<FString, UHero*>
auto HeroById = GameData->Heroes.Find(TEXT("Crossbower")); // UHero**
var gameData = new GameData(sys.io.File.read("gamedata.gdjs"), options);

var heroes = gameData.heroesAll.list;              // ReadOnlyArray<Hero>
var hero   = gameData.heroesAll.get("Crossbower"); // Hero

Lua also supported. See Generating Source Code.

Everything the spreadsheet couldn't do.

Validated references
Typed fields, required values, cross-document references. Broken links are errors in the editor, on import, and in CI.
Formulas in data
Store expressions, not just numbers. Damage curves, drop rates and conditions live next to the data they describe and compile into generated code.
Localization built in
Localizable text fields. Export XLIFF 1/2, XLSX or JSON for translators, import back. Optional machine translation in cloud plans.
Spreadsheet import/export
Bulk-edit in Excel or Sheets, round-trip through XLSX/CSV. Keep spreadsheets for what they're good at.
Patch and diff icon
Patch, diff, mod
Diff two data files into a patch. Apply patches at load time for DLC, live balance, A/B tests, or community mods made with the same editor.
CLI for CI/CD
Every editor action has a command. Validate, export, generate and back up from GitHub Actions, GitLab or any runner.
AI assistant MCP icon
AI-assistant ready (MCP)
Built-in Model Context Protocol server. Claude, Cursor, Copilot and others can read schemas, edit documents and generate code over stdio. No port, no infra.
Unity & Unreal plugins
Editor opens from the engine menu. C# or C++/Blueprint code regenerates on schema change. Free on Asset Store, OpenUPM and Fab.

Pick your engine. Same data, same editor.

Unity logo

Unity

Opens from the Unity menu. C# regenerates automatically. Unity 2022.3.62f3 or later.

openupm add com.gamedevware.charon
or get it on the Asset Store
Unity docs
Unreal Engine logo

Unreal Engine

Opens from the Content Drawer. C++ structs + Blueprint nodes generated. Unreal Engine 5.3 or later.

Unreal docs
Terminal icon

Any engine (standalone)

Godot, MonoGame, custom engines, web games. Generate C#, TypeScript, Haxe or Lua.

dnx dotnet-charon -- ./gamedata.json --createIfNotExists
Standalone docs
Cloud icon

Cloud (charon.live)

Same editor, hosted. Shared projects, roles, change requests, REST API, daily backups.

Cloud docs

Standalone, CLI and both plugins are free with no project or data-size limits. Cloud edition has a free Personal plan.

Free where it matters. Paid when you need a server.

Offline — $0, forever.

CLI · Standalone app · Unity plugin · Unreal plugin

No project or data-size limits

All code generators

Validation, import/export, patch/diff, localization, MCP

Redistributable with your game (modding)

Windows / macOS / Linux

Personal

$0.00

/ month

Personal workspace

Basic project features

Daily backups

10 MiB online storage

Basic localization

CLI automation

Try it

Team

$20.00

/ month

Everything in Personal

Collaborative workspace

Up to 3 members

Up to 2 projects

AI and machine translation

Studio

$100.00

/ month

Everything in Team

Up to 15 members

Up to 5 projects

REST API access

Enterprise

$ Custom

/ month

Everything in Studio

On-premises install

AD / LDAP

Unlimited storage and backups

Migration assistance

FAQ

Is it really free?

The offline editor, CLI and engine plugins are free, with no project or data-size limits. Application is CC BY-ND, generated code is MIT. You pay only for the hosted cloud edition if your team wants shared online projects.

Do I need an internet connection?

No. Standalone and plugin editions run entirely on your machine. Your game data is a JSON file in your repo.

What if the service shuts down?

You always hold a full local copy of your data and the offline editor. Enterprise customers can run the server on-premises.

Which engines and languages?

Unity (C#), Unreal (C++ / Blueprint), and any engine via standalone with C#, TypeScript, Haxe or Lua. Request others on Discord.

Can my players mod the game with it?

Yes. Ship the free editor with your game, no royalties. Players’ changes become patch files your game applies at load.

View More

Replace the spreadsheet today.

dnx dotnet-charon -- ./gamedata.json --createIfNotExists
dotnet tool install -g dotnet-charon && charon ./gamedata.json --createIfNotExists
openupm add com.gamedevware.charon
or Asset Store