> 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.
