Halloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsWindows FixRecommendedWindows errors stealing your time? Find the fix fastScan stability, cleanup and performance issues.Fix NowHalloween DealsAmazon USOctober picks are moving - compare before checkoutAmazon US: current deals, useful picks and tech finds.See Picks×
FREEDOM251

Freedom251 › Blog › .NET

How to Set Up BRUTAL for Cross-Platform Game Development

By Freedom251 Team · · 10 min read

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

BRUTAL is a free, open-source C# framework for building games or for creating your own engine layer. It targets Windows, Linux, and macOS through the same package family, but it does not provide an editor, scene graph, or ready-made renderer. Install the .NET 10 SDK, add the BRUTAL Core and GLFW packages, verify a window on each target, then add Vulkan and other systems deliberately.

Understand what BRUTAL provides

BRUTAL sits below a conventional all-in-one game engine. The project describes itself as a framework: you can make a game directly with it or use it as the foundation for a separate engine. Its custom interop layer connects C# code to native APIs and libraries, while shared libraries provide mathematics, memory utilities, collections, job scheduling, logging, localization, and bindings for systems such as Vulkan, GLFW, Dear ImGui, FMOD, RakNet, Jolt, and Box2D.

As an Amazon Associate I earn from qualifying purchases.

That scope gives your team control over the architecture, update loop, memory model, and native integrations. It also means BRUTAL does not decide how scenes, assets, entities, rendering passes, tools, or project data should work. There is no built-in editor, scene graph, or renderer waiting for you after installation. Those layers must come from your own code or from packages you select.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Framework versus engine

Question BRUTAL’s answer
Can it be used to make a complete game? Yes. You assemble the game systems and architecture yourself.
Does it include an editor? No built-in editor is provided.
Does it include a scene graph? No. Scene and world organization are your responsibility.
Does it include a renderer? No general-purpose renderer is included; Vulkan bindings and other libraries are added as needed.
What programming language is central? C#, with a custom interop layer to native APIs and libraries.

Choose BRUTAL when low-level control is more valuable than a short path to a visual prototype. Teams that expect a turnkey editor-driven workflow should budget time to build equivalent tools or choose a different category of technology.

#1 Best Overall
Elebase USB to USB C Adapter for iPhone 18 Pro Max,USBC Car Charger Adapter | 4Pack Type C Female to A Male Cable Converter for Apple Duo 17 16 15 14 Plus,iWatch Watch 12 11 10,iPad 9 8 Air,Airpods 5 4
  • Read Before You Buy — No Video Output: These adapters support charging and USB 2.0 data transfer, but cannot transmit video signals. Except for standard USB webcams (which use USB data only), they are not compatible with HDMI/DisplayPort cables, video-capable USB-C hubs, or docking stations with video output.
  • Convert USB-A Ports to USB-C: Designed to connect USB-C earphones, cables, flash drives, card readers, and other USB-C accessories to standard USB-A ports. Plug-and-play with no drivers or software required.
  • Aluminum Alloy Housing: Built with a sturdy aluminum alloy shell that aids in heat dissipation and protects against daily wear and scratches. Designed to maintain a stable and secure connection.
  • Compact & Travel-Friendly: The ultra-compact design allows the adapter to stay plugged into your device without blocking adjacent ports or adding bulk, reducing wear and tear on your original USB ports.
  • 12-Month Warranty: Backed by a 12-month manufacturer warranty for peace of mind. Designed to meet strict quality control standards for reliable everyday performance.

Supported platforms and prerequisites

Ahwoo’s product information lists Windows, Linux, and macOS targets and states that every package supports the same three targets. The GitHub getting-started instructions document Windows or Linux as the initial setup environments, so those are the clearest places to establish a first build. A macOS build still needs its own native-driver and distribution validation.

Target Package coverage What you must validate
Windows BRUTAL packages target Windows. .NET installation, native library loading, GPU drivers, window creation, and your final distribution layout.
Linux BRUTAL packages target Linux. Distribution-specific native dependencies, Vulkan drivers, windowing behavior, filesystem paths, and packaging.
macOS BRUTAL packages target macOS. Native-driver behavior, windowing and input, application packaging, signing, and the graphics path on the Macs you support.

