SadConsole 10.8.0
dotnet add package SadConsole --version 10.8.0
NuGet\Install-Package SadConsole -Version 10.8.0
<PackageReference Include="SadConsole" Version="10.8.0" />
<PackageVersion Include="SadConsole" Version="10.8.0" />
<PackageReference Include="SadConsole" />
paket add SadConsole --version 10.8.0
#r "nuget: SadConsole, 10.8.0"
#:package SadConsole@10.8.0
#addin nuget:?package=SadConsole&version=10.8.0
#tool nuget:?package=SadConsole&version=10.8.0

SadConsole is a C#-based .NET cross-platform terminal, ascii, console, game engine. It simulates these types of programs and with it you can make ascii-styled games for modern platforms. At its heart, SadConsole is really a giant tile-based game engine. However, its object model is conceptually similar to a traditional console app.
While SadConsole is a generic library that doesn't provide any rendering capabilities, "host" libraries are provided that add renderers to SadConsole. The two hosts provided by this library are for SadConsole.Host.MonoGame and SadConsole.Host.SFML. When adding a host library to your project, you don't need to reference the base SadConsole package. If you use MonoGame, you'll also need to add a rendering NuGet package, such as MonoGame.Framework.DesktopGL.
SadConsole currently targets .NET 8, .NET 9, and .NET 10
For the latest changes in this release, see the notes below
Features
Here are some of the features SadConsole supports:
- Show any number of consoles of any size.
- Uses graphical tile-based images to build out an ASCII-character font with support for more than 256 characters.
- Fonts are simply sprite sheet tilesets tied to ascii codes, you can use full graphical tiles if you want.
- Use more than one font file. However, each console is restricted to a single font.
- Full GUI system for interactive controls such as list boxes, buttons, and text fields.
- Importers for DOS ANSI files, TheDraw text fonts, RexPaint, and Playscii.
- Animated consoles and instruction system to chain commands together.
- String encoding system for colors and effects while printing.
- Entity support for drawing thousands of movable objects on the screen
- Translating images to text-blocks.
- Keyboard and mouse support.
- Highly customizable framework.
String display and parsing

GUI library

Scrolling

