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.
-
150+ supported file extensions with ~295 deserializers across all three game seasons
-
Blowfish-encrypted
.arcarchive 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
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/.
-
JDK 25 (Eclipse Adoptium)
-
A DDON client installation (Season 1, 2, or 3)
-
(Optional) A DDON translation CSV file for metadata enrichment
./ddon-extractor resource -p true -o -m -f json -u -x D:\DDON_03040008 D:\DDON-translation\gmd.csv .The Gradle build uses the Gradle wrapper, which will be downloaded automatically on the first invocation.
./gradlew build-
The Badass JLink Plugin automates the process.
-
On Windows, WiX Toolset must be installed as a prerequisite.
./gradlew jpackage-
Download and install JDK 25 (Eclipse Adoptium)
-
Download and install JetBrains Toolbox App
-
Install IntelliJ IDEA Community Edition via the Toolbox
-
Open the cloned repository as a project
-
Open any Java file and accept the suggestion to configure the JDK
-
Verify the project structure:
-
File → Project Structure— ensure Project SDK is set to JDK 25
-
The documentation site uses Docusaurus. To preview locally:
cd website
npm install
npm startThis starts a dev server at http://localhost:3000/ddon-extractor/.
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 configurationSee the Architecture Overview for a detailed module dependency graph and build system description.
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/.
$ ./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).$ ./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 |
|---|---|
|
DDON client root folder (e.g., |
|
Path to the DDON translation CSV file for JP/EN message output. |
|
Resource file or directory to process. The path must start from |
|
Output format: |
|
Enrich output with resolved names and translations (NPC, item, quest, enemy names). |
|
Write output to file instead of console. |
|
Run in parallel (default: |
|
Export |
|
Unpack |
|
Only process |
$ ./ddon-extractor.exe packet
Usage: extract packet [-hV] [-f[=<outputFormat>]] [-m[=<addMetaInformation>]]
[-o[=<writeOutputToFile>]] [-p[=<runInParallel>]]
<clientRootFolder> <inputFilePath>| Argument | Description |
|---|---|
|
DDON client resource path (e.g., |
|
Packet file or directory to process. |
|
Output format: |
|
Enrich output with resolved names. |
|
Write output to file. |
|
Run in parallel (default: |
See the CLI & Packet System documentation for details on the command architecture and packet protocol.
This project is licensed under the GNU Affero General Public License v3.0.