Generate Unreal Engine C++ Source Code

Generates C++ for Unreal Engine source code for game data into output directory.

This command does not delete previously generated files, and it is the responsibility of the user to ensure that any previous files are removed before running the command again.


# local game data (windows)
Charon.exe GENERATE UECPPCODE --dataBase "c:\My Project\Content\gamedata.json" --outputDirectory "c:\My Project\Source\Gamedata"

# remote game data
Charon.exe GENERATE UECPPCODE --dataBase "" --outputDirectory "./My Project/Source/Gamedata" --credentials "<API-Key>"



Absolute or relative path to game data. Use quotation marks if your path contains spaces.

# local file
--dataBase "c:\My Project\Content\gamedata.json"

# remote server
--dataBase ""

The API key used to access remote server in case of –dataBase being URL.


Specifies the path where the source code should be written. It can be either an absolute or relative path to a directory. The specified directory must already be present.

# Windows
--outputDirectory "c:\My Project\Source\Gamedata"

# Linux or OSX
--outputDirectory "~/My Project/Source/Gamedata"

# Relative path
--outputDirectory "./My Project/Source/Gamedata"

Name for base class for all documents.

# name (default)
--documentClassName Document # became UDocument in generated code

# in case of custom inheritance chain
    # class SHOULD publicly inherit UDocument
--documentClassName GameDataDocument # became UGameDataDocument in generated code

Name for class containing whole in-memory game data.

# name (default)
--gameDataClassName GameData # became UGameData in generated code

# in case of name collision
--gameDataClassName MyGameData # became UMyGameData in generated code

Preprocessor constants to define. Use semicolon(;) to separate multiple values.


Indentation style for generated code.

# Tabs (default)
--indentation Tabs

# Two spaces
--indentation TwoSpaces

# Four spaces
--indentation FourSpaces

Line ending symbols for generated code.

# Windows \\r\\n (default)
--lineEndings Windows

# Unix style \\n
--lineEndings Unix

List of enabled optimization in generated code.

# Eagerly resolves and validates all references in loaded documents.
# When enabled, this optimization ensures that all references in documents are resolved and validated
# during loading. This comes with a performance cost but guarantees the validity of references.
--optimizations eagerReferenceResolution

# Opts for raw references without generating helper methods for referenced documents.
# With this optimization, the generated code will not include helper methods for accessing
# referenced documents, keeping only accessors that work with raw references.
--optimizations rawReferences

# Avoids generating helper methods for localized strings, keeping only raw accessors.
# This optimization eliminates helper methods for accessing localized text, instead providing
# accessors that deal directly with lists of localized texts.
--optimizations rawLocalizedStrings

# Disables string pooling during game data loading.
# Turning off string pooling can yield a minor performance improvement at the cost of increased
# memory usage, as it avoids reusing short strings.
--optimizations disableStringPooling

# Disables generation of code for loading game data from JSON formatted files.
# This optimization omits code related to JSON serialization, useful when JSON formatted
# game data is not used.
--optimizations disableJsonSerialization

# Disables generation of code for loading game data from Message Pack formatted files.
# Similar to DisableJsonSerialization, this option removes code related to loading data
# from Message Pack formatted files.
--optimizations disableMessagePackSerialization

# Disables generation of code related to applying patches during game data loading.
# This removes a significant portion of code that is mainly used for modding support,
# where patches are applied to game data at runtime.
--optimizations disablePatching

This command supports universal parameters.