Required software

  • .NET 10 SDK: required to create, restore, build, and run the C# project.
  • Current Vulkan-capable GPU drivers: required on a machine that will render through Vulkan. A window-only smoke test does not create a graphics context, but a renderer does.
  • Vulkan SDK: install this when you need Vulkan validation layers during development. It is not required merely to open the GLFW window in the first sample.

The hardware requirement is therefore conditional: a Vulkan 1.3-capable GPU and current drivers are needed for Vulkan rendering, not for every BRUTAL program. Package versions are not specified by the project information used here; keep the versions selected by your project consistent across all target builds.

Create the first BRUTAL project

Start with a window-only program. This isolates .NET, package restore, native loading, and event processing before you introduce a graphics device or shader compiler.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  1. Install the .NET 10 SDK on the development machine.
  2. Open a terminal and create a console project:
    dotnet new console -n HelloBrutal
    cd HelloBrutal
  3. Add the BRUTAL core and GLFW packages:
    dotnet add package Ahwoo.Brutal.Core
    dotnet add package Ahwoo.Brutal.Glfw
  4. Replace Program.cs with the following sample.
  5. Run the project with dotnet run.
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();

What the sample verifies

Glfw.Init() initializes the windowing layer and returns a Boolean that the sample checks before continuing. The window is created at 1280 by 720 pixels and titled “Hello BRUTAL.” The ClientApi hint is set to 0, so GLFW creates a window without attaching a graphics API. The loop continues until the user closes the window, and Glfw.PollEvents() keeps input and window events moving. Glfw.Terminate() performs the explicit shutdown.

This is intentionally not a rendering example. If the window appears and closes cleanly on each target, you have confirmed the minimum cross-platform foundation without confusing graphics-driver problems with project setup problems.

Rank #2
Anker USB-C Hub, 5-in-1 USB Hub for Laptops, 4K HDMI Multiport Adapter | USB C Dongle with 90W Max Power Delivery, 3×5Gbps USB A Data Ports, for MacBook, Dell, and More (Charger Not Included)
  • 5-in-1 USB-C Hub: Experience comprehensive connectivity featuring a Power Delivery input, two USB-A 2.0 ports, a USB-A 3.0 port, and an HDMI port. (Note: The USB-C power delivery input port is only for connecting an external wall charger to power your laptop and cannot power peripheral devices.)
  • 90W Pass-Through Charging: Achieve optimal charging with 90W pass-through power to your laptop, supported by a total input of 100W, with the hub reserving 10W for operational efficiency. (Note: Wall charger not included.)
  • Quick Data Transfers: Accelerate your productivity with rapid data transfers using a high-speed 5Gbps USB 3.0 port and two 480Mbps USB 2.0 ports.
  • 4K HDMI Display: Enhance your visual experience with a hub capable of delivering 4K resolution at 30Hz in both mirror and extend modes. Please note that this hub is compatible with MacBook (macOS 12 and newer), Windows 10 and 11, ChromeOS, and laptops equipped with DP Alt Mode and Power Delivery. Note: This device is not compatible with Linux.
  • What You Get: Anker USB-C Hub (5-in-1, 4K HDMI), welcome guide, 18-month warranty, and our friendly customer service.

Add rendering and other systems deliberately

Once the window test works, add only the systems your game needs. BRUTAL’s package split lets you keep the initial dependency graph small and makes it easier to identify which native integration causes a platform-specific failure.

Need Package or package family Role
Vulkan rendering Ahwoo.Brutal.Vulkan.Abstractions and Ahwoo.Brutal.Vulkan.Vma Vulkan-facing abstractions and the Vulkan Memory Allocator integration used to build your renderer.
Runtime shader compilation Ahwoo.Brutal.ShaderC Compiles shaders at runtime when your development workflow requires it.
Debug interface Ahwoo.Brutal.ImGui or Ahwoo.Brutal.ImPlot Immediate-mode debugging UI and plotting.
Job scheduling Ahwoo.Brutal.Concurrency Concurrency and job-system support for work that you schedule outside the main loop.
Audio Ahwoo.Brutal.Fmod FMOD bindings for integrating audio.
Networking Ahwoo.Brutal.RakNet RakNet bindings for networking features.
Additional content and platform services Packages listed by the repository for SDL, texture and glTF loading, FreeType, Jolt, Box2D, monitoring, dialogs, and compression Optional windowing/input, asset, font, physics, diagnostic, dialog, and data-compression capabilities.

