Getting started

From an empty Unity project to a player moving through a scene with an inventory, a weapon, and a save file.

Foundry installs as ordinary Unity packages. There is no installer and no code generation step, and your project settings are left alone. If you can add a package to a manifest, you can adopt Foundry.

The umbrella package, com.zoa.foundry, is the normal entry point. It depends on the packages a typical project wants, and the rest of the 51 are available individually when you need something more specific.

Step 1

Install

Packages/manifest.jsonjson
{
  "dependencies": {
    "com.zoa.foundry": "1.0.0"
  }
}
Add the umbrella package. Unity resolves the rest of the graph from each package's own manifest.

Step 2

Find your way around

Almost all of Foundry's authoring lives in one editor shell. The Workbench discovers authoring surfaces contributed by whichever packages you installed, so the tools you see reflect the stack you actually have.

Screenshot pending

/screenshots/workbench-shell.png

Workbench open on the hub, showing the left module rail and one authoring surface loaded.

The Workbench shell with its module rail.

The path

What to do, in order

  1. 01

    Install the umbrella package

    com.zoa.foundry pulls in the packages a normal project needs. Individual packages are installable on their own if you want a narrower surface.

  2. 02

    Open a demo scene

    The Demo package ships five tiered scenes, from a movement sandbox to a full wave arena. Opening one is the fastest way to see the systems running together before you wire your own.

  3. 03

    Place a player start

    You author a start anchor, and the composition service builds the rig at runtime from a profile. Scenes carry the anchor, so a finished player prefab never has to be saved into each one.

  4. 04

    Author your definitions

    Items, weapons, attachments, abilities and conditions are ScriptableObjects. The Workbench wizards create them against the same services the runtime uses, so nothing is generated behind your back.

Step 3

Talk to the stack

Two calls cover most integration. Resolve a service when you need an answer, and publish an event when something happened that other systems may care about. Neither requires a reference to the package on the other end.

Resolving a service and publishing an eventcsharp
using ZOA.Messaging;

// Resolve: you need an answer from whoever is providing this.
var bus = FoundryServiceRegistry.Get<IFoundryEventBus>();

// Publish: something happened, and it is fine if nobody is listening.
bus.Publish(new MySystemReady());

The full model is described in Messaging, and the rules that keep the dependency graph acyclic are in Architecture.

Next

Where to go