Craftwright
Craftwright is a C++ crafting core for Unreal Engine that plugs into the inventory you already use. Most crafting systems come inside an inventory pack, and you have to adopt that inventory to get them. Craftwright talks to inventories through a five-function interface instead: use its small built-in inventory, connect your own inventory in Blueprint or C++, or start from the included Lyra adapter template.
Recipes are data assets. Crafters queue jobs in batches, stations keep working while the player walks away, fuel burns, ingredients come from nearby chests, recipes are learned or discovered, and jobs survive save games. Everything is server-authoritative and replicated. In the editor, Craftwright checks your recipes for broken data and for crafting loops that would let players make endless items, and round-trips them through spreadsheets.
In the editor and in menus the plugin is called ta Craftwright.
Who it is for
Section titled “Who it is for”- Survival, RPG and sandbox games that need crafting at workbenches, forges and campfires, by hand or at stations, with queues and timers.
- Projects that already have an inventory, from Fab or their own, and want crafting without replacing it.
- Multiplayer games: requests are checked on the server, and queues, trays, known recipes and inventories replicate.
- Teams that balance recipes in spreadsheets and want broken recipes and item-duplication loops caught in the editor and in CI.
Features
Section titled “Features”- Works with any inventory. Five functions (count, list, remove, add, room) connect crafting to an inventory. Map your items by class, asset or id, and Find Item For External finds the Craftwright item for one of your items. See Inventories.
- Recipes as data assets. Specific items or any item with a gameplay tag (“any wood”), tools that are needed but not used up, several outputs with chances, a failure chance with partial refunds, max batch, craft time and station types. See Items, recipes and books.
- Lucky crafts and salvage. A recipe can have a Bonus Chance of a lucky unit that makes extra items (the crafter’s luck multiplies it), and can be Salvageable: players dismantle the item back into part of its ingredients (or into scrap you choose). See Lucky crafts and Salvage.
- Queues. Batches of several units, one job after another, cancel with refunds and an output tray for results that fit nowhere. Ingredients are taken when a job is queued, so they can’t be spent twice. See Crafting.
- Stations. Workbench, forge, campfire: a station has a type tag, a speed (optionally times the crafter’s own speed), its own queue that keeps running when the player leaves, an interaction range checked on the server, optional fuel burnt from its own storage, a power hook, linked chests and a pull radius for nearby shared storage. See Stations and fuel.
- Unlocks. Always known, learned (scrolls, trainers, quests, or crafting another recipe with the Learn Recipes effect) or discovered automatically the first time the crafter carries at least one item for each ingredient. Learned recipes can have a limited number of uses. See Unlocks.
- Multiplayer. Server-authoritative requests through the player’s crafter, fast-array replication of jobs and inventories (owner-only where it should be), and smooth progress bars on clients without traffic every frame. See Multiplayer.
- Save games and offline progress. Plain structs for any save system; time that passed while the game was closed is caught up on load, with an optional limit. See Save games.
- Rules you can extend. Conditions (skills, levels, quests) and effects (XP, stats, achievements) are objects you subclass in Blueprint or C++.
- Optional GAS module. Ability-system tags and attributes as conditions, attribute costs paid when a craft starts, Gameplay Effects and gameplay events after each unit, crafting speed and luck from attributes, and station speed from the station’s own attribute. See Gameplay Ability System.
- A crafting menu for keyboard, mouse and gamepad. Search, category tabs, locked recipes with how to unlock them, a salvage mode, key hints that follow the device, and a HUD tracker for pinned recipes that shows what is still missing. C++ base classes hold the logic; the example widgets are plain Widget Blueprints you restyle in the UMG designer, and every text is a property you can change and localize. See Crafting UI.
- Editor tools. A panel with every recipe, item and finding, 19 checks in the panel and in Data Validation, duplication-loop detection (salvage and lucky crafts included), CSV and JSON import with a preview of every change, HTML, CSV and JSON reports, a commandlet for CI, and a Python and Blueprint API. See Editor tools.
- Example map. Three stations (two burn fuel), a shared ore chest, resource nodes, 16 items with icons and 10 recipes that show every feature. See Installation.
How it fits together
Section titled “How it fits together”| Piece | What it is | Where it goes |
|---|---|---|
| Craftwright Item | A data asset for an item: name, icon, gameplay tags, stack size and the fields that map it to your inventory’s items. | Content Browser, Add > Craftwright |
| Craftwright Recipe | A data asset: ingredients in, outputs out, craft time, the station types that can make it, unlock, failure and refunds, conditions and effects. | Content Browser, Add > Craftwright |
| Craftwright Recipe Book | A list of recipes, which can include other books. Crafters get their recipes from books. | Content Browser, Add > Craftwright |
| Craftwright Crafter | A component: the recipes a player (or NPC) knows, its hand-crafting queue and its requests to stations. | An actor the client owns: the Player Controller, the possessed Pawn or the Player State |
| Craftwright Station | A component: a station type, its own queue, range, fuel, linked chests and pull radius. | Your workbench, forge or campfire actor |
| Craftwright Inventory | The interface crafting uses to count, take and give items, and a small replicated inventory component that implements it. Craftwright Player Inventory is the same component with Owner Only on, for players. | Next to the crafter, on stations (fuel and storage) and on chests. Or your own inventory with an adapter. |
Player Controller├─ Craftwright Crafter ── Recipe Books ──> Recipes ──> Items└─ Craftwright Player Inventory (or your inventory + an adapter)
Forge actor├─ Craftwright Station (Station Tag, Fuel Items, Pull Radius, its own queue)└─ Craftwright Inventory (fuel and storage)
Ore Chest actor└─ Craftwright Inventory (Share With Nearby Crafting)The player’s crafter sends a request to the server: “craft 3 Iron Ingots at this forge”. The server checks it (recipe known, station type, range, conditions, queue space, ingredients), takes the ingredients from the player’s inventories, the forge’s storage and nearby shared chests, and adds a job to the forge’s queue. The forge works through its queue while it has fuel, and each finished unit goes to the player’s inventories; only what fits nowhere waits in the forge’s tray.
Quick start
Section titled “Quick start”- Install the plugin and open
/TACraftwright/Examples/Maps/L_CraftwrightExampleto see everything working. - Create items, recipes and a recipe book in the Content Browser (Add > Craftwright).
- Add a Craftwright Crafter and a Craftwright Player Inventory to your Player Controller and give the crafter the book.
- Add a Craftwright Station to your workbench actor and set its Station Tag.
- Open the example crafting menu (or your own UI) with the crafter and the station.
The Quick start page walks through every step.
Editor tools
Section titled “Editor tools”Open Tools > ta Craftwright (in the tridiART section of the Tools menu) and click Scan project. The panel lists every recipe, item and finding. The same checks run in Data Validation, in the TACraftwright commandlet and from Python.
| Check | Severity |
|---|---|
| Duplication loop: a chain of recipes that gives back more than it takes; salvage and the expected share of lucky crafts count | Error |
| Salvage that gives back more than crafting used | Error |
| No outputs, empty output (also bonus and salvage outputs), empty ingredient, discovered recipe without ingredients | Error |
| Tag without items, output never made, free recipe, always fails, salvage that gives nothing back | Warning |
| Not in a recipe book, empty recipe book, empty book entry, empty condition or effect | Warning |
| Crafting loop without gain, learned recipe that no recipe teaches, learned or discovered recipe without an unlock hint, item without icon | Suggestion |
See Editor tools for every check with its rule id and message.
Supported versions
Section titled “Supported versions”| Unreal Engine | 5.0 to 5.8. On 5.0 to 5.2, Owner Only of the built-in inventory comes from the class default; see Multiplayer. |
| Runtime modules | TACraftwright, TACraftwrightGAS and TACraftwrightExamples on Win64, Mac, Linux, Android and iOS |
| Editor tools | TACraftwrightEditor on the Win64, Mac and Linux editor (not included in packaged builds) |
| Multiplayer | Server-authoritative, replicated; tested with a dedicated server and a client |
| Dependencies | Gameplay Abilities and Data Validation plugins (enabled automatically) |
| Source | Full C++ source included; Blueprint-ready API |
| License | Fab Standard License: Personal $9.99, Professional $29.99 |
| Get it | ta Craftwright on Fab |