Rpfm Manual

User Manual:

Open the PDF directly: View PDF PDF.
Page Count: 19

DownloadRpfm Manual
Open PDF In BrowserView PDF
Rusted PackFile Manager
By Ismael Gutiérrez González, A.K.A “Frodo45127”
Version 1.4.2, available here: https://github.com/Frodo45127/rpfm

Introduction

This is Rusted PackFile Manager, or RPFM, a modding tool for modern Total War Games. If
you've used PFM before, you can see it has a similar UI. It's done that way to make it easier to
use for modders coming from PFM. We are going to do the initial configuration first, and then
we are going to take a look at the different features RPFM has to offer.
Remember that, since version 1.0, this manual should always be in RPFM’s folder, or accessible
from “About/Open Manual” in RPFM’s Menu Bar, in case you want to check it later.

Initial Configuration

After the first start, we need to go to “PackFile/Preferences”, and configure the stuff we want.
First, the “MyMod” Path. This is the path where "MyMods" and their data will be stored. We'll
see later in the tutorial what this "MyMods" thing is. For this tutorial, we'll pick an empty
folder. Then, the games paths. These are the folders where each game is installed. We'll fill the
ones for the games we have installed.
In the end, it should look something like this:

Now we choose our “Default Game”. RPFM uses a "Game Selected" setting to configure
certain parts of the program to work with one game or another. For example, it changes the
way the mods are saved, the default folder to save them, the schema used for the tables,....
Here you can set the game that'll be selected by default when you open the program. We'll
leave it in “Warhammer 2” for this tutorial. Next, all these checkboxes. You can get an
explanation about what they do just by hovering them with the mouse, like this.

One special setting is the “Use Dark Theme” checkbox. That setting is only available in
Windows. The Linux version uses the system’s Qt Theme instead.
And finally, the “Shortcuts” button. Hitting it will open the “Shortcuts” window, were you can
see and edit all the shortcuts currently used by RPFM.

Just keep in mind that some of the shortcuts are applied when the program starts, so you’ll
have to close and re-open RPFM for the changes to take effect.
When you're done with the settings, just hit "Save". You can restore them to the defaults with
the button of the left (same for the shortcuts with their “Restore Defaults” button).
Now the last step. This is optional, but recommendable and it requires you to have the
Assembly Kit for your games installed. We have to go to “Special Stuff” and, for each game we
have, hit “Generate PAK File”. This will create a special file that will help RPFM with reference
data for table columns. It’s not enabled for Empire and Napoleon for now, but it should work
for every other game.
With that, we have completed the initial configuration. Starting on version 1.0, new updates
should continue to work with the same settings/shortcuts (as long as new big things aren’t
added), updating them automatically in case a new setting/shortcut is introduced, storing the
saved configurations in the files “settings.json” and “shortcuts.json”, in RPFM’s folder.
So now that we’re done configuring RPFM, let's take a look at the features it has to offer.

Menu Bar Features
Any action in the Menu Bar has a little tip that'll show up in the Status Bar when selecting it,
just in case you want to know what them do. So, we are going to explain here the…. Not very
common features, menu by menu.

PackFile Menu

Here, we can find the "Basic" actions: New, Open, Save, Save As, Preferences and Quit. Then
we have some extra actions:
•
•
•

•

Open From Content…/xxx.pack: Open the selected PackFile from the “Content” folder
(Workshop mods) of the game. Requires the game’s path to be configured.
Open From Data…/xxx.pack: Open the selected PackFile from the “Data” folder of the
game. Requires the game’s path to be configured.
Load All CA PackFiles: Creates a fake PackFile in memory and tries to load into it all the
data from every Vanilla PackFile of the game. Keep in mind that this takes a while and
may fail to work with PackFile with any kind of encryption.
Change PackFile Type: Allows you to change the open PackFile’s Type and configure
some options for it. About the types, for modding you’ll only want to use the “Mod”
type, and maybe, in very specific situations, the “Movie” type. “Boot”, “Release”, and
“Patch” are types used by CA PackFiles, not suitable for modding. “Other” is for weird
or special PackFiles. Do not use it.

