> For the complete documentation index, see [llms.txt](https://slashin8r.gitbook.io/universal-build-system/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://slashin8r.gitbook.io/universal-build-system/setup/getting-started.md).

# Getting Started

**Universal Build System** can be setup in just a few simple steps. Add **UBS\_Component** to your **PlayerController** and add **UBS\_Interface** to your **PlayerController** and **GameInstance**, then setup the two interface functions. You then setup all your building objects in **DT\_HISM**, but it is recommended that you duplicate this data table so future updates do not overwrite your work.

<figure><img src="/files/lQos39QHEruBF7Y2D5q5" alt=""><figcaption><p>Add UBS_Component to your PlayerController.</p></figcaption></figure>

<figure><img src="/files/w2aJ2b0PlQTm47qtPVLV" alt=""><figcaption><p>Add UBS_Interface to your PlayerController.</p></figcaption></figure>

<figure><img src="/files/B8qz0pH9WbHCazrjNxZZ" alt=""><figcaption><p>Setup the GetInteractionHit interface function in your PlayerController.</p></figcaption></figure>

You will need to determine how you get your interaction hit and store it in a variable so that **UBS** can use it. The example above shows the variable I created for testing purposes. The example below shows how I am getting interaction hits.

<figure><img src="/files/BnUCKj3NcLUqt3L2atZI" alt=""><figcaption><p>I use a line trace to determine what is currently being interacted.</p></figcaption></figure>

In the example above, **GetTracePath** is a custom function I created to return the current location of the player camera and the end location of the interaction trace based on the current forward vector of the player camera and the specified length, 1000 in the example.

<figure><img src="/files/ipAZsqiM2M9Y9rBjao55" alt=""><figcaption><p>Setup your input in your PlayerController.</p></figcaption></figure>

In the example above, I am simply using left mouse button to determine which **UBS** function to run. There are multiple input examples in the **UBS\_Controller** blueprint. Use these examples as references.

<figure><img src="/files/2YaprtgYXaIfyW9EzRYo" alt=""><figcaption><p>Add UBS_Interface to your GameInstance.</p></figcaption></figure>

<figure><img src="/files/MkKEoPE6MOQNRLGFSsJa" alt=""><figcaption><p>Setup the GetSaveGameSlot interface function in your GameInstance.</p></figcaption></figure>

In the example above, I am simply hard-coding the slot name, but you would most likely have a variable that stores your current save game slot name. You will want this interface function to return that variable.

<figure><img src="/files/UPGiqaw8WTCC5loSn16P" alt=""><figcaption><p>Setup your building objects.</p></figcaption></figure>

Shown above is all the information of a single building object. You will be doing majority of your work in the data table. No need to create hundreds of individual actors, as you will instead store them all in a single data table. The next section will go over everything you need to know about the data table.


---

# 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://slashin8r.gitbook.io/universal-build-system/setup/getting-started.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.
