# Introduction

<figure><img src="/files/rgJwfOjvLnZShnWbRD6y" alt=""><figcaption></figcaption></figure>

Gum is the best Game UI Layout tool available. It provides a flexible, efficient layout engine capable of producing virtually any layout. Gum can be used in a variety of contexts including in the [FlatRedBall game engine](https://docs.flatredball.com/gum/), [MonoGame](/gum/code/getting-started/setup/adding-initializing-gum/monogame-kni-fna.md), [raylib](/gum/code/getting-started/setup/adding-initializing-gum/raylib-raylib-cs.md), and more. Gum can also be rendered on Skia so it can be used in any environment that supports Skia such as [WPF](/gum/code/getting-started/setup/adding-initializing-gum/wpf.md), [Silk.NET](https://github.com/vchelaru/Gum/blob/main/docs/code/silk.net), and Avalonia.

The Gum layout engine can also be included in any .NET project without requiring the use of a particular graphical API.

### Powerful WYSIWYG Editor

Gum UI includes advanced layout functionality to create and preview your UI

<figure><img src="/files/Ntqzqgvkczq8MwhEXqCa" alt=""><figcaption><p>Gum UI</p></figcaption></figure>

### Object Oriented Design Focused on Reusable Controls

Gum allows the creation of components which can be instanced and customized in screens and other components

<figure><img src="/files/T60PaFUsuaqnKkJKruVO" alt=""><figcaption><p>Gum Components</p></figcaption></figure>

### Gum Objects Support Multiple Size and Position Units

Adjust an object’s origin, position units, size units, and stacking to create fluid UI

<figure><img src="/files/x26LS1KnUSRgOvNq7qZf" alt=""><figcaption><p>Position and Size Units</p></figcaption></figure>

### Simple Integration - Gum Supports Many Runtimes

Grab the NuGet, add a few lines of code, see your Gum project in game! You can use Gum with MonoGame, KNI, FNA, raylib, SkiaSharp, and many more platforms. For more information on our runtimes, see the [Getting Started](/gum/code/getting-started.md) page.

<figure><img src="/files/WqtMnPVKLlH80hpmjlUq" alt=""><figcaption><p>Gum UI in game</p></figcaption></figure>

### Interact with Gum in Code

Gum objects can be created and modified in code. Create fully-featured UI by subscribing to common UI events.

<figure><img src="/files/6cUsyqWazLhq2913GVwy" alt=""><figcaption><p>Working with Gum in Code</p></figcaption></figure>

### Time-Tested and Reliable

Gum has been used in commercial projects of all sizes - check them out in our [Showcase](/gum/gum-tool/showcase.md) page.

### Need Help?

Gum is actively maintained and provides lots of ways to get answers:

* Check the rest of the documentation
* Join the [Discord chat](https://discord.gg/EvqwmSQuBz) (shared discord with FlatRedBall)
* Create an [issue on Github](https://github.com/vchelaru/Gum/issues)


---

# 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://docs.flatredball.com/gum/gum-tool/readme.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.