Something to remember is that, by default, RPFM doesn’t let you save a PackFile if it’s “Boot”,
“Release” or “Patch”. If you still want to do it, enable the “Allow Editing of CA PackFiles”
setting. “Other” PackFiles and PackFiles with “Data Is Encrypted”, “Index Is Encrypted” or
“Header Is Extended” cannot be saved in any way.

MyMod’s Menu

MyMods are a way to keep data organized when creating a mod. The system is almost a 1:1
clone of PFM's “MyMods” feature so it should be easy to use for veterans too.
To those new with the concept, each “MyMod” has a PackFile (the mod) and a folder. Each
time you extract something from the PackFile, it’ll be automatically extracted in his folder,
mirroring the structure it has in the PackFile. For example, extracting a table will result in the
table being extracted at “mymod_folder/db/table_name/file”. Adding Files/Folders from the
MyMod folder will also add them mirroring the path they have. For example, adding a file from
“mymod_folder/db/table_name/file” will add the file in “PackFile/db/table_name/file”.
This makes easier to keep track of the mod files, and you can even put that folder under .git, or
any other version control system.
To create a MyMod, just hit “MyMod/New MyMod” and this dialog will appear:

Here you can configure the name and game the mod is for. Once you hit save, your new
MyMod will be created and opened.
To delete a MyMod, open it and hit “MyMod/Delete Selected MyMod”. As this operation will
delete the MyMod and the folder, a warning will popup, just in case.
Once you want to test your mod in the game, hit “MyMod/Install” and the PackFile will
automatically be copied to the /data folder of the game, ready to test. If you make any change
in the mod, you’ll need to hit install again to update the /data copy of the mod.
If you don’t want your mod to show up ingame anymore, hit “MyMod/Uninstall”. This will
remove your mod from the data folder.
Keep in mind that, to execute those last two commands, you need to have your MyMod open.
Under them you’ll find the list of MyMods you’ve created, separated by game. Only MyMod
PackFiles opened from these submenus or created using “MyMod/New MyMod” will enjoy
the features like keeping the paths when adding/extracting files. Manually opened MyMods
will be treated as regular PackFiles.

Game Selected Menu

This is where you choose the “Game Selected” we talked before. When opening PackFiles,
RPFM tries to be smart and auto-select a game, but there are some PackFiles that are the same
between games (for example, Attila and Warhammer 1 PackFiles are identical), so... just make
sure the right game is selected after opening a PackFile, as that affects how many parts of the
program work. Also, Arena support is READ-ONLY. You can’t save Arena PackFiles.

Special Stuff Menu

This has special features implemented for specific games. Here we have:
•
•

•

"Patch SiegeAI": used in Warhammer 1&2 for creating siege maps that the AI can
handle.
“Optimize PackFile”: reduces the size of your PackFile by “cleaning” your tables from
data that’s the same as the one present in the game. It also does the same for Loc
PackedFiles, if you have the game’s language set to “English”. For example, if you have
a table where all rows but one are exactly the same as the ones in vanilla tables and
another table that’s a 1:1 copy of a vanilla table without changes, RPFM remove all
the rows but the one you changed from the first table, and it’ll remove the second
table. This is meant to improve compatibility with other mods, and to reduce the size
of the PackFile.
“Generate PAK File”: generates a file from raw data from the Assembly Kit that allows
RPFM to provide a ton of reference data from tables not in the game. Or easier to
understand, if you use the dependency checker, you’ll have far fewer blue columns.
Doesn’t work for Empire and Napoleon, yet.

About Menu

