> ## Documentation Index
> Fetch the complete documentation index at: https://docs.teriyakigaming.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Installation

> Installing Inkwell from Fab, enabling it per project, checking it worked, and the settings that matter on day one

Inkwell is a self-contained code-plus-content plugin for **Unreal Engine 5.5, 5.6, 5.7 and
5.8** — Fab lists a separate download per engine, so install the one matching your project. Its
runtime module depends on engine modules plus Enhanced Input — the engine's own input
plugin, enabled in every UE5 project by default — and on nothing else: no other plugins,
no third-party libraries, so installing it never pulls anything unexpected into your
project.

## Install from Fab

1. Acquire Inkwell on Fab.
2. Open the **Epic Games Launcher → Library**, find Inkwell in your Fab library, and choose
   **Install to Engine**, picking the engine version your project uses.
3. Restart the Unreal Editor if it was open. The plugin is now installed for every project
   on that engine version.

<Accordion title="Installing it as a project plugin instead">
  Copy the `Inkwell` folder into your project's `Plugins/` directory (create it if it does
  not exist) so the structure reads `YourProject/Plugins/Inkwell/Inkwell.uplugin`, then
  restart the editor. This is what teams that vendor their plugins in source control do.

  A project plugin installed from source has no prebuilt binaries — see
  [C++ and Blueprint-only projects](#c-and-blueprint-only-projects) below.
</Accordion>

## Enable it — per project

Installing is not enabling. Inkwell is **not enabled by default**, so every project that
uses it turns it on once:

1. Open **Edit → Plugins** and search for *Inkwell* (it is under the **Content**
   category).
2. Check **Enabled**, and restart the editor when prompted.

Inkwell declares a dependency on the **Enhanced Input** plugin, so the engine enables that
alongside it. Enhanced Input ships with the engine and is already on in every UE5 project,
so in practice this changes nothing — it is only worth knowing if your project explicitly
disabled it.

<h2 id="c-and-blueprint-only-projects">
  C++ and Blueprint-only projects
</h2>

Everything in the runtime module is Blueprint-callable — components, the page actor, the
UMG widget, the document API, even the settings accessors. A Blueprint-only project can use
100% of Inkwell without writing a line of C++ and without being converted to a C++ project.

| How you installed it             | What a Blueprint-only project needs                                                                                                                                                          |
| -------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Fab install to the engine        | Nothing. The install carries prebuilt binaries for that engine version.                                                                                                                      |
| Copied into `Plugins/` as source | A C++ toolchain (Visual Studio on Windows, Xcode on macOS). The editor offers to build the missing modules on first open; without a compiler it cannot, and will refuse to load the project. |

Adding Inkwell does not force a project to become a C++ project either way — the plugin
compiles as a plugin, not as project code.

## Where the plugin content lives

The plugin ships content mounted at **`/Inkwell/`**. To see it in the Content Browser —
including the showroom map — enable **Settings → Show Plugin Content**; it then appears
under **Plugins → Inkwell Content**.

| Path                  | What is in it                                                                                                                                                                                                                                                                                                           |
| --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `/Inkwell/Maps/`      | `L_InkwellShowroom`, the playable demo room: six podium exhibits, a gallery wall and a wall poster, readable out of the box.                                                                                                                                                                                            |
| `/Inkwell/Fonts/`     | Five open-licensed composite font families — Courier Prime, Crimson Text, Great Vibes, Kalam, Patrick Hand — with their font faces under `Fonts/Faces/`.                                                                                                                                                                |
| `/Inkwell/Materials/` | `M_PageInk` and its instance `MI_PageInk` (the page material used in game), `M_PageComposite_Preview` (the unlit twin the Page Editor previews through), and `MF_InkwellPageInk` — the material function you drop into your own materials to receive the ink.                                                           |
| `/Inkwell/Meshes/`    | `SM_PageSheet`, a page plane with clean 0–1 UVs.                                                                                                                                                                                                                                                                        |
| `/Inkwell/Textures/`  | `T_PaperPlain` (the fallback paper) and `T_InkNone` (the transparent "no ink yet" texture).                                                                                                                                                                                                                             |
| `/Inkwell/Examples/`  | The multipage journal `PD_InkwellJournal`, the journal stack Blueprint `Blueprints/BP_InkwellJournalStack`, the read-prompt widget `UI/WBP_InkwellReadPrompt`, and the Enhanced Input examples in `Input/`: `IA_Interact`, `IA_NextPage`, `IA_PreviousPage`, `IA_PutBack` and the mapping context `IMC_InkwellDefault`. |
| `/Inkwell/DemoProps/` | Everything the showroom exhibits: the bundled documents under `Documents/` (all `PD_`-prefixed — `PD_SampleNote`, `PD_Scroll`, `PD_Poster`, `PD_StickyNote`, `PD_Crayon`, `PD_Layers` and more), plus the scroll, poster board, sticky note and crumpled page meshes and materials.                                     |

Nothing in your project has to reference these paths. Every asset Inkwell loads resolves
through project settings, so any of them can be repointed at your own content.

## Check that it worked

Four things should be true after enabling the plugin and restarting:

<Steps>
  <Step title="The toolbar entry">
    A **Page Editor** dropdown button appears in the Level Editor toolbar. It lists your
    recent documents and every Page Document in the project, can create a new one, and has
    a **Documentation** entry that opens this site.
  </Step>

  <Step title="The Tools menu">
    **Tools → Inkwell** appears in the main menu, with the same entries — this is the route
    to use if your project's toolbar is customized or crowded.
  </Step>

  <Step title="The asset type">
    Right-clicking in the Content Browser offers **Inkwell → Page Document**, and creating
    one gives you an asset that opens in the **Inkwell Page Editor** window on double-click.
  </Step>

  <Step title="The plugin content">
    With **Show Plugin Content** on, **Plugins → Inkwell Content** is browsable, the five
    font families are in `/Inkwell/Fonts/`, and opening `/Inkwell/Maps/L_InkwellShowroom`
    and pressing Play puts you in the demo room. That is the whole plugin exercised end to
    end — the [quickstart](/plugins/inkwell/quickstart) starts there.
  </Step>
</Steps>

<Accordion title="The toolbar button is missing">
  Either the plugin is not enabled (**Edit → Plugins**, category *Content*), or
  **Project Settings → Plugins → Inkwell → Show Toolbar Button** has been turned off — that
  setting takes effect only after an editor restart.

  With the button hidden, the Page Editor is still reachable by double-clicking a Page
  Document, from **Tools → Inkwell**, and from the console command
  `Inkwell.OpenPageEditor <PageDocumentObjectPath>` (with no argument it logs every document
  in the project).
</Accordion>

## Settings that matter on day one

Everything lives under **Project Settings → Plugins → Inkwell** (`UInkwellSettings`). The
settings are `defaultconfig`, so changes are written to your project's
`Config/DefaultGame.ini` and travel with source control. Most of them can be left alone
forever; these are the ones worth a look before you author your first real document.

| Setting                           | Default                          | Why you would change it on day one                                                                                                                                                                                                                                          |
| --------------------------------- | -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Default Page Font**             | `/Engine/EngineFonts/Roboto`     | The font every unstyled run renders in. Out of the box that is Roboto, which reads like UI text. Point it at one of the bundled families — for example `/Inkwell/Fonts/Font_CrimsonText` — to set the project-wide look of every document in one place.                     |
| **Font Search Paths**             | `/Inkwell/Fonts`, `/Game`        | The content paths scanned for composite fonts to list in the Page Editor's font picker. Every font found is loaded to read its typeface names, so on a large project narrow `/Game` to the folder your fonts actually live in — otherwise the window hitches when it opens. |
| **Font Build Output Path**        | `/Game/Fonts`                    | Where [font import](/plugins/inkwell/authoring/fonts) writes the composite fonts it generates. Must be a writable *project* path; plugin content is read-only in a shipped plugin install.                                                                                  |
| **New Document Page Size Pixels** | `1024 × 1400`                    | The pixel size — and therefore the shape — of every Page Document you create from now on. Set it once if your project's paper is not portrait A4.                                                                                                                           |
| **Default Paper Texture**         | `/Inkwell/Textures/T_PaperPlain` | The project's paper stock: new documents start on it, Texture-mode pages without their own texture fall back to it, and generated paper with **Texture base** on prints its ruling onto it. Repoint it at your own stock and all of that follows.                           |
| **Max Page Bake Dimension**       | `4096` (clamped 64–8192)         | Safety clamp on bake resolution per axis. A document asking for more is clamped rather than allocating a render target of hundreds of megabytes. Raise it only if you genuinely author pages larger than 4K.                                                                |
| **Show Toolbar Button**           | `true`                           | Turn off if your Level Editor toolbar is crowded. Takes effect after an editor restart.                                                                                                                                                                                     |

Two more you will not touch on day one but should know exist: **Page Ink Material** and
**Page Sheet Mesh**. Repointing the first lets you draw pages with your own material (a lit
parchment shader, say) as long as it exposes the parameters listed under *Material
Parameters*; the second swaps the default sheet mesh. The full table of every setting is in
the [settings reference](/plugins/inkwell/reference/settings).

<Note>
  If a required setting is cleared or its asset fails to load, Inkwell logs one warning per
  session on `LogInkwell` naming the exact setting to fix — for example *"Set 'Project
  Settings > Plugins > Inkwell > Page Ink Material'"* — rather than failing silently. When
  something does not appear, the Output Log filtered to `LogInkwell` is the first place to
  look.
</Note>

## Before you package

<AccordionGroup>
  <Accordion title="The authoring tools strip themselves">
    Inkwell ships two modules. `Inkwell` is a Runtime module loaded at `PreDefault` and
    contains everything the game needs, baking included. `InkwellEditor` is an Editor
    module — the Page Editor window, the asset definition and factory, the menus and the
    font import tooling — and is never included in a packaged build.
  </Accordion>

  <Accordion title="Fonts cook through Font References">
    Rich-text markup stores fonts as string paths, which the cooker cannot see. Each Page
    Document carries a **Font References** array of hard references, rebuilt by the Page
    Editor's **Save Document** button. You never edit it by hand — but do save documents
    from that button, and do not delete the array.
  </Accordion>

  <Accordion title="Assets you repoint in settings">
    The setting defaults live in plugin content and cook with it. If you point a setting at
    a project asset that nothing else references, confirm it is included in the cook — for
    example through *Additional Asset Directories to Cook*.
  </Accordion>

  <Accordion title="Demo input is real input">
    Two bundled conveniences bind ordinary runtime keys, not editor-only ones. The demo
    **Ink Page Interactor**'s **Enable Default Input** binds its Interact / Put Back /
    page-turn keys (**E**, **Q**, **Left**, **Right** by default, plus the mouse wheel),
    and the production **Ink Page Reader**'s **Bind Flip Key** binds **F**. If you use
    either component, turn the option off once you bind your own input — or those keys
    stay live in the shipped game. The interactor itself, along with the reader character,
    game mode, exhibit component and prompt widget, is a demo/reference piece and not
    recommended for production use in the first place.
  </Accordion>
</AccordionGroup>

## Next

<CardGroup cols={2}>
  <Card title="Quickstart" icon="rocket" href="/plugins/inkwell/quickstart">
    Press Play in the showroom, author a document, and wire reading into your own
    interaction system.
  </Card>

  <Card title="Settings reference" icon="sliders" href="/plugins/inkwell/reference/settings">
    Every entry under Project Settings → Plugins → Inkwell, with real defaults.
  </Card>

  <Card title="Fonts" icon="font" href="/plugins/inkwell/authoring/fonts">
    The five bundled families, and importing a folder of TTFs as a family of your own.
  </Card>

  <Card title="Example content" icon="box-open" href="/plugins/inkwell/guides/examples">
    What ships in the showroom and /Inkwell/Examples/, and how each piece is wired.
  </Card>
</CardGroup>
