What? Another one?
Yeah! Another one! Chroma is a 2D-focused game development framework. Works just as well for other kinds of 2D applications too. Might as well call it a glorified SDL wrapper for .NET 6 if you like.
Why?
Because MonoGame iswas so slow to add hassle-free shader compilation on Linux that it seemed faster for me to write an entire goddamn game development framework. Thought to myself "might as well learn something along the way...". Besides, I've always wanted to have something like this for fast prototyping.
Alright. What are its features?
Oh I'm glad you asked! Features include, but are not limited to:
▐ Cross-platform support - Windows, Linux and (experimental!) macOS
▐ Hassle-free framework bring-up allowing you to prototype fast and without bullshit boilerplate.
▐ Supports GLSL shaders on any platform. No shader pre-compilation - plain old .frag and .vert.
▐ MIT licensed! Do whatever you want to/with it, I want my name on Chroma, though.
▐ Allows you to draw primitive shapes out-of-box. I'm looking at you, MonoGame.
▐ Err... Is actively developed? At least until I deem it feature-complete.
▐ Generally tries to make the gamedev's life easier rather than harder.
▐ Drawing inspiration from some of the best frameworks out there.
▐ <egoboost>Very clever native bootloading system.</egoboost>
▐ FreeType-based TTF and BMFont bitmap font format support.
▐ Integrates well with .NET ecosystem more often than not.
▐ Easy-to-understand rendering controls.
▐ Support for Xbox One/Elite, Nintendo and PlayStation 4 & 5 (trigger haptics) controllers.
▐ Flexible audio input and output system.
Mobile platform support?
Maybe? Until that happens you're free to use Love2D. I really dig its robustness and ease-of-use.
Docs?
API reference is available, but... I'll do you one better.
Is the API stable?
Mostly (meaning 'sometimes a method or two might change its signature'). While the entire thing is ready for people to make stuff with, I consider this software to still be in beta stage.
You got a roadmap or something?
Where we're going we don't need a roadmap.
Just watch the Issues page. Whenever I get an idea for a feature or someone suggests one I either throw it away or add it to project taskboards.
Are there any examples?
Might surprise you, there are some! For example this guy made a CHIP-8 emulator called CHROMA-8. That madlad also made an audio synthesis library and even a GameBoy emulator - all utilizing Chroma! Such dedication. Wow.
Alternatively, you can check commit history for some API usage examples as well as ghetto examples I create on my personal website. There are some actual demos here as well
How about a quick-start guide?
Since 30.06.2020 there's a possibility of using the official project template.
It can be installed using the following command.
dotnet new -i Chroma.GameTemplate
Afterwards you can create new Chroma projects using the dotnet new
template.
dotnet new chromagame -n MyGameLongName
dotnet build
dotnet run
Alternatively:
dotnet new console -n MyGameLongName
cd MyGameLongName
dotnet add MyGameLongName.csproj package Chroma
dotnet build