Here you can find info “About Qt” (the UI toolkit use to make RPFM), “About RPFM”, a button
to open this manual in an PDF Reader, a link to RPFM's Patreon that I'm using for important
releases, and as a kind of dev blog, and the updaters. The “Check Updates” checks if there is
any update available for RPFM, and it gives you a link to download it if it finds one. And “Check
Schema Updates” checks for schema updates and downloads and applies them if you wish.
The “Schema” is what tells RPFM how to decode the tables of the game. It's very common that
after an update a few tables change his structure and are no longer decodables. To get them
to work again, the schema has to be updated.
And that's all for the Menu Bar. Now we'll take a look at the TreeView. The TreeView is where
all the files inside the PackFile will show up.

PackFile’s TreeView

That thing on the left with folders and stuff is the “TreeView”. When you Right-Click on any of
that stuff, it shows this context menu:

These are the actions we can use to alter the PackFile. Each one of them has a hotkey, in case
you’re a lazy bastard. These are all the actions in the menu:
•
•
•

•
•
•
•
•

•
•
•

•

•
•
•
•
•
•

Add…/Add File: Allows you to add one or more files to the PackFile.
Add…/Add Folder: Allows you to add a folder to the PackFile.
Add…/Add from PackFile: Allows you to add files or folders from another PackFile.
Just, select whatever you want to add, double click it and it’ll be added to your
PackFile, keeping his path.
Create…/Create Folder: Allows you to create an empty folder. Due to how PackFiles
work empty folders are not saved so, if you want to keep the folder, add a file to it.
Create …/Create Loc: Allows you to create an empty Loc PackedFile.
Create …/Create DB: Allows you to create an empty DB Table.
Create …/Create Text: Allows you to create an empty text file.
Create …/Mass-Import TSV: Allows you to import a bunch of TSV files at once. The
system is able to distinguish between DB and Loc TSV files, so you can import all of
them at the same time, and RPFM will create all the files needed, in their correct place.
Create …/Mass-Export TSV: Allows you to export as TSV every DB Table and Loc
PackedFiles inside your PackFile at once.
Open …/Open with Decoder: Allows you to open a table in the DB Decoder. Only used
to decode new tables, so…. You shouldn’t touch this.
Open …/Open Dependency Manager: Allows you to open the list of dependencies
included in the PackFile. Read a bit more to see what this Dependency Manager thing
is about.
Open …/Open with External Program: Allows you to open a PackedFile with an
external program. Keep in mind that, if you modify the file, changes will NOT BE
INCLUDED in the PackedFile itself, but in a file in the TMP folder of your system. If you
want to conserve these changes, save that file somewhere, edit it and then add it back
to the PackFile.
Open…/Open in Multi-View: Allows you to open a PackFile in a “secondary view”, so
you can have up to two PackedFiles open side-by-side.
Rename …/Rename Current: Allows you to rename whatever is selected, except the
PackFile.
Rename …/Apply Prefix to Selected: Allows you to apply a prefix to every file inside
the selected folder.
Rename …/Apply Prefix to All: Allows you to apply a prefix to every file in the PackFile.
Delete: Allows you to delete whatever is selected. If the PackFile is selected, it
removes every file from it.
Extract: Allows you to extract whatever is selected out of the PackFile.

•

Global Search: Allows you to perform a simple search across every DB Table or Loc
PackedFile inside your PackFile, providing you with a filterable list of results.

Additionally, with the shortcuts “Ctrl++” and “Ctrl+-” you can expand/collapse the entire
TreeView. This action is shortcut only, it’s not in the Contextual Menu.
Keep in mind that the availability of these actions depends on what is selected, and on the
currently loaded schemas and Dependency PackFile. For example, you can’t add anything if
you have selected a PackedFile. Also, keep in mind that if there is a “MyMod” loaded, some of
these actions may work different.
Also, when you add/modify a file, it changes in the TreeView with the following colour code:
•
•
•

Green/Dark Green: added file.
Yellow/Dark Yellow: modified file.
Magenta/Dark Magenta: added AND modified file.

