Skip to content

ddon-research/ddon-extractor

Repository files navigation

ddon-extractor

CI
Documentation

A Java-based reverse-engineering library & CLI for deserializing the proprietary binary client resource files of Dragon’s Dogma Online (DDON).

The primary goal is to convert DDON’s custom binary files into human-readable JSON or YAML representations for research and game preservation purposes.

Key Features

  • 150+ supported file extensions with ~295 deserializers across all three game seasons

  • Blowfish-encrypted .arc archive unpacking and decryption

  • JSON and YAML output formats with optional metadata enrichment (NPC names, item names, quest names, translations)

  • Native executable packaging via JLink/jpackage — no JRE installation required

  • Experimental network packet deserialization (Season 3)

  • Proof-of-concept binary round-trip serialization for select formats

Documentation

For comprehensive architectural documentation — module structure, deserialization flow, season handling, extension mapping, and more — see the full documentation site:

The source for the documentation lives in the docs/ folder and the Docusaurus configuration in website/.


Prerequisites

  • JDK 25 (Eclipse Adoptium)

  • A DDON client installation (Season 1, 2, or 3)

  • (Optional) A DDON translation CSV file for metadata enrichment

Quick Start

Extract all ARC archives

./ddon-extractor resource -p true -o -m -f json -u -x D:\DDON_03040008 D:\DDON-translation\gmd.csv .

Extract all resource files

Note
This requires a prior extraction of ARC archives.
./ddon-extractor resource -p true -o -m -f json D:\DDON_03040008 D:\DDON-translation\gmd.csv .

How to Build

Gradle

The Gradle build uses the Gradle wrapper, which will be downloaded automatically on the first invocation.

./gradlew build

Native Image

./gradlew jpackage

How to Develop

IDE Setup (IntelliJ IDEA)

  1. Download and install JDK 25 (Eclipse Adoptium)

  2. Download and install JetBrains Toolbox App

  3. Install IntelliJ IDEA Community Edition via the Toolbox

  4. Open the cloned repository as a project

  5. Open any Java file and accept the suggestion to configure the JDK

  6. Verify the project structure:

    • File → Project Structure — ensure Project SDK is set to JDK 25

Documentation Development

The documentation site uses Docusaurus. To preview locally:

cd website
npm install
npm start

This starts a dev server at http://localhost:3000/ddon-extractor/.

Project Structure

ddon-extractor/
├── lib-api/         Core interfaces, data types, I/O, crypto
├── lib-common/      Shared deserializers, manager base class
├── lib-season1/     Season 1 specific deserializers
├── lib-season2/     Season 2 specific deserializers
├── lib-season3/     Season 3 specific deserializers & packets
├── cli/             picocli command-line application
├── lib-test/        Cross-module integration tests
├── docs/            Documentation source (Docusaurus)
└── website/         Docusaurus site configuration

See the Architecture Overview for a detailed module dependency graph and build system description.

Supported Client Resource Files

See the Extension Mapping documentation for the full list of 150+ supported file extensions and their deserializers.

A legacy CSV listing is also available in docs/deserialization/.

Command-Line Reference

Subcommands

$ ./ddon-extractor.exe
Usage: extract [-hV] [COMMAND]
Extracts the provided DDON resource or packet file(s).
  -h, --help      Show this help message and exit.
  -V, --version   Print version information and exit.
Commands:
  resource  Extracts the provided DDON resource file(s).
  packet    Extracts the provided DDON packet file(s).

Resource Extraction

$ ./ddon-extractor.exe resource
Usage: extract resource [-hV] [-f[=<outputFormat>]] [-m[=<addMetaInformation>]]
                        [-o[=<writeOutputToFile>]] [-p[=<runInParallel>]] [-t
                        [=<exportTextures>]] [-u[=<unpackArchives>]] [-x
                        [=<unpackArchivesExclusively>]] <clientRootFolder>
                        <clientTranslationFile> <inputFilePath>
Argument Description

<clientRootFolder>

DDON client root folder (e.g., D:\DDON_03040008). Used to derive meta information.

<clientTranslationFile>

Path to the DDON translation CSV file for JP/EN message output.

<inputFilePath>

Resource file or directory to process. The path must start from rom.

-f, --format

Output format: json (default) or yaml.

-m, --meta-information

Enrich output with resolved names and translations (NPC, item, quest, enemy names).

-o

Write output to file instead of console.

-p, --parallel

Run in parallel (default: true). Disable for debugging.

-t, --export-textures

Export .tex files as DDS images.

-u, --unpack-archives

Unpack .arc archives to disk when encountered.

-x, --unpack-archives-exclusively

Only process .arc files, skip all other types. Requires -u.

Packet Extraction

$ ./ddon-extractor.exe packet
Usage: extract packet [-hV] [-f[=<outputFormat>]] [-m[=<addMetaInformation>]]
                      [-o[=<writeOutputToFile>]] [-p[=<runInParallel>]]
                      <clientRootFolder> <inputFilePath>
Argument Description

<clientRootFolder>

DDON client resource path (e.g., D:\DDON\nativePC\rom).

<inputFilePath>

Packet file or directory to process.

-f, --format

Output format: json (default) or yaml.

-m, --meta-information

Enrich output with resolved names.

-o

Write output to file.

-p, --parallel

Run in parallel (default: true).

See the CLI & Packet System documentation for details on the command architecture and packet protocol.

License

This project is licensed under the GNU Affero General Public License v3.0.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages