# Blueprint

The **Blueprint** language is an object-oriented, statically typed visual scripting tool in Unreal Engine. It enables rapid prototyping and iteration, allowing developers to define gameplay logic visually.&#x20;

{% hint style="info" %}
The manuals in this section assume you are already familiar with the fundamentals of object-oriented programming. If you're new to programming, consider starting with an introductory tutorial first.
{% endhint %}

Blueprints can help you create the following constructs:

<table data-card-size="large" data-view="cards"><thead><tr><th data-type="content-ref"></th></tr></thead><tbody><tr><td><a href="/pages/h66Nt2X9pIIQsiJvxivS">/pages/h66Nt2X9pIIQsiJvxivS</a></td></tr><tr><td><a href="/pages/aQnifewBkG3XlVy4iNUl">/pages/aQnifewBkG3XlVy4iNUl</a></td></tr><tr><td><a href="/pages/3Pzx8lbr6uXiqOJGHARv">/pages/3Pzx8lbr6uXiqOJGHARv</a></td></tr><tr><td><a href="/pages/9dcwlrzBsfPhlHzNyBM3">/pages/9dcwlrzBsfPhlHzNyBM3</a></td></tr></tbody></table>

### Under the Hood <a href="#under-the-hood" id="under-the-hood"></a>

**Blueprint** is an interpreted language that runs on a virtual machine. The [**Kismet**](#user-content-fn-1)[^1] **Compiler** compiles **Blueprints** into *byte code* instructions. There are no particular optimization mechanisms in place, and the byte code is executed as-is. The engine maintains a global jump table of *thunks* for all the procedures that are bound to C++ functions. Each call to a function is wrapped in a *frame* and pushed onto the stack. This process—context switching—adds quite a bit of overhead, making **Blueprints** slower than **C++**. You can check out the [**source code**](https://github.com/EpicGames/UnrealEngine/blob/release/Engine/Source/Editor/KismetCompiler/Public/KismetCompiler.h) to learn more.

<br>

[^1]: **Kismet** is the name of the predecessor to **Blueprints** in **Unreal Engine 3**. The name stuck around for some tools and classes in **UE4** and **UE5**.


---

# Agent Instructions: 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://unreal-voyage.gitbook.io/reference/old-manuals/programming/blueprint.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.
