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.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

Ahwoo’s BRUTAL is a free, open-source C# framework for making games or building your own engine. You install it by creating a normal .NET project and adding the BRUTAL NuGet packages you need; there is no single BRUTAL installer. The quickest verified first milestone is a GLFW window that opens, processes events, and closes cleanly. That test confirms your project and native window layer work, but it does not render graphics yet.

This guide covers the documented Windows and Linux setup, explains the macOS qualification, and takes you from an empty directory to a sensible first-game architecture. It also explains what BRUTAL supplies, what you must build yourself, and the licence steps for a commercial release.

What BRUTAL is—and what it is not

BRUTAL is Ahwoo’s C# framework, not a conventional all-in-one game engine. Its own description is “A free, open source C# framework for making games, or your own game engine.” You assemble a project from separate libraries instead of installing one editor that dictates a scene format, renderer, asset pipeline, and game loop.

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

The repository explicitly says BRUTAL has no editor, scene graph, or built-in renderer and is not intended to be a general-purpose engine. Ahwoo describes it as a framework for experienced programmers who are prepared to make architectural decisions and maintain the systems they create. You gain control over native APIs, memory, threading, and package selection, but you also own substantially more engineering work.

#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.

That distinction matters when you plan the first milestone. A successful window is not equivalent to a finished engine project: you still need to choose a rendering API, define an update and render loop, handle input, load assets, manage scenes or entities if your game needs them, and decide how you will package builds.

Do not confuse this project with a separately named “Brutal Engine” product whose installation instructions target Autodesk Maya 2025. The steps here apply only to Ahwoo’s BRUTAL C# framework and its NuGet packages.

Requirements before you create a project

Supported development environments

  • .NET 10 SDK: Install the SDK, not only a .NET runtime. The SDK supplies the dotnet new, dotnet add package, and dotnet run commands used below.
  • Operating system: The repository’s getting-started instructions specifically document Windows and Linux.
  • Graphics hardware: If you render with BRUTAL, use a GPU with Vulkan 1.3 support and current drivers.
  • Vulkan SDK: The repository recommends the Vulkan SDK when you develop with validation layers. It is optional for the initial no-rendering window smoke test.

Ahwoo lists Windows, Linux, and macOS targets for its packages. That does not establish that the documented first-window procedure is identical on macOS. Treat Windows and Linux as the confirmed path; investigate the current package and native-library requirements separately before committing a macOS build.

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.

Verify the SDK and driver

Open a terminal and check that the .NET SDK is visible:

dotnet --version

The command should print a .NET 10 SDK version. If it reports that dotnet is not found, install the SDK and open a new terminal. A runtime-only installation cannot create the project used in this guide.

For a rendered project, update the GPU driver before troubleshooting BRUTAL. A Vulkan 1.3-capable card with an outdated driver can fail later than project creation, making an apparently correct installation look broken. Install the Vulkan SDK as well when you plan to enable validation layers; those diagnostics are most useful while you are bringing up a renderer.

Create the minimal BRUTAL project

BRUTAL publishes individual libraries as NuGet packages. Start with the core package and GLFW integration, then add rendering, audio, physics, or other systems only when the game requires them.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
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.
  1. Create a console project. Run this in the directory where you keep source code:
    dotnet new console -n HelloBrutal
  2. Enter the project directory.
    cd HelloBrutal
  3. Add the required packages.
    dotnet add package Ahwoo.Brutal.Core
    dotnet add package Ahwoo.Brutal.Glfw

    NuGet resolves the package versions and writes the references into the project file. There is no global BRUTAL installation to configure.

  4. Replace the generated program. Open Program.cs, remove its default “Hello, World!” code, and paste the following:
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();
  1. Run the project.
    dotnet run

A 1280-by-720 window titled “Hello BRUTAL” should appear. Close it using the window controls. The loop then exits and Glfw.Terminate() releases GLFW resources.

Understand what the first window proves

The example deliberately selects no graphics client API with Glfw.WindowHint(GlfwWindowHint.ClientApi, 0). It is therefore a smoke test, not a renderer. A successful run demonstrates that:

  • the .NET project was created correctly;
  • NuGet restored Ahwoo.Brutal.Core and Ahwoo.Brutal.Glfw;
  • GLFW initialized on your operating system;
  • a native window was created with the requested title and size;
  • event polling kept the window responsive; and
  • shutdown returned cleanly after the window closed.

You should not expect a triangle, sprites, a scene, or a game loop with delta-time from this code. The next task is to choose a graphics path and add your own update and render structure.

Build the first real game milestone incrementally

Because BRUTAL does not prescribe an engine architecture, avoid adding every package at once. Each milestone should leave you with a runnable program and a narrow failure surface.

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

1. Keep the window loop reliable