This colour code is applied to the parents too, up to the PackFile, so you easily know what you
changed since the last time you saved the PackFile.
And last, the TreeView Filter. It’s that thing with buttons at the bottom of the TreeView. It
allows you to filter the contents of the TreeView by a pattern (Works with Regex!). The
buttons below the filter bar where you write the pattern are:
•

•
•

Auto-Expand Matches: automatically expand all the matched folders/files. This
combined with a ton of matches (empty pattern and +60k files in data.pack) can hang
the program for a while, so be cautious on when do you use it.
AaI: the case sensitive button. Not too much to explain here.
Filter By Folder: in case you want to find a folder and not a file (for example, searching
a table) tick this. I’ll show you the matched folder and all his contents.

Dependency Manager

The Dependency Manager allows you to modify a special list of PackFiles saved inside your
mod’s PackFile. When starting the game, the launcher will try to load the PackFiles in this list
BEFORE your PackFile. If a PackFile is not found, it’ll be ignored. This list can be used to
hardcode dependencies into your PackFile. In his Contextual Menu (right-click) you can find
some basic commands to manipulate the list, like Add Row, Insert Row, Copy, Paste…

Global Search

Global Search allows you to perform a simple search (accepts Regex) across every DB Table or
Loc PackedFile inside your PackFile, providing you with a filterable list of results in the right of
the screen. You can use it from the TreeView’s Context Menu, or with the shortcut
“Ctrl+Shift+F” while the TreeView is focused.
The “Matches” lists on the right of the screen shows every match for your search in DB Tables
(top table) and Loc PackedFiles (bottom table). Both lists are filterable (with regex support)
and contain the path to the PackedFile, Column, Row, and Matched Text. If you double-click on
them, their PackedFile will be open and the match selected. Also, these lists are updated
when you make changes, so if you, for example, remove a match from a table, that match will
be removed on-the-fly from the list.
The only inconvenient is that doing this in PackFiles with an enormous number of tables and a
brutal number of matches will cause RPFM to hang a second after each edit.

PackedFile’s Views
Now, time to see the views of each PackedFile’s Type RPFM can open.

DB PackedFiles

These are encoded tables with most of the “data” of the games. This is how a DB Table shows
up in RPFM. First, if you hover over the header of any column that references another table, is
referenced on another table, or has a “description” in the schema, you can see in the tooltip to
what that column references. All columns are also movable, so you can arrange them however
you want. Also, numeric columns have a numeric-only editor, and reference columns allows
you to choose from the referenced data or to write your own data (no more swapping tables
trying to copy paste a key).
In the bottom of the window you have a real-time filter. Select the column you want to use to
filter, if you want it to filter as “Case Sensitive”, and just write and see how the table gets
filtered as you type. It works with Regex too. For example, the following will only show up the
rows that contain in their “Key” column “v_b” or “fake”:

Here you have a “Regex Cheatsheet” in case you want to use more complex filters:
https://www.cheatography.com/davechild/cheat-sheets/regular-expressions/
One last thing to consider is that the “Filter” settings you use on a table, along with the
“Search&Replace” settings (and the “Column State” if you enabled it in the “Preferences”
dialog) are remembered so, if you close the table and open it again later, it’ll have the “Filter”
and the “Search&Replace” panels just like you left them. This memory lasts only until the open
PackFile changes, but you can configure RPFM to remember it even in that case by enabling
“Remember Table State Across PackFiles” in the “Preferences” dialog.
About sorting, you can sort columns one way or another, or remove the sorting with a third
click.
Now, with the Right-Click Menu:

These are all the actions available for tables:

•
•
•
•
•
•
•
•
•

•

•

•
•

•
•
•

•
•