Latest changes
- [Core]
ColoredGlyphdeserialization correctly handles decorators. - [Core]
LayeredSurfacelayers can be hidden now. - [Controls] Rendering controls on a surface with a viewport now correctly handles mouse input and drawing of the controls.
- [Core]
AnimatedValuewas sending the finished event before it was completed. - [Core]
AnimatedScreenSurfacedidn't set the new frame sizes when deserialized. - [Core]
ITitlemoved from debug library to core. - [Host] Hosts have new logic for converting images into surfaces.
- [MonoGame] Render steps now use local spritebatches, which can help with memory allocation in some cases.
- [Core] Entities now have
IHasLayerfrom the primitives library which matches theZIndexproperty. - [Core] Entities expose the
IHasIDinterface now. - [Core]
EntityManagercorrectly handles animated entity visibility. - [UI]
ListBoxandComboBoxhave generic versions now. - [UI]
ComboBoxPlacement of the dropdown is correctly kept on the screen. - [Core] Changing
Game.Instance.DefaultFontandDefaultFontSizenow update all objects on the screen with the new defaults when they use the defaults.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- Coroutine (>= 2.1.5)
- Newtonsoft.Json (>= 13.0.4)
- TheSadRogue.Primitives (>= 1.6.0)
-
net8.0
- Coroutine (>= 2.1.5)
- Newtonsoft.Json (>= 13.0.4)
- TheSadRogue.Primitives (>= 1.6.0)
-
net9.0
- Coroutine (>= 2.1.5)
- Newtonsoft.Json (>= 13.0.4)
- TheSadRogue.Primitives (>= 1.6.0)
NuGet packages (8)
Showing the top 5 NuGet packages that depend on SadConsole:
| Package | Downloads |
|---|---|
|
SadConsole.Extended
A library of common classes that extend SadConsole with new controls, windows, and more. |
|
|
SadConsole.Host.MonoGame
A graphics hosting library for SadConsole that targets MonoGame. |
|
|
SadConsole.Host.SFML
A graphics hosting library for SadConsole that targets SFML. |
|
|
SadConsole.GoRogueHelpers
A helper library for SadConsole games built with GoRogue. |
|
|
TheSadRogue.Integration
An official integration library for using GoRogue and SadConsole together to create a roguelike. |
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on SadConsole:
| Repository | Stars |
|---|---|
|
Thraka/SadConsole
A .NET ascii/ansi console engine written in C# for MonoGame and SFML. Create your own text roguelike (or other) games!
|
| Version | Downloads | Last Updated | |
|---|---|---|---|
| 10.8.0 | 132 | 1/19/2026 | |
| 10.8.0-debug | 111 | 1/19/2026 | |
| 10.7.0 | 510 | 11/15/2025 | |
| 10.7.0-debug | 218 | 11/15/2025 | |
| 10.6.0 | 1,244 | 8/9/2025 | |
| 10.6.0-debug | 230 | 8/9/2025 | |
| 10.5.0 | 2,525 | 12/7/2024 | |
| 10.5.0-debug | 260 | 12/7/2024 | |
| 10.4.2 | 397 | 10/24/2024 | |
| 10.4.2-debug | 186 | 10/24/2024 | |
| 10.4.1 | 1,574 | 6/13/2024 | |
| 10.4.1-debug | 290 | 6/13/2024 | |
| 10.4.0 | 1,637 | 3/31/2024 | |
| 10.4.0-debug | 317 | 3/31/2024 | |
| 10.0.3 | 817 | 3/14/2024 | |
| 10.0.3-debug | 392 | 3/14/2024 | |
| 10.0.2 | 1,776 | 11/10/2023 | |
| 10.0.2-debug | 990 | 11/10/2023 | |
| 10.0.1 | 844 | 11/10/2023 | |
| 10.0.1-debug | 816 | 11/10/2023 | |
| 10.0.0 | 1,964 | 10/29/2023 | |
| 10.0.0-debug | 1,115 | 10/29/2023 | |
| 10.0.0-beta3-debug | 1,232 | 10/14/2023 | |
| 10.0.0-beta3 | 1,189 | 10/14/2023 | |
| 10.0.0-beta2-debug | 1,182 | 10/11/2023 | |
| 10.0.0-beta2 | 1,209 | 10/11/2023 | |
| 10.0.0-beta1-debug | 1,224 | 10/11/2023 | |
| 10.0.0-beta1 | 1,252 | 10/11/2023 | |
| 10.0.0-alpha4-debug | 1,498 | 8/26/2023 | |
| 10.0.0-alpha4 | 1,456 | 8/26/2023 | |
| 10.0.0-alpha3-debug | 1,370 | 8/26/2023 | |
| 10.0.0-alpha3 | 1,369 | 8/26/2023 | |
| 10.0.0-alpha2-debug | 1,772 | 6/18/2023 | |
| 10.0.0-alpha2 | 1,572 | 6/18/2023 | |
| 10.0.0-alpha1-debug | 1,746 | 6/4/2023 | |
| 9.2.2 | 5,569 | 1/22/2022 | |
| 9.2.2-debug | 1,394 | 1/22/2022 | |
| 9.2.1 | 2,715 | 1/4/2022 | |
| 9.2.0 | 3,644 | 12/31/2021 | |
| 9.2.0-debug | 1,258 | 12/31/2021 | |
| 9.1.1 | 6,237 | 8/7/2021 | |
| 9.1.1-debug | 1,451 | 8/7/2021 | |
| 9.1.0 | 2,375 | 7/6/2021 | |
| 9.1.0-debug | 1,436 | 7/6/2021 | |
| 9.0.0 | 5,084 | 6/6/2021 | |
| 9.0.0-debug | 1,442 | 6/6/2021 | |
| 9.0.0-beta4 | 2,212 | 1/15/2021 | |
| 9.0.0-beta3 | 2,395 | 12/19/2020 | |
| 9.0.0-beta2 | 1,810 | 10/9/2020 | |
| 9.0.0-beta1 | 1,916 | 8/1/2020 | |
| 9.0.0-alpha9 | 1,953 | 7/25/2020 | |
| 9.0.0-alpha8 | 1,615 | 7/13/2020 | |
| 9.0.0-alpha7 | 2,053 | 7/11/2020 | |
| 9.0.0-alpha6 | 2,031 | 5/28/2020 | |
| 9.0.0-alpha5 | 1,803 | 5/26/2020 | |
| 9.0.0-alpha4 | 1,619 | 5/1/2020 | |
| 9.0.0-alpha3 | 1,826 | 5/1/2020 | |
| 9.0.0-alpha2 | 1,738 | 3/14/2020 | |
| 9.0.0-alpha1 | 2,219 | 1/26/2020 | |
| 8.99.3 | 3,970 | 8/15/2020 | |
| 8.99.3-debug | 1,655 | 8/15/2020 | |
| 8.99.2 | 1,994 | 7/14/2020 | |
| 8.99.2-debug | 1,620 | 7/14/2020 | |
| 8.99.1 | 2,687 | 4/11/2020 | |
| 8.99.1-debug | 1,639 | 4/11/2020 | |
| 8.99.0 | 2,735 | 11/27/2019 | |
| 8.99.0-debug | 1,629 | 11/27/2019 | |
| 8.9.1 | 4,181 | 11/5/2019 | |
| 8.9.1-debug | 1,629 | 11/5/2019 | |
| 8.9.0 | 2,536 | 9/7/2019 | |
| 8.9.0-debug | 1,961 | 9/7/2019 | |
| 8.8.1 | 3,465 | 7/28/2019 | |
| 8.8.1-debug | 1,891 | 7/28/2019 | |
| 8.8.0 | 2,718 | 7/27/2019 | |
| 8.8.0-debug | 1,830 | 7/27/2019 | |
| 8.7.1 | 2,265 | 6/22/2019 | |
| 8.7.1-debug | 1,888 | 6/22/2019 | |
| 8.7.0 | 2,108 | 6/22/2019 | |
| 8.7.0-debug | 1,939 | 6/22/2019 | |
| 8.6.0 | 2,360 | 4/14/2019 | |
| 8.6.0-debug | 1,951 | 4/14/2019 | |
| 8.5.0 | 2,265 | 4/2/2019 | |
| 8.5.0-debug | 1,973 | 4/2/2019 | |
| 8.4.1 | 2,220 | 3/19/2019 | |
| 8.4.1-debug | 1,984 | 3/19/2019 | |
| 8.4.0 | 2,100 | 3/17/2019 | |
| 8.4.0-debug | 1,973 | 3/17/2019 | |
| 8.3.0 | 2,194 | 3/10/2019 | |
| 8.3.0-debug | 1,916 | 3/10/2019 | |
| 8.2.0 | 2,229 | 3/2/2019 | |
| 8.2.0-debug | 2,023 | 3/2/2019 | |
| 8.1.0 | 2,205 | 2/28/2019 | |
| 8.1.0-debug | 1,917 | 2/28/2019 | |
| 8.0.0 | 2,318 | 2/24/2019 | |
| 8.0.0-pre5 | 1,996 | 2/19/2019 | |
| 8.0.0-pre4 | 2,014 | 1/31/2019 | |
| 8.0.0-pre2 | 2,047 | 12/30/2018 | |
| 8.0.0-pre1 | 1,994 | 12/30/2018 | |
| 7.3.0 | 2,244 | 12/29/2018 | |
| 7.2.0 | 2,460 | 11/20/2018 | |
| 7.1.0 | 2,518 | 10/19/2018 | |
| 7.0.4 | 2,460 | 9/8/2018 | |
| 7.0.3 | 2,286 | 9/8/2018 | |
| 7.0.2 | 2,681 | 8/31/2018 | |
| 7.0.0 | 2,322 | 8/29/2018 | |
| 7.0.0-pre1 | 2,137 | 8/22/2018 | |
| 6.5.0 | 2,800 | 6/12/2018 | |
| 6.4.11 | 2,941 | 4/13/2018 | |
| 6.4.11-pre1 | 2,720 | 4/6/2018 | |
| 6.4.10 | 2,905 | 3/18/2018 | |
| 6.4.9 | 2,866 | 3/18/2018 | |
| 6.4.8 | 2,840 | 3/18/2018 | |
| 6.4.7 | 2,908 | 3/16/2018 | |
| 6.4.6 | 3,148 | 2/14/2018 | |
| 6.4.5 | 2,947 | 2/3/2018 | |
| 6.4.3 | 2,773 | 11/14/2017 | |
| 6.4.2 | 2,863 | 8/11/2017 | |
| 6.4.1 | 2,684 | 8/10/2017 | |
| 6.4.0 | 2,762 | 7/25/2017 | |
| 6.3.0 | 2,795 | 6/9/2017 | |
| 6.2.2 | 2,793 | 5/20/2017 | |
| 6.2.1 | 2,881 | 4/23/2017 | |
| 6.2.0 | 2,713 | 4/22/2017 | |
| 6.1.4 | 2,710 | 4/17/2017 | |
| 6.1.3 | 3,370 | 4/3/2017 | |
| 6.1.2 | 2,683 | 4/1/2017 | |
| 6.1.1 | 2,635 | 4/1/2017 | |
| 6.1.0 | 2,643 | 3/31/2017 | |
| 6.0.1 | 2,786 | 3/19/2017 | |
| 6.0.0 | 2,470 | 3/18/2017 |
- Cleaned up various warnings and XML comments.
- `BlinkChar` supports starting on or off now.
- Fix crash when resizing a surface with a smaller height and same width while the clear flag is set.
- `ScreenObject` positioning can be scaled by an amount, such as a font size or any other size.
- `SadFont.ToString` now returns the font name.
- `AnimatedScreenObject.ResyncFrameSizes` method added correctly set the size of a new frame to the first frame in the animation.
- Fixed a long-standing bug with `CompositeControl` where visual focus wasn't removed from a child control when the mouse moved out of the window.
- When splashscreen closes, call update on new the new Screen. Fixes a bug with `ControlsHost` not drawing the first state of controls.