Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/aoemods/aoemods.essence
C# library and tools for working with Age of Empire 4's Essence engine (.sga, .rrtex, .rrgeom, .rgd currently)
https://github.com/aoemods/aoemods.essence
age-of-empires-iv aoe4 converter csharp format json mesh modding model net-6 reader rgd rrgeom rrtex sga texture wpf
Last synced: about 2 months ago
JSON representation
C# library and tools for working with Age of Empire 4's Essence engine (.sga, .rrtex, .rrgeom, .rgd currently)
- Host: GitHub
- URL: https://github.com/aoemods/aoemods.essence
- Owner: aoemods
- License: mit
- Created: 2021-11-27T00:10:01.000Z (about 3 years ago)
- Default Branch: master
- Last Pushed: 2023-11-09T23:18:38.000Z (about 1 year ago)
- Last Synced: 2024-08-31T05:23:02.686Z (5 months ago)
- Topics: age-of-empires-iv, aoe4, converter, csharp, format, json, mesh, modding, model, net-6, reader, rgd, rrgeom, rrtex, sga, texture, wpf
- Language: C#
- Homepage: http://aoemods.com
- Size: 409 KB
- Stars: 31
- Watchers: 2
- Forks: 6
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# AOEMods.Essence
[![master build status](https://github.com/aoemods/AOEMods.Essence/workflows/.NET/badge.svg?branch=master)](https://github.com/aoemods/AOEMods.Essence/actions/workflows/dotnet.yml?query=branch%3Amaster)
[![NuGet](https://img.shields.io/nuget/v/AOEMods.Essence?color=blue&label=NuGet)](https://www.nuget.org/packages/AOEMods.Essence/)
[![SonarCloud](https://sonarcloud.io/images/project_badges/sonarcloud-white.svg)](https://sonarcloud.io/summary/new_code?id=aoemods_AOEMods.Essence)C# library and tools for working with Age of Empire 4's Essence engine.
Join the AOE4 modding discord for information sharing, discussions or if you need help: https://discord.gg/h8FX9Uq3vG
## Download
See [Releases page](https://github.com/aoemods/AOEMods.Essence/releases) for downloads.## Screenshots
**Load an sga archive, convert/export an rrtex file within it**![](Media/ConvertTexture.png)
![](Media/ConvertModel.png)
![](Media/ConvertModelGltf.png)## Usage
A number of Age of Empires 4 / Essence formats are supported right now and more are being worked on.### Supported formats
- sga: Read, Convert (unpack into directory), Write
- rrtex: Read, Convert (most common image formats)
- rrgeom: Read (vertex positions, normals, metal, texture coordinates and faces), Convert (obj, gltf/glb)
- rgd: Read, Convert (xml, json), Write (xml)
- Other chunky (most other files contained in .sga archives such as .rrmaterial): Read (editor has hex view)### Editor
The editor can open sga archives, folders that act as sga archives and individual files.
After opening an archive or folder, files can be mass-exported and mass-converted. The archive
can also be edited, for example adding / renaming / removing files, and saved as an sga file again.**Note on exporting models**: the editor can export models as gltf files including their materials.
The archives containing the material and textures has to be already open in a tab in the editor
so the editor can find them.### CLI
The CLI has multiple commands. You can get the full description and list of parameters by running them without any parameters or by passing `--help`.
- `rrtex-decode `: Converts a `.rrtex` file to an image (supported extensions are `.png, .jpg, .bmp, .tga, .gif`), pass `-b` to treat paths as folders and convert all files
- `rrgeom-decode `: Converts a `.rrgeom` file to `.obj`, pass `-b` to treat paths as folders and convert all files
- `rgd-encode `: Converts a `.xml file` to a `.rgd` file, pass `-b` to treat paths as folders and convert all files
- `rgd-decode `: Converts a `.rgd` file to `.xml` (or `.json` when passing `-f json`), pass `-b` to treat paths as folders and convert all files
- `sga-pack `: Packs the input directory into a `.sga` archive
- `sga-unpack `: Unpacks a `.sga` archive into a folder### Library
The solution contains the library, command line interface and a graphical editor.**Projects**
- AOEMods.Essence: Library for working with AOE4's files
- AOEMods.Essence.CLI: Command line interface for working with AOE4's files
- AOEMods.Essence.Editor: Graphical user interface for working with AOE4's files
- AOEMods.Essence.Test: Tests for AOEMods.Essence
- AOEMods.Essence.CLI.Test: Tests for AOEMods.Essence.CLIThe library `AOEMods.Essence` consists of two main parts, one for processing the Relic Chunky format and another for processing SGA archives.
**AOEMods.Essence.Chunky**
- `AOEMods.Essence.Chunky.Core` contains classes for processing chunky files in general
- `AOEMods.Essence.Chunky.Graph` is a node graph making use of `AOEMods.Essence.Chunky.Core`
- `AOEMods.Essence.Chunky.*` uses the core and node graph functionality for processing different chunky formats.
- `AOEMods.Essence.FormatReader/Writer` unify the different format readers / writers in one reader / writer.
- `AOEMods.Essence.GltfUtil/ObjUtil` provide functions for converting models to GLTF (`.glb`) and Wavefront object (`.obj`)**AOEMods.Essence.SGA**
- `AOEMods.Essence.SGA.Core` contains classes for processing SGA archives
- `AOEMods.Essence.SGA.Graph` is a node graph making use of `AOEMods.Essence.SGA.Core`