You are on page 1of 11

REAL RACING 3 CAR LIVERY EDITING

Compiled and Documented by:


Kiotu of Real Racing 3 Indonesia (RR3I).
Credits to these guys:
o Luigi Aurriema, for QuickBMS
o Barti, of Xentax, for QuickBMS scripts
o 173future, of Real Racing Tieba, for basic PVR livery editing.
o EA and FM for the Great Game.
BASIC KNOWLEDGE
So you want a distinctive livery that even the RR3 latest customization tool cant provide. Heres the how-to of how you can achieve
that.
For I have in my possession three types of device using three types of GPU that run Real Racing 3, so only these there format of RR3
textures are known by me (I dont have a Tegra device). Each of the GPU uses its own image compression technology and file
container.
GPU
PowerVR
Mali
Adreno

Image/Texture Compression
PVRTC4
ETC1
ATITC

Image/Texture Container
.PVR
.ETC.DDS
.ATC.DDS

After RR3 ver. 1.3.5, the image containers used for RR3 Car Liveries are archieved. So it cant be directly processed for extracting. We
know it was compressed simply the naming behind those containers. e.g. .PVR.Z, .ETC.DDS.Z, .ATC.DDS.Z.
With different image compression and container used, it can be a headache for some that just want to simply use a ready made
liveries done by others. But the good news is, the textures used on the three devices type are interchangeable. For example, you can
use PVR texture in both Adreno and Mali, Mali texture can be read by Adreno devices, and so on (go experiment yourself). So if you
feel tired of editing your own textures, you can go download those liveries made by others and use it for your own device albeit the
texture type of origin device.
The key to using interchangeable file format is simple, by file renaming.
For example: most of ready made liveries are done in PVR format, I downloaded a livery for BMW Z4 with filename:
2012_audi_r8_lms_ext_audi_sport_black.PVR. So just backup your original file, simply by adding another file extension, for example
.bak, copy the downloaded file to the original livery folder on your device, and rename it. Files located in:
Android
: .depot/vehicles/nameofcar/livery/
iOS
: RealRacing3.app/res/vehicles/nameofcar/livery/
And heres the renaming scheme:
GPU
PowerVR

Original filename
2012_audi_r8_lms_ext_audi_sport_black.ptc.pvr.z

Mali
Adreno

2012_audi_r8_lms_ext_audi_sport_black.etc.dds.z
2012_audi_r8_lms_ext_audi_sport_black.atc.dds.z

Rename Downloaded File to


2012_audi_r8_lms_ext_audi_sport_black.ptc.pvr
2012_audi_r8_lms_ext_audi_sport_black.pvr
2012_audi_r8_lms_ext_audi_sport_black.pvr
2012_audi_r8_lms_ext_audi_sport_black.pvr

And as you can see, RR3 will still read the unarchieved texture despite the difference in filename extension. With other types of
container you can experiment with the re-naming file within the same scheme.
BASIC STEPS OF EDITING TEXTURES FILES
So you decided that you want to make your own livery with your own resource files, heres the steps:
1. Un-Archieve the livery texture.
2. Converting unarchieved livery to editable format.
3. Edit the livery.
4. Convert back to format readable by RR3.
Those are the basic steps required, since the tools used are varied from one GPU to another, the specific steps will be described per
GPU type.

POWERVR DEVICES
Tools required:
QuickBMS, http://aluigi.altervista.org/quickbms.htm
Main tools for un-archieving the texture files.
RR3.bms, script to be used with QuickBMS, this is packed within RR3 tools in:
http://forum.xentax.com/viewtopic.php?f=16&t=10300&sid=21910eb2827dd41618f5c57d1b6d07cd
Texture Packer: http://www.codeandweb.com/texturepacker/download
Tool for converting and repacking the .pvr format
Image editing software, Photoshop, GIMP, or whatever your favorite.
Procedures:
1. Un-Archieve the livery texture.
Copy or pull the livery file(s) to your PC, put it in a distinct location for easy access.
Extract the RR3.bms downloaded from the specified link.
Open QuickBMS, select RR3.bms, select livery file (.pvr.z), select folder for extracting. Do note that you can select multiple
files for processing.
You will have then the livery file in .pvr format.

2.

Converting unarchieved livery to editable format.


Open Texture Packer, select Pro Trial if you dont wish to buy it as per now, select PVR Viewer, and pick the extracted .pvr
from previous step. Choose File, Save As, select .PNG format, and select the output folder. By now we should have an image
file ready for editing.

3.

Edit the texture file as however you like. For easier editing, you can also extract the mask file provided in the parent folder
of the car livery, use this mask for filtering the selection.

After finish with editing the texture file, flatten the images layer (if you use layers), and we need to flip the image vertically.
In Photoshop, choose Image Image Rotation Flip canvas vertical. And finally save the image (still in .PNG format).

4.

Convert back to format readable by RR3


Open Texture Packer, select from menu Add Sprites, choose the modified .PNG file. The texture will then be shown in
preview window, from the tab Sprites select the name of the .PNG file.
Change the texture setting for PVR format readable by RR3:

Tab Output
o Texture Format, select PVR,
o Check PVR Premultification
o Image Format, select PVRTC4
Tab Geometry
o Max size, select 1024
Tab Layout
o Border Padding, select 0
o Shape Padding, select 0
Image ready to convert, select menu Publish
Fill in the name in .plist format, it will then produce both .plist, dan .PVR files, the .PVR file is what we are going
to use.

Open the output folder, copy the published .PVR file to the original location in your device, use the renaming scheme as
pointed previously and youre done, go open the RR3 for testing.

MALI DEVICES
I havent found a single documented method of doing texture editing for native Mali device, heres all the steps required based on
my research and tinkering.
Tools required:
QuickBMS, http://aluigi.altervista.org/quickbms.htm
Main tools for un-archieving the texture files.
RR3.bms and ddsetc2pkm.bms, script to be used with QuickBMS, this is packed into one archieve RR3 Tools in:
http://forum.xentax.com/viewtopic.php?f=16&t=10300&sid=21910eb2827dd41618f5c57d1b6d07cd
Texture Packer: http://www.codeandweb.com/texturepacker/download
Tool for converting and repacking the .pvr format
PVRTexTool from Imagination, download the PowerVR SDK:
http://www.imgtec.com/powervr/insider/powervr-pvrtextool.asp
Hex File Editor, I recommend using HxD (its free.. :D)
http://mh-nexus.de/en/hxd/
Image editing software, Photoshop, GIMP, or whatever your favorite.
Procedures:
1. Un-Archieve the livery texture.
Copy or pull the livery file(s) to your PC, put it in a distinct location for easy access.
Extract the RR3.bms downloaded from the specified link.
Open QuickBMS, select RR3.bms, select livery file (.etc.dds.z), select folder for extracting. Do note that you can select
multiple files for processing.
You will have then the livery file in .etc.dds format. Note this file location and whatever you do dont overwrite this file,
make backup if necessary as we need this file later on.
Different from step in PowerVR textures, you need to extract this etc.dds file once more to have a readable textures.
Open QuickBMS, select ddsetc2pkm.bms, select the extracted etc.dds file and select the output folder. You will then be
prompted for an action, you can select y for overwrite or a for append (if you are converting multiple files at the same
time). The end result will be a file with .PKM extension. This file can be converted to PNG.
2.

Converting unarchieved livery to editable format.


Open Texture Packer, select Pro Trial if you dont wish to buy it as per now, select PVR Viewer, and pick the extracted
.PKM file from previous step. Choose File, Save As, select .PNG format, and select the output folder. By now we should
have an image file ready for editing.

3.

Edit the texture file as however you like. For easier editing, you can also extract the mask file provided in the parent folder
of the car livery, use this mask for filtering the selection.

After finish with editing the texture file, flatten the images layer (if you use layers) and finally save the image (still in .PNG
format).
4.

Convert back to format readable by RR3


Heres the trickiest part, we need to first create a set of mipmap for the new texture, which is different than in PowerVR of
which can worked just by the main texture size. We need to use the original .etc.dds file to do so.
Open PVRTexTool, select file. wrap raw data. I learned that by doing this we can skip all the texture containers header
and directly open the raw texture in its original compression methods (which is ETC1 in this case). Choose the original
.etc.dds file, and make sure the parameters sets match with the following:

If the correct setting is applied, the Data Offset size should automatically changed to 128 bytes, which is the correct header
size of .DDS container. Press OK, the original texture will be shown, select from the Surface Browser from the left tab, and
heres the result:

As you can see, we have 11 level of mipmaps. Mipmaps are used for decreasing the texture load on the GPU, for example
when we are viewing the 3D object from far view then the map used should be the less detailed one (small mipmap), and
vice versa.
Now we need to replace each of the mipmap level with the edited image from earlier step. Select each of the mipmap
levels, right click and select load file to surface, select the edited .PNG from previous step. Do this for all the 11 level. If
there is a warning about size miss-match just select ok to resize.

After all the mipmaps been replaced, select from button menu encode the current textures to a new format

Select the following Group/API: OpenGL ES2, ETC1, or OpenGL ES1, ETC1 if your device not supporting it.

Select encode and it will popup a new texture window, select save as, choose .dds format, and save in name other than the
original, for example I choose to name it test.dds.
Ok, so now we have the new texture file, right? No this file wont work with RR3, It took me hours to find out how make
this work, and after comparing the file with the original .DDS, it is very obvious (and simple actually) that the header of
ETC compression is different. So we need to copy the original files header to the new one. Heres how we can do it.
Open both file using Hex Editor tool. Select the new .dds file, select the first 148byte of files data (block 00-93), and
delete it.

Now select the original .dds file and select the first 128byte of files data (block 00-7F) and copy it.

Paste-insert the data into the new .dds file from offset 00000000. Save.

Thats it, the new .dds livery file is ready to be used. Copy it to the original folder on your device, and do the rename as
described earlier. Open RR3 and test it.

ADRENO DEVICES
Sorry, due to my lack of time, I havent completely done the research on Adreno texture, It probably near identical the steps on Mali
devices except for different extraction and compressing tools required.
So be a Racer, and an Artist Happy Racing Guys (and Gals).

Best Regards,
Kiotu