Add Row: Appends an empty row at the end of the table.
Insert Row: Insert an empty row after every row with a selected cell.
Delete Row: Uses the computational power of your GPU to mine cryptocurrencies.
Joking, it deletes any row with a selected cell.
Apply…/Apply Maths to Selection: Allows you to apply a mathemathical operation to
the selected cells. Only enabled if all the selected cells are numeric cells.
Apply…/Apply Prefix to Selection: Allows you to apply a prefix to the text in the
selected cells. Only enabled if all the selected cells are text cells.
Clone…/Clone and Insert: Creates a duplicate of every row with a selected cell and
inserts the duplicate just below the original row.
Clone…/Clone and Append: Creates a duplicate of every row with a selected cell and
appends the duplicates at the end of the table.
Copy …/Copy: It copies whatever is selected to the Clipboard, in a format compatible
with Excel, LibreOffice Calc and others.
Copy …/Copy as LUA Table: It copies the entire table as a Lua “Map>” if the table has a key field, or as a series of Vectors if it hasn’t, ready to
paste it in a script. For scripters.
Paste…/Paste in Selection: It tries to paste whatever is in the Clipboard to the selected
cells. It does nothing if there are no selected cells, or the clipboard’s contents cannot
be pasted into the selected cells without errors. This works by pasting until it ran out
of selected cells, or contents to paste.
Paste…/Paste as New Rows: It tries to paste whatever is in the Clipboard as new rows,
appended at the end of the table. It doesn’t do anything if the contents of the
Clipboard cannot be pasted without errors. In case the contents could be pasted as a
“Partial” row, it creates an empty row, and paste what it can paste, leaving the rest of
the row empty.
Paste…/Paste to Fill Selection: It tries to paste whatever is in the in every selected cell.
Search: Open the “Search&Replace” panel, that you can use to search any text pattern
you want in the table, and replace it if you want. It works in combination with the
filter, so you can even do more precise searches combining them!
Import: Allows you to import TSV files to the table, overwriting whatever the table
currently has. IT’S NOT COMPATIBLE WITH PFM TSV FILES.
Export: Allows you to export the table as a TSV File, compatible with Excel, Calc….
Hide/Show…/xxx: Allows you to hide/show the columns of the table at will. If the right
setting is enabled in the preferences, this configuration is remembered when changing
between tables.
Undo: Allows you to undo… almost every action done in the table. Even TSV Imports.
Redo: Allows you to undo every undo action. This goes deeper into the rabbit hole…

Tables uses the same colour code for cells and rows as the TreeView. And that’s more or less
what you can do with a DB Table.
Apart of these, the “Del” key in DB Tables and PackedFiles acts as an “Smart Delete” key. This
means depending on what you have selected when you press “Delete” it’ll delete:
•
•

If you have selected random cells, it’ll delete their contents.
If you have selected a full row, it’ll remove the row from the table.

•

If you have a combination of both, it’ll delete rows where all cells are selected, and
it’ll delete the contents of the cells where not all cells in a row are selected. Fancy.

LOC PackedFiles

Loc PackedFiles are files that end in “.loc”, and contain most of the texts you see ingame.
When you open them, you can see they work like a… minimal DB Table. The only real
difference with tables is that it doesn’t have a “Apply Maths to Selection” action. Other than
that, it’s just a little table. Loc PackedFiles uses the same colour code for cells and rows as the
TreeView.
One thing to take into account is that if you want to write multiple lines in a cell (for example,
for multiple paragraphs in one single cell) you can write “\n” and RPFM will take care of saving
it properly, so you see multiple lines ingame. Same with “\t” for tablulations.

Text PackedFiles

RPFM can open and edit a wide variety of Text PackedFiles, such as XML, HTML, LUA, TXT,…. It
has native Undo/Redo support, Copy/Paste support… the normal things for a basic text editor.
Also, exclusive for Warhammer 2 Lua files, there is an option to “Check Syntax”. This will pass
the file through Kailua (if installed and in the Path) and return you a list of errors encountered.
Keep in mind this is experimental, exclusive to Warhammer 2 Lua Files and it may fail.

Rigid Model PackedFiles

RPFM allows some limited editing of RigidModels (3D models). It allows you to change any of
the textures each model uses and to patch Attila’s RigidModels for being loadable in
Warhammer games (just the model, it doesn’t patch collisions or logic). It doesn’t work with all
the RigidModels.

