Team Cereustooling wiki

Place an Elden Ring asset in a Nightreign map

Partly checkedagainst the code on 2026-11-12 11:36

In a Nightreign project the Object Palette can show the assets of an Elden Ring install. Placing one copies it into the project so Nightreign can load it.

Status: the editor steps and file names below were read against the code. Whether the copied assets work in game is unproven, see the last section.

Before you start

  • A Nightreign project with a map loaded. The game picker is only shown for Nightreign projects.
  • An Elden Ring install. Smithbox finds it through Steam (app 1245620, Game\eldenring.exe). You can also set the folder by hand (step 2). A folder counts as an install when it has Data0.bhd or an asset\aeg folder.
  • The basics of the palette: place-an-object.md.

Steps

  1. Open View > Object Palette.
  2. Open the game picker, the Game: Nightreign combo next to the Map picker.
    • If Elden Ring (copied in when placed) is greyed out, no install was found. Type the path of the Elden Ring Game folder in the field below it and press Enter. An empty field means "found through Steam". The path is kept in the setting ObjectPalette_ER_Game_Path.
  3. Choose Elden Ring (copied in when placed). The palette shows "Opening Elden Ring..." while the archives open. The palette now has two tabs, Assets and Characters.
  4. Find the asset. Search, the place picker and the category chips work as for Nightreign. Map search and places use Elden Ring's own maps.
  5. Place it: drag it onto the viewport, double-click it, or use Place.
  6. Save the map.

To go back, choose Nightreign (the project) in the game picker.

What is copied at placement

The install is opened read-only, archives first and loose files second, apart from the project's own file system. Nothing is written outside the project folder. At placement the importer writes into the project:

What Path in the project
The model binder asset/aeg/aegXXX/aegXXX_YYY.geombnd.dcx
Its collision binders, where Elden Ring has them asset/aeg/aegXXX/aegXXX_YYY_l.geomhkxbnd.dcx and _h
The AET texture packs its materials use that the project lacks asset/aet/aetXXX/aetXXX_YYY.tpf.dcx
The MATBINs it uses that the project lacks or has in another version added to the project's material/allmaterial.matbinbnd.dcx

Files are written with the compression Nightreign uses. Files that need no change are copied as they are. No AssetEnvironmentGeometryParam row is added.

A placed copy takes the Elden Ring asset's name as a project alias when the project's game does not already name that model.

Id collisions

  • The id is free in the game, mod folders and project: the id is kept.
  • Nightreign has the same model under that id: nothing is copied and Nightreign's own is used. "The same model" is judged on bounds, mesh, material and node counts, material names and textures, and per-mesh triangle count and area, because Nightreign re-exported its copies.
  • Nightreign has another model under that id: the copy gets the highest free id of the same family, counting down from _999 (AEG700_043 becomes AEG700_999). Binder entries are renamed.
  • An AET pack exists in the project with other pixels under the same names: the pack gets a free AET id the same way. The model's texture paths point at the new id.
  • A MATBIN exists in the project with other content, or now points at a renamed pack: it is added under <name>_er (_er2, ... if needed) and the model's materials point at it.

Placing the same Elden Ring asset again reuses its copy and writes nothing new. If a copy was deleted from the project it is made again under the same id.

Mapping files in <project>/.smithbox/

File What it holds
er_asset_imports.json Elden Ring asset id to project asset id, AET id to copied AET id, MATBIN name to copied name.
er_asset_names.json The project's own names for Elden Ring assets (set with Edit community name... in Elden Ring mode).
Model Map Index er.json Which Elden Ring maps use which assets, for map search and the place picker.
Preview Cache/ Rendered previews.

Elden Ring characters tab

  • The Characters tab lists the install's characters with previews.
  • A character Nightreign also has under the same id is tagged "in nightreign". Placing it places Nightreign's own character, with its own AI and stats.
  • A character Nightreign does not have is tagged "needs a port". It can be browsed but not placed: Place and Replace selected are greyed out. It needs a full port (model, animations, behaviour, AI and params) first.

How to tell it worked

  • The log says Copied Elden Ring's AEGXXX_YYY into the project (with as AEGXXX_999 when the id was taken), followed by the files written and a line for each texture pack copied.
  • The asset's tooltip changes from "copied into the project when placed" to "in the project" or "in the project as AEGXXX_999".
  • The detail bar says "Elden Ring asset: Nightreign has the same model" when nothing needed copying.

What goes wrong

  • "Not an Elden Ring Game folder (no Data0.bhd)." The path in the picker is wrong.
  • The log says a texture pack or material "is in neither game". The model draws without it.
  • "The project has no material/allmaterial.matbinbnd.dcx". The importer needs that file in the project's file list to add MATBINs. This case was not tested here.
  • Elden Ring DLC assets have no community names. They show by id only until you name them.
  • Previews look grey for a while. Elden Ring assets wait longer for their shared texture packs.

Unproven in game

None of this has been tested in Nightreign itself, per the build notes of this feature:

  • Elden Ring collision (hkx) inside Nightreign.
  • Elden Ring MATBINs and shaders inside Nightreign. Materials with shaders no project material uses are logged.
  • Assets without an AssetEnvironmentGeometryParam row.

Also known: the project's allmaterial.matbinbnd.dcx becomes a full copy of the top layer's file (mod folder or game). It goes stale if that layer's file changes later.

Through the MCP bridge

place_model with game="er" copies and places an Elden Ring asset. palette_search with game="er" switches the palette. er_assets lists the install's assets and the copies made so far, and with inspect=<id> an asset's materials. set_community_name with game="er" names an Elden Ring asset. See mcp-bridge.md. For whole maps, see port-er-map.md.

Source files this page documents (5)
  • smithbox:src/Smithbox.Program/Editors/Map Editor/Tools/Object Palette/ErAssetImporter.cs
  • smithbox:src/Smithbox.Program/Editors/Map Editor/Tools/Object Palette/ErAssetLibrary.cs
  • smithbox:src/Smithbox.Program/Editors/Map Editor/Tools/Object Palette/ErAssetNames.cs
  • smithbox:src/Smithbox.Program/Editors/Map Editor/Tools/Object Palette/ObjectPaletteTool.cs
  • smithbox:Tools/mcp/smithbox_mcp.py

Changed one of these? Update this page: smithbox/place-er-asset.md (how).