Inkwell runtime module — nothing on this
page needs C++, and nothing Blueprint-visible is missing from it. For task-oriented
walkthroughs, use the component pages instead:
Ink Page Display, Ink Page Stack,
Ink Page, Ink Page Reader,
Ink Page Interactor,
Ink Page widget.
How to read this page. Names are given as they appear in the Blueprint palette, with
the C++ identifier in parentheses. Boolean properties lose their
b prefix in Blueprint,
so bLoopPages is the pin Loop Pages. Functions marked pure are green nodes with no
execution pins. Where a function takes a world context object, that pin is hidden in
Blueprint and filled in for you. Functions with a Side parameter
(Ink Page Side) default it to Front — leave it alone unless you are
working with an authored page back.Ink Page Document
UInkPageDocument, display name Ink Page Document — a Data Asset holding authored page
content. Create one with right-click → Inkwell → Page Document and author it in the
Page Editor.
Properties
Every document property isBlueprintReadOnly except Page Width Cm. That is
deliberate: a page change has to invalidate the bake cache, which a directly writable array
could not guarantee, so content changes go through the functions below.
Page Setup
Paper & Ink
Default Text Style
Pages
FontReferences (hard references to every font the markup names by string path, maintained
by the Page Editor on save so the cooker can see them), ContentRevision and
LayoutVersion exist on the asset but are not exposed to Blueprint. To invalidate
bakes, call Bump Revision. The editor-only Preview Mesh properties never cook.Functions
Category Inkwell → Page Document.Ink Page Display
UInkPageDisplayComponent, display name Ink Page Display — an Actor Component that
draws one page of a document onto a mesh. Blueprintable and spawnable.
Properties
Category Inkwell → Page.Events
Functions
Category Inkwell → Page.Ink Page Stack
UInkPageStackComponent, display name Ink Page Stack — extends Ink Page Display, so
every property, event and function above is available on it unchanged. It presents the
document as a physical pile of sheets, one mesh per page, and overrides Refresh,
Resolve Target Mesh and Apply Page Size to lay out the pile.
Additional properties
Category Inkwell → Stack.Additional function
Procedural Paper is grayed out on a stack. A stack always spawns its own sheets, so the
inherited fallback sheet would only duplicate them.
Ink Page (actor)
AInkPageActor, display name Ink Page — a placeable sheet of paper. Blueprintable: make
a child Blueprint and implement the events below. Its functions forward to the display
component it owns.
Properties
Functions
Category Inkwell → Page.Implementable events
Override these in a Blueprint child of Ink Page.Ink Page Reader
UInkPageReaderComponent, display name Ink Page Reader — put it on a pawn, character or
controller to float a page up in front of the camera. This is the production
presentation component your own interaction system drives: it contains no input handling
at all, apart from the optional flip-key convenience binding below.
Properties
Category Inkwell → Reading.Events
Functions
Ink Page Interactor
UInkPageInteractorComponent, display name Ink Page Interactor — the reference
“look at a page, press a key, read it” implementation. It line-traces from the player’s
view, raises a focus event for your prompt UI, and drives an Ink Page Reader found or
created on the same actor.
Properties
Category Inkwell → Interaction.Event
Functions
Ink Page (UMG widget)
UInkPageWidget, display name Ink Page, palette category Inkwell — shows a page on
screen instead of on a mesh. It builds the page with the same code the mesh bake uses, and
scales it to fit its slot while keeping the authored aspect ratio.
Properties
All four areBlueprintReadOnly; change them with Set Document / Set Page Index.
Functions
The widget does not loop — Next Page on the last page returns false and does nothing —
and it shows page fronts only. Looping and flipping are display-component and reader
features.
Ink Page Render Library
UInkPageRenderLibrary — a Blueprint function library, so every node here is a free node
with no target pin. Category Inkwell → Page Content. World Context Object pins are
hidden and filled in for you; Side pins default to Front.
Ink Page Cache Subsystem
UInkPageCacheSubsystem — a World Subsystem holding baked ink render targets, keyed on
document path + page index + side + content revision. It exists in Game and PIE worlds
only; get it with Get World Subsystem and the Ink Page Cache Subsystem class.
Inkwell Settings accessors
UInkwellSettings, category Inkwell → Settings. Static pure nodes that load the
configured asset, or return None plus a one-per-session warning naming the setting to fix.
See Project Settings.
Demo classes
The showroom’s supporting cast is Blueprint-visible too, but exists only so the demo plays out of the box — demo/reference, not production, like the interactor. None of the production components know these classes exist, and deleting them breaks no page anywhere.
See Examples for what each does in the showroom.
Structs
Every struct here is Blueprint-constructible: right-click → Make (struct), or split the pin.Ink Page Spec
FInkPageSpec — one page. Used by Add Page, Set Page and Get Page.
A page you build yourself with an empty Layers array is normalized when you hand it to
Add Page or Set Page: Inkwell guarantees the front has a Text layer, so a page
built from Blueprint can always show markup. Back Layers are deliberately left alone.
Ink Page Layer
FInkPageLayer — one entry in a page’s stack. Exactly one payload is used, chosen by
Type; the other two are ignored.
Ink Page Text
FInkPageText — the payload of a Text layer: an independent text box, so one page can hold
a heading, a body and a signature on three layers with images stacked between them.
Ink Page Image
FInkPageImage — the payload of an Image layer. Positions and sizes are normalized 0–1
page coordinates.
Ink Drawing
FInkDrawing — the payload of a Drawing layer.
Ink Stroke
FInkStroke — a single continuous mark: one press, drag and release.
Ink Stroke Point
FInkStrokePoint — one sample along a stroke.
Ink Procedural Paper
FInkProceduralPaper — settings for paper Inkwell generates itself. The sheet is drawn
procedurally — no image assets needed — unless Texture Base is on, in which case the
ruling prints onto real stock. All the Px values are in page pixels.
Ink Paper Face
FInkPaperFace — the back’s own paper, when it differs from the front’s. Lives on the
document as Back Paper.
Ink Page Face Mapping
FInkPageFaceMapping — where on a mesh’s face the page lands. Lives on the display
component as Page Face. Every field defaults to “the whole 0–1 UV square”, which is
what the bundled sheet — and any mesh unwrapped for Inkwell — needs.
Enums
Ink Layer Type
EInkLayerType — what a layer draws.
Ink Brush Type
EInkBrushType — the look of a stroke. Each brush is drawn procedurally; Inkwell ships no
brush images.
Ink Paper Mode
EInkPaperMode — how a page’s paper is produced. See
Rendering → the page material for what each mode
does to the mesh.
Ink Back Paper Mode
EInkBackPaperMode — where the back of every sheet gets its paper.
Ink Page Side
EInkPageSide — which face of a sheet is meant.
Ink Page Turn Style
EInkPageTurnStyle — how an Ink Page Stack rearranges itself when the page changes.
Ink Page Face Fit
EInkPageFaceFit — how a Page Face mapping finds the page’s place in UV space.
Ink Paper Ruling
EInkPaperRuling — the ruling drawn across generated paper.
Next
Runtime documents
These nodes put to work: building and rewriting documents while the game runs.
Integration
Wiring the reader into an interaction system you already have.
Rendering pipeline
What the render library actually does with a page.
Layers
What the layer structs mean on the page.