Image PackedFiles

RPFM can open a variety of image formats, such as PNG, JPG, TGA, DDS (most of them)… Just
select the image you want to see, and it’ll open in the right side of the window.

DB Decoder

RPFM has an integrated database decoder, to speed up a lot the decoding process of the
“structure” (or “Definition”) of a table. It can be opened by right-clicking on a table and
selecting “Open/Open with Decoder”. Only works on tables.
Starting by the left we have this:

This is the “PackedFile’s Data” view. It’s similar to a hexadecimal editor, but far less powerful,
and it’s not editable. In the middle you have “Raw Hexadecimal Data”, and in the right, you
have a “Decoded” version of that data. To make it easier to work with it, both scrolling and

selection are synchronised between both TextViews. So you can select a byte in the middle
view, and it’ll get selected in the right one too. The colour code here means:
•
•
•

Red: header of the table. It contains certain info about what’s in the table.
Yellow: the part of the table already decoded following the structure from the fields
table.
Magenta: the byte where the next field after all the fields from the fields table starts.

For performance reasons, this view is limited to 60 lines, which should be more than enough
the decode the first row of almost every table.
Next, to the right, we have this:

This is the “Fields List”. Here are all the columns this table has, including their title, type, if they
are a “key” column, their relation with other tables/columns, the decoded data on each field of
the first row of the table, and a “Description” field, to add commentaries that’ll show up when
hovering a cell of that column with the mouse.
If we right-click in any field of the table, we have these three self-explanatory options to help
us with the decoding:

And finally, under the table, we have this:

The “Current Field Decoded” will show up the field that starts in the magenta byte of the
“PackedFile’s Data” View, decoded in the different types the tables use. His use is simple:
check what type makes more sense (for example, in the screenshot, it’s evidently a
“StringU8”), and click the “Use this” button in his row. Doing that will add a field of that type
to the “Fields List”, and it’ll update the “PackedFile’s Data” View to show where the next field
starts. Keep doing that until you think you’ve decoded the complete first row of the table, hit
“Finish It!” at the right bottom corner, and select the table again. If the decoding is correct, the
table will open. And that’s how I met your mother you decode a table.
Under “Current Field Decoded” we have “Selected Field Decoded”. It does the same that
“Current Field Decoded”, but from the byte you selected in the “PackedFile’s Data” View. Just
select a byte and it’ll try to decode any possible field starting from it. It’s for helping decoding
complex tables.
To the right, we have a list of data about the table, and the list of versions of that table we
have a definition for. If we right-click in one of them, we can load that version (useful to have
something to start when a table gets “updated” in a patch) or delete it (in case we make a
totally disaster and don’t want it to be in the schema).

And at the bottom, we have the “Remove all fields” and “Finish It!” buttons. The first one
clears the “Fields List” and reset the decoding process. The second one saves the current
“Fields List” into the game’s schema and reloads the schema, so the changes can be used
immediately.

Extras
•

Basic shortcuts (non-editable) for EVERY Table View provided by Qt:

•

If RPFM crashes, it’ll generate an error log in his folder called “error-reportxxxxxxx.toml”. That file can help me find the problem, so if you want to help reporting
the bug, send me that file too.



Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.7
Linearized                      : No
Page Count                      : 19
Language                        : es-ES
Tagged PDF                      : Yes
XMP Toolkit                     : 3.1-701
Producer                        : Microsoft® Word 2016
Creator                         : Ismael Gutiérrez González
Creator Tool                    : Microsoft® Word 2016
Create Date                     : 2019:02:23 18:04:50+01:00
Modify Date                     : 2019:02:23 18:04:50+01:00
Document ID                     : uuid:C0D65D4F-72A6-4CCC-96A2-32A77C03B980
Instance ID                     : uuid:C0D65D4F-72A6-4CCC-96A2-32A77C03B980
Author                          : Ismael Gutiérrez González
EXIF Metadata provided by EXIF.tools

Navigation menu