📂Files and what they do

What do the different files do? How do I mod them?

Created by @manavortex Published April 10 2023 Game version: 1.6.1_DLSS

For an exhaustive list, see the W2RC File Format Table.

.app (Appearance definition)

This file contains a list of appearances with their associated components. To load them, you require a root entity .ent.

Appearance: .app files

Holds a list of components.

.ent (Entity)

Root entity

The entry point for the game to display an NPC or prop. This kind of entity usually doesn't have components by itself, but only points towards the .app file where they are defined.

From ArchiveXL item additions, this kind of file is usually called a root entity.

Mesh entity / Component entity

For player items, an .ent file can serve as a wrapper, splitting components out of the .app file by putting them in their own file.

Entity: .ent files

Components

Not a file type but an internal data structure and part of .ent or .app files. Components are how the game adds anything to the in-game world, from pag3d data over player interaction prompts to explosion sounds.

Components

.inkatlas (Texture mapping)

.mesh (3d object)

A 3d object, holding appearances, materials, and rigging.

A mesh can have several submeshes, which can be displayed or hidden via chunkmasks.

.mi / .mt / .remt

A material definition for a shader. You can assign those to CMaterialInstance entries in your mesh and then define their qualities by changing their parameters.

For further detes on materials, see here. For an explanation on .mi files, see here.

Relevant properties:

Different per material — see parameters/[2] for a list of properties

e.g. BaseColor, Metalness, NormalStrength or VectorField, FresnelColor, Albedo

.streaingsector (world data

This file holds world environment information and -properties. Due to its complexity, information is grouped on its sub-page.

The whole world: .streamingsector

.xbm (Texture)

A regular texture file. Can be exported to .png via WolvenKit, edited, and imported back into the game.

If you stick to the game's naming schema, Wolvenkit will auto-detect the right import settings for you.

Normal maps

Can be either blue or yellow (inverted), both exists. For a guide how to make your own, see here.

Cyberpunk normal maps are swizzled (a technique originally employed in DTX-5).

  • The red channel stores the X axis

  • The green channel stores the Y axis

  • The blue channel is empty, since the Z-data will be calculated from red and blue.

Relevant properties:

IsGamma

Override in-game gamma (lighting)? - Set to "false" for normals - Set to "true" for diffuse/albedo and any parts of the UI

W2RC File Format Table

Extension
Description
Fully Parsed

actionanimdb

Animation

acousticdata

Audio

aiarch

Pathfinding/AI

animgraph

Animation graph

anims

Animation data

app

Mesh appearance configurations

archetypes

?

areas

Terrain related

audio_metadata

?

audiovehcurveset

?

behavior

?

bikecurveset

?

bk2

Bink video

bnk

Bink video

camcurveset

Camera curve preset

cfoliage

?

charcustpreset

Character editor preset

cminimap

Minimap

community

Quest related

conversations

Cutscene related

cooked_mlsetup

See mlsetup

cooked_anims

See anims

cookedapp

See app

credits

Configuration for credits

cubemap

6-sided cube texture

curveset

?

devices

?

dtex

?

effect

?

ent

Entity

env

Environment definition

envparam

?

envprobe

?

es

?

facialcustom

?

facialsetup

?

fb2tl

?

fnt

Font

folbrush

Foliage brush

foldest

Destructible foliage element

fp

?

gamedef

Game main configuration file

garmentlayerparams

?

genericanimdb

?

gidata

?

gradient

?

hitrepresentation

?

hp

Hair profile

ies

?

inkanim

UI animation

inkatlas

UI texture atlas

inkcharcustomization

UI character related

inkfontfamily

UI font

inkfullscreencomposition

UI

inkgamesettings

UI settings

inkhud

UI

inklayers

UI

inkmenu

UI

inkshapecollection

UI

inkstyle

UI

inktypography

UI

inkwidget

UI

interaction

UI

journal

Quest info

journaldesc

Quest info

lane_connections

?

lane_polygons

?

lane_spots

?

lights

?

lipmap

?

location

?

locopaths

?

loot

?

mappins

Pins on map

mesh

Mesh/model

mi

Instanced external shaders/materials

mlmask

Masks for multilayer supershader

mlsetup

Setup file for multilayer supershader

mltemplate

Template file for multilayer supershader

morphtarget

Blend shapes/shape keys

mt

Base shader

navmesh

AI navigation meshes

null_areas

?

opusinfo

Audio

opuspak

Audio

particle

Particles

phys

Nvidia PhysX related

physicalscene

Nvidia PhysX related

physmatlib

Nvidia PhysX related

poimappins

Map pin

psrep

?

quest

Quest

questphase

Quest progression

regionset

?

remt

Similar to mt, difference is unclear

reslist

Resource list

rig

Rig/skeleton for animation

scene

Cutscene

scenesversions

Cutscene versioning

smartobject

?

smartobjects

?

sp

Skin profile

spatial_representation

?

streamingquerydata

Terrain

streamingsector

Terrain

streamingsector_inplace

Terrain

streamingworld

Terrain

terrainsetup

Terrain

texarray

Multiple textures

traffic_collisions

?

traffic_persistent

?

voicetags

?

w2mesh

Leftover mesh file with RED3 extension

w2mi

Leftover mi file with RED3 extension

workspot

?

xbm

Texture

xcube

Texture

Generic Format

<explanation>

Generic FIle Format Table

Extension
Description

csv

Standard CSV file

wem

Audio file

Archive Format

File Structure

Name
Type/Size
Info

Custom Data

WolvenKit only. See specification of custom data below.

Files

data

Raw file data

Name
Type/Size
Info

Magic

char[4]

Constant: "RDAR"

Version

uint32

Currently 12

IndexPosition

uint64

Offset of beginning of file list

IndexSize

uint32

Size of file list

DebugPosition

uint64

Always 0

DebugSize

uint32

Always 0

Filesize

uint64

Size of file (excluding Filesize)

CustomDataLength

uint32

WolvenKit only

Custom Data (WolvenKit)

The following data only applies for archives created with WolvenKit

Name
Type/Size
Info

Magic

char[4]

Constant: "LXRS"

Version

uint32

Currently 1

Size

int32

Size of uncompressed data

ZSize

int32

Size of compressed data

PathCount

int32

Number of custom paths

PathStrings

zstring[PathCount]

Custom file paths

File List

Name
Type/Size
Info

FileTableOffset

uint32

Always 8

FileTableSize

uint32

CRC

uint64

Checksum of ???

FileEntryCount

uint32

Number of files

FileSegmentCount

uint32

Number of file segments

ResourceDependencyCount

uint32

Number of resource dependencies

FileRecords

File Record[FileEntryCount]

FileSegments

File Segment[FileSegmentCount]

ResourceDependencies

uint64[ResourceDependencyCount]

File Record

Name
Type/Size
Info

NameHash64

uint64

FNV1A64 hash of the filename

Timestamp

int64

Windows filetime of file creation

NumInlineBufferSegments

uint32

Number of inline buffers

SegmentsStart

uint32

Index of the first file segment

SegmentsEnd

uint32

Index of the last file segment

ResourceDependenciesStart

uint32

Index of the first resource dependency

ResourceDependenciesEnd

uint32

Index of the last resource dependency

SHA1Hash

uint8[20]

SHA1 hash of the file

File Segment

Name
Type/Size
Info

Offset

uint64

Offset of the data

ZSize

uint32

Size of compressed data

Size

uint32

Size of uncompressed data

Last updated

#386: Expand visual modding

Change request updated