Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Next Generation Modding Tools for Empire Total War (and other Total War games)
Ruby Python C++ Other
branch: master
Failed to load latest commit information.
anim_sound_event Pretty-print floats
atlas Atlas packer and unpacker
campaign_tree_list And repacker
cpg CPG chunk list
cs2parsed 644 / 784 works
cuf Partial CUF unpacker
db Two more helper scripts
docs Esf types doc
esfxml Support both ruby and jruby even under rbenv
etwconv Support for bridge.markers format
farm_fields_tile_texture Single packer and unpacker files (19 fails, 207 correct conversions)
gfconv One of format changes is replacing Unicode strings (E/N/S2) with ASCI…
helpers Helper script to categorize Rome 2 files by type
loc Test driver
lua_snippets lua snippets
luac 32 bit warning and a bit more robustness to weird directory structures
markers Better error msg
pack Some cleanup to replace magic integers with magic strings
rigid_splines Ruby converter
rpy RPY statistics
sav Sav Repacker
schema_autodetector Schema autodetector
sounds Link to crux3D's decoder
templates That is about everything we know - up to parent_name
tile_list Repacker side
ui_converter Annotations re Version051
unit_variant Support for avatar_gen_taisho_mp.officer.unit_variant
variant_part_mesh Cleanup, one-file-at-a-time mode, README
.gitignore Simplified .gitignore
README.txt Very messy - in process of gathering a lot of bits and pieces of data


This project is collection of tools for modding Empire Total War
and related games like Napoleon Total War, especially:

* ETW-specific file format information
* Converters from ETW to mainstream formats and back
* Tools for directly modifying ETW formats as alternative to conversion
* Instructions on getting started with them all
* Links to ETW modding tools available elsewhere
* Any other basic modding instructions

What it does not contain:
* Any copyrighted data from the game
  (except possibly minimal test samples etc. under fair use)
* Generic tools for editing mainstream file formats.
* Anything related to high-level game-balance issues etc.
  The focus is just getting data out and moddable.
  It's up to you what you do with it.
* Encrypted files - they might have identical extension,
  but if they're encrypted, you're out of luck, even
  if you purchased relevant DLC.

A lot of information and code recently became available but it's
highly disorganized, and it's difficult to keep up with all the progress.

This project is very messy, with different parts ranging from mature
and fully documented to quick nasty hacks and wild guesses.
This is to be expected given rapid progress of our knowledge of
ETW formats.

= Layers =

Usually there are multiple layers of data, and figuring out one layer
isn't success yet.

For example if we find an image and it looks like something directly
displayed on screen - like an unit card, or an icon - our work is done.
If it looks like a texture, we probably need to figure out UV coordinates,
and similar minor points.

But if it doesn't look like anything? Is it map data of some sort?
A height map with gray levels corresponding to height? A few large
areas uniformly colored with 5 basic colors? What's the scale?
Which way axes go? What's the meaning of all that?
Opening one layer doesn't yet solve it.

This is most important for ESF - ESF is more or less binary
equivalent of XML, so we're down one layer. But what's the
meaning of different nodes, and different arguments?

And embedded inside such ESF might be binary data,
in which case we're have to dig even deeper.

It is similar with DB tables - their low-level schemas are usually known,
their meaning not always.

= How to recognize encrypted data =

This is easy - just compress it with gzip and see if it got smaller.
Encrypted data by its nature is impossible to compress without a key.
Almost every other data type in ETW has a lot of redundancy.
Even compressed types like .mp3, .jpg, .bik, etc. usually
have uncompressed parts like headers.

gzip is really good at turning itself on and off for different
parts of file, so even if such data is just 1%, compressed file
size will be reliably slightly smaller.

Fully encrypted files have no such redundancy, so gzipping
them makes them *larger* (as does gzipping gzipped files).

If something compresses - even just 1%, it is definitely not encrypted.
(it might still contain mix of encrypted and unencrypted parts)
If something doesn't compress, it is very likely to be encrypted.
Difference between 99% and 100% might seem small, but it's not.
Something went wrong with that request. Please try again.