Put the minimal program under version control before changing it. Confirm that a clean checkout can restore packages and open the same window. This gives you a known-good baseline when a later renderer or native dependency fails.

2. Choose one rendering route

For a Vulkan renderer, the repository lists Ahwoo.Brutal.Vulkan.Abstractions, Ahwoo.Brutal.Vulkan.Vma, and Ahwoo.Brutal.ShaderC. The first two support Vulkan integration and memory allocation patterns; ShaderC supports runtime shader compilation. Add only the packages required by the renderer you are implementing, and keep validation enabled during development when practical.

Creating a Vulkan instance, selecting a physical device, creating a swapchain, compiling shaders, and presenting frames are application responsibilities. BRUTAL’s framework status means those decisions are not hidden behind a scene editor.

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.

3. Add an explicit update/render loop

Once a renderer can clear and present a frame, separate the work conceptually even if the first implementation remains in one file:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  • poll operating-system events;
  • sample input and update game state using elapsed time;
  • prepare visible objects and GPU commands;
  • submit and present the frame; and
  • release resources on shutdown.

Do not let asset loading, simulation, and window-event processing block one another indefinitely. The exact scheduling model is yours to choose; BRUTAL does not impose an entity-component system or scene lifecycle.

4. Add input and one controllable object

Before importing a large asset set, make one object respond to keyboard or controller input and render at a known position. This isolates coordinate systems, timing, input state, and the camera. Record the coordinate convention and units in your project documentation so later systems agree.

5. Add assets, then collision or physics

After the basic draw path works, add texture and mesh loading. The repository lists texture, glTF, FreeType, and mesh-related packages among its graphics and asset support. Add a physics package only after you can state which bodies, shapes, and collision rules the game needs.

6. Add audio, networking, and tools when justified

Audio and online play are optional systems, not installation prerequisites. Introduce them after the core loop is stable so a missing audio device or network service cannot obscure graphics bugs.

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

BRUTAL package families at a glance

Purpose Packages named by the repository What you still decide
Core and windowing Ahwoo.Brutal.Core; Ahwoo.Brutal.Glfw Application lifetime, input model, loop timing, and project layout
Vulkan rendering Ahwoo.Brutal.Vulkan.Abstractions; Ahwoo.Brutal.Vulkan.Vma; Ahwoo.Brutal.ShaderC Renderer architecture, GPU resource lifetime, shaders, synchronization, and presentation
Debug UI and plotting Ahwoo.Brutal.ImGui; Ahwoo.Brutal.ImPlot Debug panels, profiling views, and when those tools are compiled into builds
Parallelism Ahwoo.Brutal.Concurrency Job boundaries, synchronization, data ownership, and worker lifetimes
Audio Ahwoo.Brutal.Fmod Mixing, banks, streaming, device fallback, and content licensing
Networking Ahwoo.Brutal.RakNet Protocol, authority, security, matchmaking, and server deployment
Physics Ahwoo.Brutal.Jolt; Ahwoo.Brutal.Box2D Whether you need 2D or 3D simulation, fixed-step timing, and collision rules
Additional graphics and assets Texture, glTF, FreeType, mesh, SDL, and OpenGL packages are listed File formats, import pipeline, runtime memory policy, and platform-specific backends

The table is a menu, not a required stack. A small 2D game may need only core, GLFW, a graphics path, and an asset loader. Adding every family increases build time, native dependencies, and licence-review work.

Windows, Linux, and macOS considerations

Windows and Linux

These are the operating systems named by the repository’s getting-started instructions. Follow the console-project procedure first, then troubleshoot native window or Vulkan issues on the same platform before introducing cross-platform abstractions.

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

macOS

Ahwoo’s product page lists macOS package targets, but the repository’s first-window documentation does not confirm an identical macOS setup. Do not infer that a Windows or Linux Vulkan workflow will transfer unchanged. Verify the current package support, native window backend, graphics API expectations, and driver/toolchain details for the macOS target you intend to ship.

Commercial release and licence obligations

The repository states that BRUTAL is free for commercial games and does not charge royalties. “Free” does not mean that you can omit notices. Its MIT-based licence adds release requirements:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  • include the BRUTAL copyright notice in your game’s credits;
  • show the BRUTAL logo before gameplay starts;
  • ship a NOTICE.txt file alongside the product.

The repository also says that non-profit projects, and cases where displaying the logo would harm the application’s purpose, may receive a waiver. A separate commercial licence can be arranged where appropriate. Before shipping, read the current LICENSE.txt and every package’s notice and licence files. Third-party libraries retain their own terms, so satisfying BRUTAL’s notice is not a substitute for reviewing Vulkan, GLFW, audio, physics, font, networking, or other dependencies.

