> For the complete documentation index, see [llms.txt](https://hiveminddocs.gitbook.io/hivemind/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://hiveminddocs.gitbook.io/hivemind/code-systems/ultimate-building-system-framework-ubs/introduction.md).

# Introduction

The **Ultimate Building System** is a modular framework that allows for easy customization of its default functionality. You can either use the system with its current behavior or create your own custom behavior by mixing and matching the functionalities you need.

This system is fully replicated, so users can focus on designing how the system should work without worrying about replication details.

## Buildable Definition

* This is a data asset where you set up all the data and functionality for the `buildable`, `proxy behavior`,  placement and destroyed visual effects and sounds.

***

## Buildable Proxy

* The `Buildable Proxy` is a `Proxy Actor` which acts as a temporary visualization for the `Buildable` itself. It contains the logic for snapping to another `buildable`, as well as when it can and cannot be placed.

## Proxy Behavior

* This class functions as a "Template" for you to create different kinds of `proxy behaviors` which can quickly be assigned to a `buildable definition` reducing the time it takes to set up a new definition.

### Trace Behavior

* This class is  meant to contain for determining where the `Buildable Proxy` should appear on a per frame basis.
* Here you can reuse or create new logic for how and where a proxy should be placed at.

### Placement Condition

* This class acts as a modular and easy way to reuse or create new logic for when a `buildable` can be placed.

***

## Buildable

* This actor is the physical representation of an object which has been placed.

### Actions

* `Actions` are applied to a `buildable` upon being placed. `Actions` is a modular way to reuse and create new logic for any `actions` the `buildable` should have, for example a door could have a “open/close” action to allow opening as well as a lock action-

### Tag Qualifier Conditions

* This allows you to create custom logic for assigning specific tags to `Buildables`. For example, a `Pillar` could receive the `Structure.Type.Foundation` tag when attached to the ground. This class simplifies setting up such conditions.

### Dependencies

* `Dependencies` define conditions for when a `Buildable` should be destroyed based on external factors. For example, a range-based `Dependency` could ensure that a `ceiling` must be within a certain range of a `foundation`. If this condition is not met, the `ceiling` will be destroyed.

### Sockets

* `Sockets` are objects created based on the `Socket Name` setting in the `developer settings`. When `buildable` objects are placed, `sockets` are automatically created for them, allowing `proxies` to `snap` to these `sockets`.

  Each socket contains:

  * A **Tag** entry that defines the type of socket.
  * An **Outbound Connection Tag** that specifies what this socket can connect to.
  * A **Connection** entry, which allows for multi-inbound connection capabilities.

### Socket Connections

* Socket Connections are part of a Socket, they allow for multiple buildables to be attached to the same socket with different rotational offset properties.

### Post Build Events

* The `Post Build Event` class is useful for `actions` that need to occur after a `buildable` has been placed. If you require a feature that isn't part of the default framework then this class provides the flexibility to implement it.

***

## UBS\_Component

* This `component` handles `socket management`, `snapping`, and `connections`. It's fully compatible with the `Buildable` Actor included in the plugin. This is added to a character which allows enables that character to be able place buildables.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://hiveminddocs.gitbook.io/hivemind/code-systems/ultimate-building-system-framework-ubs/introduction.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
