# Introduction

<figure><img src="https://2695663588-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M_fzQmxQ1VeUFHcoo2c%2Fuploads%2Fgit-blob-cfe8630e31a342531132b6b2e0d10456bcec573d%2Fgum-logo-normal-512.png?alt=media" 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](https://docs.flatredball.com/gum/code/getting-started/setup/adding-initializing-gum/monogame-kni-fna), [raylib](https://docs.flatredball.com/gum/code/getting-started/setup/adding-initializing-gum/raylib-raylib-cs), and more. Gum can also be rendered on Skia so it can be used in any environment that supports Skia such as [WPF](https://docs.flatredball.com/gum/code/getting-started/setup/adding-initializing-gum/wpf), [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="https://2695663588-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M_fzQmxQ1VeUFHcoo2c%2Fuploads%2Fgit-blob-041c4d6242d85a4d391786f195423a014dda3279%2Fimage.png?alt=media" 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="https://2695663588-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M_fzQmxQ1VeUFHcoo2c%2Fuploads%2Fgit-blob-c52e24ef3653dc70448372a186406b27b864f14c%2Fimage.png?alt=media" 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="https://2695663588-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M_fzQmxQ1VeUFHcoo2c%2Fuploads%2Fgit-blob-0d2ddfc95192b1cc61c0866956812f5a97586692%2Fimage.png?alt=media" 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](https://docs.flatredball.com/gum/code/getting-started) page.

<figure><img src="https://2695663588-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M_fzQmxQ1VeUFHcoo2c%2Fuploads%2Fgit-blob-1b48f5d07385eb23a77fe7d5dfbaad44141f71b6%2Fimage.png?alt=media" 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="https://2695663588-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M_fzQmxQ1VeUFHcoo2c%2Fuploads%2Fgit-blob-82627697ea5cd809906ed26a2e8f105f84c66d4f%2Fimage.png?alt=media" 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](https://docs.flatredball.com/gum/gum-tool/showcase) 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)