What kind of team should choose BRUTAL?

Decision area BRUTAL framework Full editor-based engine
Editor and scene tooling No built-in editor or scene graph; your team creates tools and data structures. Usually supplies an editor, importers, scene tools, and established workflows.
Rendering and engine architecture You select packages and implement the architecture, renderer integration, and resource lifetime. Provides a larger prebuilt runtime with a prescribed extension model.
Native API and memory control High control, with corresponding responsibility for synchronization, allocation, and platform differences. More abstraction; lower day-to-day control over internal systems.
Language and package workflow C# plus .NET SDK and NuGet references; no monolithic project format is required. Usually combines an editor project format with engine-specific plugins or scripting.
Programming experience Best suited to developers comfortable designing and maintaining engine-level systems. More accessible when the team wants ready-made gameplay and content workflows.
Cross-platform work Packages list Windows, Linux, and macOS targets, but each native backend needs verification. Typically documents supported export targets through the editor and runtime.
Licensing and attribution No royalties are stated, but BRUTAL’s notice, logo, and NOTICE.txt conditions apply, along with third-party licences. Terms vary by engine and edition.
Systems maintenance Your team owns the scene model, tools, renderer decisions, and long-term integration work. The engine vendor maintains more of the common systems.

Choose BRUTAL when control and a C#/.NET package workflow outweigh the value of a ready-made editor and engine stack. Choose a full engine when your team needs to produce content quickly without maintaining rendering, scene, tooling, and platform systems itself.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Projects and performance claims

The repository and Ahwoo’s product material list Kitten Space Agency, Torpedia, Art of the Rail, Gruntz, Afterskies, and RimWorld’s Waylith engine as projects using BRUTAL or built on it. These examples show that the framework is being used beyond the minimal sample, but they do not guarantee that every game will have the same architecture or performance.

Ahwoo and Ludeon Studios report the following 2026 figures for the Waylith engine compared with a Unity build: a 2–4× performance improvement in Ludeon’s own tests, 2.2× late-game colony performance, and a reduction in loading a 1,500-mod pack from 14 minutes to 6 minutes. These are vendor or developer reports, not independent benchmarks. Treat them as project-specific results rather than a promise for a new BRUTAL game.

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

Ahwoo also attributes the 2026 NZ Hi-Tech Awards “Most Innovative Hi-Tech Creative Technology Solution” award to Kitten Space Agency. An award or a reported benchmark can indicate real-world use, but neither replaces profiling your own content and target hardware.

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.

Troubleshoot the first run

dotnet is not recognized

Install the .NET 10 SDK, ensure its installation directory is on your system path, and open a new terminal. Re-run dotnet --version before recreating the project.

Package restore fails

Run the package commands from the directory containing the .csproj file and check the spelling of both package IDs. Then run:

dotnet restore

If restore still fails, inspect the reported package source and network error. Do not replace the package with an unrelated library simply because its name looks similar.

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

The program builds but no window appears

Confirm that Glfw.Init() returned true and that the process is still running. Run from a local desktop session rather than a headless shell or remote environment without display forwarding. On Linux, verify that the session’s native window dependencies and graphics drivers are installed.

The window opens and closes immediately

Run from a terminal so you can see exceptions. The sample exits when window.ShouldClose becomes true; a platform event, an initialization failure, or an immediate close request can therefore end the loop. Add temporary logging around initialization and window creation, but keep the explicit Glfw.Terminate() call on the normal shutdown path.

Vulkan initialization fails after the smoke test

The no-API sample does not test Vulkan. Check that the GPU and driver support Vulkan 1.3, install the Vulkan SDK when using validation layers, and enable validation output while diagnosing instance, device, swapchain, or shader errors. Fix renderer issues one layer at a time instead of adding audio, physics, and networking packages simultaneously.

Pre-release checklist

  • Build from a clean checkout with the intended .NET 10 SDK.
  • Test the target operating systems you actually claim to support; do not treat package availability as proof of identical runtime behavior.
  • Profile your renderer, update loop, memory use, and load times on representative hardware.
  • Record every NuGet and native dependency, including its licence and notice requirements.
  • Include BRUTAL’s copyright notice, required pre-game logo, and NOTICE.txt, or obtain and document an applicable waiver.
  • Remove development-only diagnostics and debug UI from release builds where appropriate.
  • Test startup, window resizing, focus changes, device loss, asset failures, and clean shutdown.

Where to go after “Hello BRUTAL”

Your first project is complete when it can be restored, run, display a window, process events, and shut down reliably. From there, add one renderer, one controllable object, and one asset at a time. BRUTAL gives you a focused C# foundation and access to composable packages; it does not decide what your engine should be. That freedom is its central benefit and the reason the framework demands more design and maintenance from the game team.

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

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.