Adding a package does not create a complete subsystem for you. For example, Vulkan bindings expose the API; you still design resource lifetime, synchronization, command submission, render passes, swap-chain policy, asset lifetime, and error handling. The same principle applies to physics, networking, and audio.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Move from a window to a Vulkan renderer

The first sample deliberately suppresses graphics initialization. To render, keep GLFW responsible for the window and add the Vulkan packages:

  1. Install current Vulkan 1.3-capable drivers on the development machine.
  2. Add Ahwoo.Brutal.Vulkan.Abstractions and Ahwoo.Brutal.Vulkan.Vma to the project.
  3. Install the Vulkan SDK if you want validation layers while developing. Validation layers help expose incorrect API usage; they are a development aid, not a substitute for a working driver.
  4. Replace the window-only configuration with your Vulkan initialization path. Your code must create an instance, select a physical device, create the required queues and device, and connect a presentation path to the GLFW window.
  5. Add Ahwoo.Brutal.ShaderC only if runtime shader compilation fits your workflow; otherwise, keep shader production in a separate build step that your own pipeline controls.
  6. Test device creation, resize handling, presentation, and shutdown separately before adding materials, meshes, or a full frame graph.

BRUTAL does not hide these decisions behind a standard renderer. That is useful when you need a specialized simulation or rendering architecture, but it makes graphics debugging a core engineering task. Treat the Vulkan renderer as a platform-sensitive subsystem and run it on every operating system you intend to ship.

Design one codebase for three operating systems

Keep game logic above platform boundaries

Put simulation, gameplay rules, serialization, and deterministic data processing in code that does not call operating-system APIs directly. Keep window handles, input translation, audio-device selection, filesystem conventions, and distribution-specific behavior behind small interfaces. This makes the shared BRUTAL package family useful without pretending that every native behavior is identical.

Rank #3
Sale
Anker USB C Hub, 7in1 Multi-Port USB Adapter, 4K@60Hz USBC to HDMI Splitter | 85W Max PD, 2 USB 3.0 & 1 USBC Data Ports, SD/TF Card Reader, for Laptops/Mac and Other Type C Devices (Charger Not Included)
  • Sleek 7-in-1 USB-C Hub: Features an HDMI port, two USB-A 3.0 ports, and a USB-C data port, each providing 5Gbps transfer speeds. It also includes a USB-C PD input port for charging up to 100W and dual SD and TF card slots, all in a compact design.
  • Flawless 4K@60Hz Video with HDMI: Delivers exceptional clarity and smoothness with its 4K@60Hz HDMI port, making it ideal for high-definition presentations and entertainment. (Note: Only the HDMI port supports video projection; the USB-C port is for data transfer only.)
  • Double Up on Efficiency: The two USB-A 3.0 ports and a USB-C port support a fast 5Gbps data rate, significantly boosting your transfer speeds and improving productivity.
  • Fast and Reliable 85W Charging: Offers high-capacity, speedy charging for laptops up to 85W, so you spend less time tethered to an outlet and more time being productive.
  • What You Get: Anker USB-C Hub (7-in-1), welcome guide, 18-month warranty, and our friendly customer service.

Validate native behavior on every target

“Supports Windows, Linux, and macOS” means the packages are published for those targets; it does not remove the need for target testing. Run the window smoke test on all three systems, then run the renderer with each platform’s current drivers. Check startup, resize, focus changes, input, shader compilation, audio initialization, networking, file access, and clean shutdown. A feature that works on Windows can still fail because of a Linux distribution dependency or a macOS packaging and signing detail.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Keep package selection consistent

Use the same BRUTAL package family and compatible versions in each target build. Avoid silently replacing a package with a platform-specific implementation unless the abstraction boundary is explicit and tested. Record the package set used by the game so a clean machine can restore the same dependencies.

Plan distribution early

BRUTAL leaves platform-specific distribution to the game team. Decide how native libraries, shaders, assets, configuration files, and any Vulkan-related runtime requirements are placed beside the executable for each operating system. Test a clean installation rather than only running from a development checkout; development machines often contain SDKs and drivers that players will not have.

