BRUTAL README

The project's README from github.com/ahwootech/BRUTAL. As one markdown file: README.md.

BRUTAL

BRUTAL Framework

A free, open source C# framework for making games, or your own game engine.

BRUTAL is a framework. You can make a game directly with it, or use it as the foundation for a separate engine. We made Kitten Space Agency directly on BRUTAL. Ludeon built their Waylith engine on it to move RimWorld off Unity.

At its core is a custom interop layer giving C# direct access to native APIs and libraries. Around that we've built mathematics, memory management, strings, collections, job scheduling, logging, localization, and bindings for Vulkan, GLFW, Dear ImGui, FMOD, RakNet, Jolt and Box2D. BRUTAL doesn't make the architectural decisions for you. You write your own stack. You can use whatever NuGet packages you want, including third-party ones.

It's called BRUTAL for a reason. In some ways it's much harder to use than Unity, Unreal or Godot. In other ways, particularly if you're doing something unusual, it's considerably easier. You actually have to know what you want to do first.

Why

You are only as independent as your tools are.

Developers have surrendered an extraordinary amount of control over their work to companies whose interests are not necessarily aligned with their own. We're not suggesting everyone should make their own game engine. We're suggesting every developer should have the option to, without having to spend four years building the foundations first.

What that means in practice:

What BRUTAL is not

BRUTAL is not trying to be a general-purpose engine. There is no editor, no scene graph and no renderer, and we're not adding them. We push back on efforts to add more, because adding everything is how the industry ended up with the kind of engines we don't want to use. Pull requests that drift away from a clear purpose will be rejected.

Projects using BRUTAL

Product Studio Engine (if any)
RimWorld Ludeon Studios Waylith
Kitten Space Agency RocketWerkz Direct on BRUTAL
Torpedia RocketWerkz Direct on BRUTAL
Art of the Rail RocketWerkz Direct on BRUTAL
Gruntz RocketWerkz Direct on BRUTAL
Afterskies Floating Origin Interactive Direct on BRUTAL

Ludeon report 2 to 4 times the performance of the Unity build in their own tests, with the vast majority of existing mods still compatible. See their Steam announcement.

Kitten Space Agency is a free pre-alpha spaceflight simulation. It runs a solar system at real scale, and is the first major project built directly on BRUTAL. Download it on Ahwoo and see the technology yourself.

What is in the box

Each top-level folder in this repository is one library, published as a NuGet package. Reference only the ones you need.

Library What it is
Brutal.Core Base types, attributes, platform detection, pointer helpers, Roslyn analyzers
Brutal.Interop The custom interop layer that gives C# direct access to native APIs
Brutal.Memory Unmanaged memory management and allocators
Brutal.Collections Collections that don't allocate
Brutal.Strings String building and handling without allocation
Brutal.Maths, Brutal.Numerics Vector, matrix and numeric types
Brutal.Concurrency Job system and threading
Brutal.Logging Logging
Brutal.Localization Localization
Brutal.Vulkan, Brutal.Vulkan.Abstractions, Brutal.Vulkan.Vma Vulkan bindings, abstractions and the Vulkan Memory Allocator
Brutal.OpenGl OpenGL bindings
Brutal.ShaderC, Brutal.Slang Shader compilation
Brutal.Glfw, Brutal.Sdl, Brutal.Sdl.Image, Brutal.Sdl.Mixer, Brutal.Sdl.Ttf Windowing and input, with SDL's image, audio mixing and font add-ons
Brutal.ImGui, Brutal.ImGui.*, Brutal.ImPlot Dear ImGui and ImPlot bindings, docking branch
Brutal.Render.Mesh Mesh utilities
Brutal.Texture, Brutal.Texture.Abstractions, Brutal.Ktx, Brutal.Gli, Brutal.Stb Texture loading, KTX and compressed formats, image decoding
Brutal.Gltf, Brutal.MeshOptimizer glTF loading and mesh optimisation
Brutal.FreeType Font rasterisation
Brutal.Fmod, Brutal.OpenAl Audio
Brutal.RakNet Networking
Brutal.Jolt, Brutal.Box2D 3D and 2D physics
Brutal.Monitor.Common, Brutal.Monitor.Host, Brutal.RenderDoc, Brutal.RenderDoc.ImGui Runtime monitoring and RenderDoc capture integration
Brutal.NativeFileDialog, Brutal.NotCurses, Brutal.ZLib Native file dialogs, terminal UI, compression

Third-party notices for each library live in its LICENSES folder, Brutal.ImGui/LICENSES say.

Getting started

Prerequisites

Your first window

Create a project and add Core and Glfw:

dotnet new console -n HelloBrutal
cd HelloBrutal
dotnet add package Ahwoo.Brutal.Core
dotnet add package Ahwoo.Brutal.Glfw

Replace Program.cs:

using Brutal.GlfwApi;
using Brutal.Numerics;

if (!Glfw.Init())
    throw new Exception("Failed to initialize GLFW");

Glfw.WindowHint(GlfwWindowHint.ClientApi, 0);
var window = Glfw.CreateWindow(new GlfwWindow.CreateInfo
{
    Title = "Hello BRUTAL",
    Size = new int2(1280, 720),
});

