Welcome

Current version: BETA 0.9.0, NYR

Foreward

I would like to extend my sincere thanks for purchasing the Smithy Procedural Asset Framework. If you have any issues or questions not covered in these documents, please contact me and I will do my best to resolve the problem as quickly as possible.

If you have a pressing issue please don’t go to the forums first, as I might not see it right away.

If you didn’t yet buy this asset, I hope that exploring this manual will convince you of its usefulness in your Unity workflow. If not, I hope it’s at least an enjoyable read and might give you a few new ideas for your own projects.

I plan to continue to develop and extend this system, and am constantly looking for feedback and ideas. If Smithy is missing something that you’d like to see please comment on the Unity Forums thread.

Thanks again, and if you create anything using Smithy, I’d love to take a look!

Using this Site

Nearly every control in the Smithy editor links back to this site. If at any time in the Unity editor you need more information, hold ALT and hover over an element. If it becomes highlighted (the cursor will also turn into a link pointer) click it, and a browser window will be opened to the relevant help page.

Otherwise, the site navigation is located at the top of the window, and in-page navigation is on the left-hand side of every page. Teal links can will lead you to further information about the topic.

Overview

Smithy is a tool that helps you create assets procedurally, rather than manually. Smithy works through a component called a Smithy Adapter. This adapter sits on a GameObject - any GameObject - and holds Nodes. Nodes are grouped into Plugs (they connect to other objects) and Sockets (they accept plugs). Nodes can sit anywhere in space relative to the GameObject's Transform, but Smithy is focused around adding nodes directly to object Meshes.

Adding Nodes to an Object

Nodes take a number of parameters, set in the adapter's custom inspector. These include where and how sockets and plugs link together.

In your code, you'll create Generator objects, you can pass these a GameObject with an Adapter. Smithy will find the socket nodes on that adapter, and select and instantiate objects that contain matching plug nodes. These plug objects are aligned and positioned with respect to the socket nodes (so nodes on mesh surfaces will seem to be physically connected together -- think LEGO).

Generation Example

This process happens recursively. Smithy checks newly instantiated objects for socket nodes, then generates plug objects for them as well, creating a GameObject hierarchy as simple or complex as you could want.

Generation Example

Smithy only manages the instantiation, parenting, and positioning of GameObjects (and, optionally, Materials). It doesn't interact with, or require, any other component. This means you can use Smithy to create object hierarchies with complex component behavior through scripts, other Asset utilities, and Unity's built-in component menu. Procedural AI behavior, game items, dynamic maps, vehicles, creatures, and anything else that can potentially be created by the computer, can be handled by Smithy.

Quest generation example

Smithy is probably best explained by way of example, and there are a few thouroughly-explained demos in this documentation:

Demos and Tutorials

The source code and resources for each demo are available for download on the tutorial pages.

Installation and Setup

The Smithy Asset package can be downloaded from the Unity Asset Store and, from there, imported into an existing project. All files included in the package are required. Demo assets and examples can be downloaded from individual tutorial pages in this site.

Smithy requires no additional setup, and you can immediately begin adding Adapters and Nodes. However, if it's your first time using Smithy, reading the Quick Start Tutorial is strongly recommended.

Contact

Twitter E-Mail Smithy Homepage
Unity Forums Thread Asset Store Page Report a Problem