Memory, interop, and safety responsibilities

The framework’s low-level design is a feature for teams that need direct control over native calls, memory, and scheduling. It also increases the cost of mistakes. Ahwoo describes developers as responsible for systems built with unmanaged memory and unsafe code.

  • Define ownership for every native allocation and release it exactly once.
  • Keep handles and pointers valid only for the lifetime promised by the underlying API.
  • Separate render-thread work from jobs that can safely run concurrently.
  • Make shutdown order explicit: stop jobs and audio or networking activity before destroying the objects they reference, then terminate the windowing layer.
  • Use validation tooling during development and treat native crashes as lifetime or synchronization bugs until proven otherwise.

These practices are not optional engine polish. They are part of the application architecture when the framework intentionally exposes native systems instead of managing them for you.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Rank #4
Sale
UGREEN USB to USB C Adapter Combo 4-Pack, 10Gbps USB C Converter Space Gray | Data transfer & Fast charging for MacBook, iPhone 17/16/15, iPad, Samsung Galaxy, Apple Watch
  • Dual Converters, Infinite Potential:Includes 2× USB C male to USB A female adapters and 2× USB A male to USB C female adapters. Perfect for a wide range of uses—tablets with Bluetooth keyboards, expand USB ports on macbook, and more. Two different converters for all your daily needs
  • Next-Level 10Gbps & 3A Charging: No more slow 480Mbps, this usb to usb c adapter has a transfer speed of up to 10Gbps, allowing you to do more transferring in less time. This usb adapter fits both USB A and USB C charger, supporting up to 3A fast charging
  • Upgraded Exquisite Craftsmanship: With an aluminum alloy housing and metal connector, the usbc to usb adapter is extremely durable and sturdy. Rigorously tested to withstand more than 10,000 times of plugging and unplugging, ensuring long-lasting performance
  • Broad Compatible: The usb c to usb adapter widely supports all USB C/ USB A devices like laptops, tablets, cellphones, car chargers, and phone chargers. Such as compatible with MacBook Pro/Air 2023/2022, Thunderbolt 4/3 Devices,Apple MagSafe Watch 9/8/7/SE/Ultra, iPad Pro 2022/2021, Samsung Galaxy S23/S20/S10, and iPhone 17/16/15 Pro. Plug and play
  • Please Note: To reach 10Gbps speed, keep the cable under 3.3 ft. For USB A Male to USB C adapters, try flipping the USB C connector. USB C Male to USB A adapters support bidirectional 10Gbps transfer within 3.3 ft
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Troubleshoot the first setup

The dotnet command is missing or the wrong SDK is selected

Install the .NET 10 SDK, not only a runtime. Reopen the terminal after installation and verify that the SDK is available before running dotnet new. If a machine has multiple SDKs, ensure the project is being restored and run with the intended .NET 10 installation.

Package restore fails

Confirm the project directory is the one containing the generated project file, then rerun the two dotnet add package commands. Keep the package names exactly as shown, including the Ahwoo.Brutal. prefix. A restore problem is separate from Vulkan; solve dependency resolution before adding graphics code.

The window opens but there is no picture

That is the expected result of the official smoke test. Glfw.WindowHint(GlfwWindowHint.ClientApi, 0) requests a window without a graphics API, and the sample never creates a Vulkan instance or submits a frame. Add the Vulkan abstraction and memory packages, then implement the renderer before diagnosing display output.

Vulkan initialization or validation fails

Check that the machine has a Vulkan 1.3-capable GPU and current drivers. If validation layers are unavailable, install the Vulkan SDK on the development machine. Test the window-only sample again to distinguish a GLFW or native-loading issue from a graphics-device issue.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

A feature works on one operating system only

Compare native drivers, package versions, runtime library placement, and OS-specific distribution files. Reproduce the failure with the smallest subsystem: window creation first, then device creation, then the affected audio, input, networking, physics, or asset package. Keep platform-specific code behind a narrow interface instead of scattering conditional calls through gameplay code.