while (!window.ShouldClose)
    Glfw.PollEvents();

Glfw.Terminate();
dotnet run

That opens a window with no graphics API. What you add next is up to you:

Questions and "how do I" threads go on the Guides and Help forum.

Building from source

This is the source for every published package. Project files, a solution and build scripts are coming. Until then use the NuGet packages, and use this repository to read and fork the code.

git clone https://github.com/ahwootech/BRUTAL.git

Licence

BRUTAL is free to use, modify and distribute, including in commercial games. There are no royalties and we don't want a percentage of your game's revenue.

The licence is based on MIT with an added attribution requirement. A game or product built with BRUTAL:

  1. includes the BRUTAL copyright notice in its credits screen, or equivalent (section 2.1)
  2. shows the BRUTAL logo before gameplay starts (section 2.2)
  3. ships NOTICE.txt alongside the product (section 2.3)

If you don't want to do that, we can arrange a separate commercial licence. We also waive the logo requirement for non-profit projects and where displaying it would be detrimental to the application's purpose.

BRUTAL is open source. There are already OSI-approved licences that allow graphical attribution. Ours is not yet OSI approved because we have not submitted it yet. We intend to, and to develop the licence with community feedback. See LICENSE.txt for the full text.

Third-party components keep their own licences. Section 4.0 points at the LICENSES folder at the root of each NuGet package; in this repository, those notices are in the LICENSES folder of each library that redistributes them.

Contributing

You can submit PRs and issues. We are a small team and maintaining a public framework is going to be a lot of work, so please be patient with us. We'll see what happens, assess the problems, and change our workflows as necessary. What won't change is BRUTAL's scope.

Before opening a PR, read CONTRIBUTING.md. It covers scope, what we expect from AI-assisted contributions, the contribution grant in section 5.0 of the licence, and the sign-off every commit needs. Small changes you understand and have tested, with a clear purpose, are the ones that will get merged.

Community

Credits

BRUTAL was made by the RocketWerkz Enterprise team and others, named in CONTRIBUTORS.md. When we talk about wanting credit for BRUTAL, these are the people we are talking about.

BRUTAL is Copyright (c) 2024 Ahwoo Limited.

BRUTAL (ahwootech/BRUTAL)

Searching Database…

1.9K ·GitHub
这是什么?BRUTAL 是一个免费开源的 C# 框架,用于开发游戏或你自己的游戏引擎,它让 C# 能够直接访问原生 API 和 Vulkan,以及围绕它们的底层库(内存、数学、集合、任务调度等)。
这是一个自带编辑器、开箱即用的游戏引擎,还是更底层的东西?它是一个框架,不是带编辑器的引擎:没有编辑器、场景图或渲染器,维护者也会拒绝试图添加这些功能的 PR。你需要在这个基础上搭建自己的架构。
怎么用它开始一个项目?先创建一个新的 .NET 项目,添加 Brutal.Core 和 Brutal.Glfw 这两个 NuGet 包,这样就能得到一个窗口,但还没有接入任何图形 API。之后你可以再引入额外的包,比如用于渲染的 Brutal.Vulkan.Abstractions 或用于调试界面的 Brutal.ImGui。
使用它需要安装什么?你需要 .NET 10 SDK,以及 Windows 或 Linux 系统。如果要渲染,还需要一块支持 Vulkan 1.3 的 GPU 和最新的驱动;开发期间建议安装 Vulkan SDK,以便使用验证层。
可以免费用于商业游戏吗?可以,它免费用于商业游戏,不收取任何分成,但许可证基于 MIT 并附加了一项署名要求:你必须注明 BRUTAL,在游戏开始前展示它的 logo,并附带一份 NOTICE.txt(也可以购买单独的商业许可证来免除这些要求)。
团队为什么不直接用 Unity 或 Unreal,而要自己做框架?作者认为开发者把太多控制权拱手让给了引擎厂商,他们希望每个开发者都有自己动手做引擎的选择,而不必先花几年时间去搭建底层基础。
目前有哪些游戏或工作室在使用 BRUTAL?Kitten Space Agency 直接构建在 BRUTAL 之上;Ludeon Studios 在它之上开发了 Waylith 引擎,目的是让 RimWorld 脱离 Unity;RocketWerkz 的 Torpedia、Art of the Rail 和 Gruntz 也直接基于 BRUTAL 开发。
BRUTAL 自带哪些库?每个顶层文件夹都是一个独立的 NuGet 包,涵盖内存、集合、字符串、数学、任务调度、日志和本地化,还包含 Vulkan、OpenGL、GLFW、SDL、Dear ImGui、FMOD、RakNet、Jolt 和 Box2D 的绑定。
用 BRUTAL 是不是要从我的游戏收入中分走一部分?不用,BRUTAL 不收取任何分成或收入抽成;唯一的代价是在制作人员名单中注明 BRUTAL、游戏开始前展示它的 logo,并附带一份 NOTICE.txt,除非你另外签订商业许可证来免除这些要求。
What are similar projects?REDox, sbox-public, MonoGame, imgui, bgfx, Chisel, ArcadeMaker, renderdoc
Creator
ahwootech
Size
4.1 MB
Stars
1.9K
Updated
CommitOct 15
Age
4d
Commits · 90 Days