Skip to content

Prey Format

TheKillerey edited this page Apr 13, 2026 · 1 revision

Prey Format

The prey format splits a monolithic .materials.bin file into 10 categorised JSON files for easier editing and safer round-trip workflows. Each category contains only entries of a specific type, making it practical to edit VFX, particles, or lighting without touching material definitions.

Location: League Tools tab → Project Manager (prey buttons)


Overview

A .materials.bin file typically contains 500+ entries of mixed types: materials, VFX definitions, particle containers, lighting, visibility controllers, and more. The prey format breaks this into:

File Category Type Hashes Contents
.prey.materials materials 0xff9d3409 StaticMaterialDef entries
.prey.vfx vfx 0x45cd899f VfxSystemDefinitionData
.prey.particles particles 0xb25c0a3f, 0x24a31b3e, 0x1f1f50f2 MapPlaceableContainer, MapParticle
.prey.lighting lighting 0x169a2f9c, 0x6a4a3409, 0xdca35419 Sun, Bake, LightingV2
.prey.map map 0xdde8c114 MapContainer (chunk references)
.prey.visibility visibility 0xe21083b5, 0xc406a533, 0xec733fe2, 0xe07edfa4, 0x4275b121 All visibility controllers
.prey.banners banners 0x2d5c96cd EsportsBannerData
.prey.jungle_camps jungle_camps 0x3f04641e JungleCampData
.prey.navgrid navgrid 0xb51e8bff, 0xbdc90544, 0xbf11c509 NavGrid configs
.prey.extra extra everything else Cameras, vegetation, unknown types

Workflow

Convert to .prey

  1. Load a map in Project Manager.
  2. Click Convert to .prey.
  3. A _prey/ subdirectory is created next to your materials file:
data/maps/mapgeometry/map11/
├── sodapop_srs.materials.bin        ← original binary
└── _prey/
    ├── sodapop_srs.prey.materials   ← 400+ material defs
    ├── sodapop_srs.prey.vfx         ← VFX definitions
    ├── sodapop_srs.prey.particles   ← particle placements
    ├── sodapop_srs.prey.lighting    ← sun/bake/lighting
    ├── sodapop_srs.prey.map         ← map container
    ├── sodapop_srs.prey.visibility  ← visibility controllers
    ├── sodapop_srs.prey.banners     ← esports banners
    ├── sodapop_srs.prey.jungle_camps← jungle camp data
    ├── sodapop_srs.prey.navgrid     ← nav grid config
    └── sodapop_srs.prey.extra       ← everything else

Edit

Edit categories independently:

  • Modify particle transforms in Blender → Save All to .prey writes .prey.particles
  • Change material samplers → Save All to .prey writes .prey.materials
  • External JSON editing of any .prey.* file is also supported

Rebuild

Click Rebuild .bin from .prey to reconstruct the full .materials.bin:

  1. Reads all 10 .prey.* files
  2. Combines entries in the correct order
  3. Restores the PROP header and linked files
  4. Writes the binary

Open Prey Folder

Click Open Prey Folder to open the _prey/ directory in your file manager.


Prey File Format

Each .prey.* file is a JSON document:

{
  "format": "prey_category",
  "version": 1,
  "category": "materials",
  "source_map": "sodapop_srs",
  "header": {
    "magic": "PROP",
    "version": 3
  },
  "linked_files": ["path/to/linked.bin"],
  "entry_count": 412,
  "entries": [
    {
      "path_hash": "0xa1b2c3d4",
      "type_hash": "0xff9d3409",
      "fields": [...]
    }
  ]
}

Prey Collections (Advanced)

The addon can load prey categories into Blender as collections of empties, each representing a bin entry. This allows visual inspection and editing within Blender's Outliner.

Load

from MapgeoAddon import prey_collections

# Load particles category into Blender collections
prey_collections.load_prey_categories("_prey/sodapop_srs", ["particles"])

Save

# Export modified collections back to prey files
prey_collections.save_prey_categories("_prey/sodapop_srs", ["particles"])

Materials.prey (Porter Format)

A related but different format used by the Map Porter. A .materials.prey file contains only the differences between a source map and a base map:

{
  "format": "materials.prey",
  "version": 1,
  "source_map": "milkshake_srs",
  "base_map": "sodapop_srs",
  "categories": {
    "materials": {"count": 45, "entries": [...]},
    "vfx": {"count": 12, "entries": [...]},
    "particles": {"count": 8, "entries": [...]}
  },
  "total_added": 50,
  "total_modified": 15,
  "total_entries": 65
}

This is used to port custom map content between seasonal slots without carrying the entire materials file. See Map Porter & Patcher for details.


Round-Trip Guarantee

The prey format is designed for lossless round-trip:

.materials.bin → Convert to .prey → Rebuild .bin from .prey → identical bytes

All entry data, field ordering, linked files, and header values are preserved through the split/rebuild cycle.


Category Selection

When using Export .materials.prey (in Map Porter), you can selectively include/exclude categories:

Category Default Description
Materials On Custom StaticMaterialDef entries
VFX Definitions On Custom VfxSystemDefinitionData
Particles / MPC On Custom particle placements
Lighting On Custom sun, bake, lighting settings
Map Container On MapContainer chunk references
Visibility On Custom visibility controllers
Esports Banners On Banner data
Jungle Camps On Jungle camp visual data
Nav Grid On Navigation grid configs
Extra On Other entry types
Include Modified On Also include entries that exist in base but differ

Clone this wiki locally