Best Value
Anker USB C Hub, 5-in-1 USBC to HDMI Splitter with 4K Display | 85W Max PD, 1 Powered USB-C 5Gbps & 2 Powered USB-A 3.0 5Gbps Data Ports, for MacBook Pro, MacBook Air, Dell and More (Black)
  • 5-in-1 Connectivity: Equipped with a 4K HDMI port, a 5 Gbps USB-C data port, two 5 Gbps USB-A ports, and a USB C 100W PD-IN port. Note: The USB C 100W PD-IN port supports only charging and does not support data transfer devices such as headphones or speakers.
  • Powerful Pass-Through Charging: Supports up to 85W pass-through charging so you can power up your laptop while you use the hub. Note: Pass-through charging requires a charger (not included). Note: To achieve full power for iPad, we recommend using a 45W wall charger.
  • Transfer Files in Seconds: Move files to and from your laptop at speeds of up to 5 Gbps via the USB-C and USB-A data ports. Note: The USB C 5Gbps Data port does not support video output.
  • HD Display: Connect to the HDMI port to stream or mirror content to an external monitor in resolutions of up to 4K@30Hz. Note: The USB-C ports do not support video output.
  • What You Get: Anker 332 USB-C Hub (5-in-1), welcome guide, our worry-free 18-month warranty, and friendly customer service.

Who should use BRUTAL?

Choose BRUTAL when… Expect additional work when…
Your team is comfortable with C#, native interop, unmanaged memory, and unsafe code. You need a visual editor, scene graph, and renderer immediately.
You want to control engine architecture, memory, concurrency, and API bindings. Your team cannot maintain graphics, asset, tooling, and platform layers.
The game has unusual simulation or performance requirements that justify a custom stack. The priority is the fastest path to a conventional, editor-led prototype.
You can test Windows, Linux, and macOS builds throughout development. You can test only one operating system and cannot budget time for native-driver and packaging checks.

The trade-off is deliberate: less built-in tooling in exchange for control. Estimate the engineering time for your editor, asset pipeline, renderer, diagnostics, and platform support before committing to the framework.

How to interpret the published performance figures

Ahwoo’s product material summarizes tests reported by Ludeon comparing Waylith/RimWorld 1.7 with the Unity-based 1.6 build. The summary describes a reported 2–4× performance improvement, a 2.2× result in a late-game colony test, and a load-time change from 14 minutes to 6 minutes for a 1,500-mod pack.

Those are Ludeon’s reported comparisons under its own test conditions, not independent benchmarks of every BRUTAL game and not a guarantee for your project. They indicate why a team might investigate a lower-level architecture, but your result will depend on simulation design, content, hardware, drivers, scheduling, and the systems you build around the framework.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

License, attribution, and support

The README states that BRUTAL is free to use, modify, and distribute, including in commercial games, with no royalties. Attribution conditions still apply:

  • Include the BRUTAL copyright notice in the game credits or an equivalent location.
  • Show the BRUTAL logo before gameplay.
  • Ship a NOTICE.txt file.

If those conditions do not fit your release, the project says a separate commercial license can be arranged. Confirm the current license text and any logo requirements before shipping, especially if your distribution format has unusual startup screens or bundled notices.

For implementation help, use the official Guides and Help forum. Check Framework Updates before upgrading packages so you can account for changes in bindings or native integrations rather than treating an upgrade as a drop-in replacement.

Pre-release checklist

  • Build and run the 1280×720 GLFW smoke test on Windows, Linux, and macOS.
  • Confirm that the project restores with the .NET 10 SDK on a clean development machine.
  • Document the exact BRUTAL package set used by the game.
  • Verify Vulkan 1.3-capable hardware and current drivers on every supported rendering target.
  • Use the Vulkan SDK and validation layers during development when diagnosing graphics API usage.
  • Test renderer startup, resize, presentation, shader handling, and shutdown independently of gameplay.
  • Test native library loading, input, audio, networking, physics, asset access, and file paths on each operating system.
  • Package native libraries, assets, shaders, configuration, and notices for a clean installation.
  • Review unmanaged-memory ownership and shutdown order, including jobs and native subsystems.
  • Apply the required copyright notice, logo display, and NOTICE.txt before release.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

.NETBRUTALC++Cross-platformgame developmentLinuxmacOSVulkanWindows

Leave a Reply

Your email address will not be published. Required fields are marked *

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Recommended PC Tool
Recommended PC Tool
PC Slower Than It Used to Be?Free scan - under a minute
Crashes, No Sound, or Screen Glitches?Free driver scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.