Portfolio

Slate UI Framework

A C++ library for creating graphical user interfaces in Unreal Engine 4.

Developer:
Epic Games

Platform:
Unreal Engine 4

Release Date:
January 2013

About

Previous versions of Unreal Engine used various third-party user interface frameworks, such as MFC, wxWidgets, Windows Forms, and WPF. Over a two year period, Epic Games prototyped and developed their own framework called Slate that was to unify both in-game and tools UI while also being more coherent, intuitive, and modern. By the time I joined, most of this work was already complete. However, during my six years of working on the engine and its tools, I performed substantial work on it as well.

Slate is written entirely in C++ and runs on all Unreal Engine 4 supported platforms. It is render interface agnostic, which allows it to be used in standalone desktop and mobile applications that do not depend on the game engine. Its architecture rests on two powerful concepts that distinguish it from many classical frameworks: declarative syntax and composition.

One of my main contributions was the refactoring and reorganization of the Slate code base in 2013 in order to make it easier to navigate, maintain and extend. The module and folder structure that I established then is still in use today. I also implemented a number of new general purpose and specialized UI widgets, and I improved existing ones. Slate became the foundation for the UMG visual user interface building tool that I helped developing in its early stages.

Slate uses a hybrid immediate mode and retained GUI design that heavily depends on callback delegates via so called widget attributes. In 2014 I modernized the engine's implementation of C++ delegates and helped introducing a new, safer variant called events, which are delegates with ownership semantics.

Slate also includes useful tools for developers on which I worked over the years. The Slate Widget Reflector allows user interface developers to interactively inspect the widget hierarchy of a Slate based application at run-time. The Widget Gallery application demonstrates the usage and appearance of all available general purpose widgets. Unreal Remote is a mobile application for iOS that allows touch input events to be forwarded to a desktop PC for rapid prototyping and testing of mobile games.

I have been a passionate advocate of Slate and held several presentations and training classes on it at various developer conferences.

Related Resources