# Overview

## What is Universal Build System?

**Universal Build System (UBS)** is an easy to use building system. This building system is programmed for performance. It can handle 10s of thousands of building objects rendered on screen at any time. It comes with many features to allow you to provide a custom and very unique building system for your players.

## Why use Universal Build System?

There are multiple other build systems on the marketplace, but none of them are like **Universal Build System**. **UBS** utilizes **Hierarchical Instanced Static Meshes (HISM)** to make it up to 100x more efficient than the other build systems. **UBS** is capable of rendering thousands of building pieces while still maintaining a **very high framerate**. For example, a scene utilizing 30 different building pieces for a grand total of more than 10k building pieces was rendering at 200+ FPS on a GTX1080.

**UBS** is also very efficient on the server as it drastically reduces the number of actors that are being replicated.

## How does Universal Build System work?

Like mentioned above, **Universal Build System** utilizes **Hierarchical Instanced Static Mesh** components. **HISMs** are much more efficient than standard static mesh components because only one instance of that static mesh will need to remain in memory. The other bonus of using **HISMs** is that you can still utilize the **LODs** of the static mesh.

**UBS** uses a single actor to store all of the **HISMs** that are created as building pieces are placed into your world. This is the only actor that is replicated and it is used to make sure that the server and all clients are seeing the same thing. It contains one replicated variable which stores all the information of the building pieces and is also used for saving purposes. Since this actor is replicated, it will be spawned on the server and every client. It will then spawn non replicated effects actors for building pieces that need to use other components, such as particle, niagara, and/or sound effects.

{% content-ref url="setup/getting-started" %}
[getting-started](setup/getting-started)
{% endcontent-ref %}
