# Lifting Content Out of a Pack

> Take just the room, just the table or one prefab out of any published pack — the link is cut, and the lift-out is recorded so the source stays credited.

- Source: https://diceytable.com/docs/editor/workflows/lift-out-of-a-pack
- Last verified: 2026-08-20

Sometimes you do not want a whole pack. You want *that room*, out of a game somebody published.
Or *that table*, out of a Table pack whose seat ring is right but whose model is not. Or two dice
out of a set of forty.

**Lift out** does that. It is on the `Room` and `Table` rows of the Game Editor's hierarchy
(`/editor/game/{id}`), under **Lift out of a published pack**; the prefab version is
[Copy into this project](https://diceytable.com/docs/editor/workflows/import-an-asset-pack) in the Asset pack browser.

It is the Game Editor's only. Lifting content out is composition, and a Room pack, a Table pack or
an Asset pack has nothing to compose into.

## What it does

Pick a published pack, and its content is copied into **your** project. Then the link is cut —
completely. There is no pin, no dependency, and nothing upstream can reach you afterwards. That is
the difference between lifting out and
[assigning](https://diceytable.com/docs/editor/workflows/assign-a-room-or-table): an assignment is a live relationship
you can update, and a lift-out is a copy you now own and maintain.

You can lift out of any published pack that **contains** the thing you want, not only packs that
*are* it:

| Source | What you can take |
|---|---|
| Room pack | its room |
| Table pack | its table (the seat ring) |
| Game pack | its room, its table, or its prefabs |
| Asset pack | its prefabs |

A Game pack is the interesting one. It can never be *assigned* as your room — that is not what a
game pack is — but it has a room inside it, and this is how you get at it.

The pack is read at the **exact commit** its published version resolved to, so what you get is
what that build ships, not whatever is on the author's branch today.

## Nothing happens until you have read what it drops

Every lift-out goes through the same review step as
[Extract and Detach & vendor](https://diceytable.com/docs/editor/workflows/assign-a-room-or-table): a list of everything
that will **not** come across, shown before you confirm. Nothing is written to your project until
you press the button in that dialog.

For a **room**, nothing is dropped — a room and its environment are both things a game scene can
hold, so it arrives whole.

For a **table**, the seat ring comes across and the pack's model, colliders, trigger volumes,
play-surface metrics and budget do not. Those live on the Table pack document, and a game has
nowhere to put them: the play-surface height has exactly one owner, and a game holding a second
copy would make two players compute different drag targets. Your table falls back to the built-in
default until you assign another Table pack.

> **A warning you will meet and should expect.** If a Room pack is still *assigned* to your game,
> the assignment wins when the scene is composed — so a room you lifted out would be written into
> your project and then be invisible at the table. The review says so rather than refusing, because
> "lift it out now, unassign later" is a reasonable order of work. Use **Remove** on the same row
> when you are ready.

## The lift-out is recorded

This is the part that matters, and it is not optional.

Normally your listing credits a pack because your manifest **depends** on it — the credit is
derived from the dependency, so there is no field anyone can forget to fill in. A lift-out cuts
that dependency on purpose. Without something else, the copied content would be indistinguishable
from work you did yourself.

So every lift-out writes an entry to **`attribution/lift-outs.json`** in your project:

```json
{
  "version": 1,
  "liftOuts": [
    {
      "packId": "acme.rooms",
      "version": "1.2.0",
      "commitSha": "a1b2c3d4e5f6",
      "packName": "Noir Parlour",
      "repository": "https://github.com/acme/rooms",
      "license": "CC-BY-4.0",
      "subject": "room",
      "items": ["room"],
      "liftedAt": "2026-08-20T10:00:00.000Z"
    }
  ]
}
```

It names the exact build, the licence, the repository, and **what** you took — the prefab ids, not
a count, because "three prefabs from acme.dice" is not something a reader can check.

The file is an ordinary part of your project. It is saved with your draft, published to your
repository like any other file, and read back when you re-open the project — the **Lifted out
from** list on the Room and Table rows is read off the file, not remembered. Lifting the same
thing twice updates one entry rather than adding a second; lifting from a *different version*
adds a row, because that credits a different build and both are true.

Copying does not remove the licence. The pack's terms still apply to the copy — what a lift-out
replaces is the automatic credit, not the obligation.

## Updating something you lifted out

You cannot. That is the trade.

A lifted-out room is your room now: if the original author fixes their lighting, you will not get
the fix, because there is no longer anything connecting the two. If you want the author's ongoing
work, [reference or assign the pack](https://diceytable.com/docs/editor/workflows/assign-a-room-or-table) instead —
and see [Updating a referenced pack](https://diceytable.com/docs/editor/workflows/import-an-asset-pack) for what an
update then looks like.

## See also

- [Importing an Asset Pack](https://diceytable.com/docs/editor/workflows/import-an-asset-pack)
- [Assigning a Room or Table](https://diceytable.com/docs/editor/workflows/assign-a-room-or-table)
- [Building an Asset Pack](https://diceytable.com/docs/editor/workflows/build-an-asset-pack)
