FlatRedBall Features

FlatRedBall Editor

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

Project Setup Wizard

Use the wizard to get your game up and running 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.

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.

Game Live Edit

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

Hot Reload Files

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

Aseprite Integration

Native support for .aseprite files enables creating animated characters by drag+dropping files into the FlatRedBall Editor.

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.

Built-in Damage System

The flexible damage system simplifies and standardizes dealing damage and reacting to receiving damage.

Pathfinding

Create node networks from Tiled maps or in code to navigate maps.

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.

FlatRedBall.Forms

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

SkiaSharp Integration

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

Spine Integration

Use all features in the Spine tool including defining skeletons, animations, and events.

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.

Tweening (Interpolation)

Use built-in interpolation systems to move, resize, rotate, and color objects over time.

Physics

Physics engine handles collision between circles, rectangles, polygons, and lines.

Collision Relationships

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

Display Settings

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

Camera Controlling Entity

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

Realtime File Reference Tracking

Turn difficult-to-find runtime errors into clear in-editor errors the moment a file is changed or removed.

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.

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.

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.

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.

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.

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.

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.

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.

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;
        }
    }
}

Last updated