Lutra is a framework for making 2D games in C# with a focus on cross-platform builds, pixel perfect rendering, and ease of use. It adapts code from (and functions as a spiritual successor to) Kyle Pulver's Otter framework.
This project was started with the aim to port games away from Otter's dependency on SFML.NET, due to various cross-platform runtime issues. The renderer was built from scratch using Veldrid, which provides a low-level graphics API with many backends.
Lutra is still in development, but has been used to make games already! During these early stages, dev work is being done in a private repository and synced here for releases.
You can either clone this repo or download the source of the latest release from the tags page.
See the changelog for more details about the latest release.
- A new renderer using SDL3's GPU API
- Support Windows/macOS/Linux across both x64 and arm64
- Better Otter compatibility and more Otter features, for ease of porting
- An optional ECS game structure, slotting in beside the traditional object-oriented one
- Code-first & quick to set up
- Object-oriented Scene/Entity/Component structure
- Quadtree based Collision
- Rich text with fancy formatting options
- ImGui based debug UI with console
- Useful utility functions
- Custom shader support (guide coming soon!)
Platform1 | Vulkan | Direct3D 11 | Metal | OpenGL |
---|---|---|---|---|
Windows x64 | 🆗2 | ✅ | ✅ | |
Linux x64 | ✅ | ✅ | ||
macOS x64 | ✅ | ❌3 |
✅: Recommended, 🆗: Tested, 🚧: Support in progress, ❌: Non-functional.
Lutra and Otter do not have identical featuresets, but porting games from Otter to Lutra is a goal of the project.
See the OTTER article for more information.
Lutra is licensed under the MIT License.
Please also see the list of third party dependency licenses