FlatRedBall
Ask or search…
K

FlatRedBall Features

FlatRedBall Editor

The FlatRedBall Editor is a visual tool for creating and organizing screens, entities, and files.
FlatRedBall Editor

Project Setup Wizard

Use the wizard to get your game up and running in seconds.
The Project SEtup Wizard can be used to start making a game in seconds

Tiled Integration

Tiled maps can be drag+dropped into the FlatRedBall Editor and loaded with no extra code. Use Tiled to define visuals, collision, and add entity instances.
Tiled Map in the FRB Editor

Gum UI Integration

FlatRedBall provides full integration with the Gum tool. Gum projects are added to your project and loaded by generated code, enabling the creation of UI from the very first click.
Gum UI Title Screen

Game Live Edit

Run your game in edit mode to make changes in real time.
Live edit in FRB

Hot Reload Files

Make changes to files such as Tiled (.tmx), Textures (.png), and spreadsheet (.csv) files and see the changes update in realtime.
Changes in Tiled update a game in realtime

Platformer Controls and Physics

Creating a platformer has never been easier. Mark your entity as a Platformer or use the new project wizard to get production quality platformer physics and movement.
FRB provides platformer physics and controls

Built-in Damage System

The flexible damage system simplifies and standardizes dealing damage and reacting to receiving damage.
FRB Damage system simplifies combat code

Pathfinding

Create node networks from Tiled maps or in code to navigate maps.
Enemies navigating a map and chansing the player with their path visualization enabled

AnimationEditor Integration

Use the AnimationEditor to define animations for your characters using individual files or sprite sheets. Preview animations, adjust timing, and add shapes for collision or defining key positions.
FRB AnimationEditor

FlatRedBall.Forms

FlatRedBall.Forms is a flexible UI system similar to WPF and MAUI. It is fully integrated with Gum and has MVVM support.
FlatRedBall.Forms Contros

SkiaSharp Integration

Use SkiaSharp to render GPU-accelerated vector graphics in your game. Perform layout purely in code or use Gum.
SkiaSharp provides vector art rendering support

Spine Integration

Use all features in the Spine tool including defining skeletons, animations, and events.
Animated character in Spine
Spine files can be dropped in to your project and loaded with no code. Play animations at runtime in response to input or game events.
Animated character using Spine

Tweening (Interpolation)

Use built-in interpolation systems to move, resize, rotate, and color objects over time.
Sprites scaling up using "elastic" interpolation

Physics

Physics engine handles collision between circles, rectangles, polygons, and lines.
Circles colliding against rectangles, polygons, and other circles

Collision Relationships

Define collision relationships in UI or code to add physics, damage dealing, and custom events.
CollisionRelationship in FRB

Display Settings

Set your initial game's resolution, whether it supports resizing, aspect ratio, and more.
Display Settings in FRB

Camera Controlling Entity

The camera controlling entity can follow one or more targets, supports zooming, provides customizable tweening, and respects map bounds.
Camera controlling entity following targets and zooming

Realtime File Reference Tracking

Turn difficult-to-find runtime errors into clear in-editor errors the moment a file is changed or removed.
Missing file references are reported in the FRB error tab

MonoGame/FNA and NAudio Music

MonoGame and FNA Song support included out of the box. For more flexibility song files can be loaded using NAudio.
Song settings in FRB

CSV and Open Office/Libre Office Integration

Use CSV files or open office spreadsheet files to define your game data. FlatRedBall automatically generates the classes for loading your data and deserializes the files in geneated code.
Creating a CSV automatically generates a class with matching properties

Flexible Input

FRB input supports mouse, keyboard, touchscreen, and a variety of gamepads (Xbox, Switch, PlayStation, and PC) including direct and abstract access through a variety of interfaces.
ShootingInput = gamePad.RightTrigger.
// primary is the A/B button, which is usually for jumping
// shooting is usually X/Y
Or(gamePad.DefaultSecondaryActionInput);
ReviveInput = gamePad.DefaultPrimaryActionInput;
PreviousWeaponInput = gamePad.GetButton(Xbox360GamePad.Button.LeftShoulder);
NextWeaponInput = gamePad.GetButton(Xbox360GamePad.Button.RightShoulder);

Localization Support

Add multiple languages to your game using a simple spreadsheet. Localization is automatically loaded and can be accessed through a LocalizationManager static class. Include multiple pages per string ID and add custom columns for your game's specific needs.
Example Localization File

Multiple Platforms

Target multiple platforms with the same code and content. FRB games can run on Windows, Mac, Linux, Android, and iOS. By using FNA and Native AOT, FlatRedBall can also run on consoles such as Switch.
Target multiple platforms with FRB

Full .NET C# (not scripted)

FlatRedBall projects are regular .NET projects with full access to modern C# syntax, the full .NET library, and NuGet packages. FlatRedBall Projects are regular Visual Studio project, enabling you to use your favorite IDE and debugger.
Write any valid C# including LINQ and async code

Open Source

FlatRedBall is fully open source using the MIT License. It is built using libraries which themselves are also open source. You can build your games without the worry of future inconveniences caused by license changes.
FlatRedball uses the MIT license

All Data is Text

All data created by FlatRedBall is in text format. The FlatRedBall Editor saves .json files and generates pure C# code files. Never worry about binary file conflicts wiping out your work again.
FRB data is text so you can inspect, debug, and diff easily

XNA-Like Foundation

FlatRedBall was built in the early days of XNA and has continued to grow, adding support for MonoGame and FNA. Your FlatRedBall game is a MonoGame/FNA game, and the full flexibility of these libraries is available to you.
Fusion Sentient - a FlatRedBall game using XNA Models for 3D graphics

Async Programming

FlatRedBall provides a syncrhonization context and multiple methods returning Tasks to simplify async programming.
private async Task DoRepeatablePhase2Logic(CancellationToken token)
{
while(true)
{
await ShakeAndSpawnAnglerFish();
await DoSpawnPhase2Groups(token);
await TimeManager.DelayUntil(() =>
EnemyList.All(item => item is not AnglerFish));
await TimeManager.DelaySeconds(SecondsAfterAnglerFishToRespawn);
if (DagonPhase2Instance.ShouldSplitAfterSlideUp)
{
phase2CancellationTokenSource.Cancel();
break;
}
}
}