Table of Contents
Work in Progress

This page is actively being worked on. If you have a question you'd think would fit here, Open an Issue!

Frequently Asked Questions (FAQ)

Do I have to pay to use Beryl?

Short Answer-No. Long Answer: Beryl is Free and Open-Source Software (FOSS) under the MIT License. You can use, modify, redistribute, or build upon it however you like without worrying about any fees.

Why was Beryl made?

Beryl was made to fill a specific niche that existing engines could only partially provide.

  • C# Scripting in a C# Engine. Beryl is both written in C# and uses C# as its primary public-facing scripting language. This has a great number of benefits: full* access to engine internals, C#-first conventions, compatiblity with modern C# 14 and .NET 10 features, no messy interop layer, and no outdated embedded .NET runtime.

  • Free and Open-Source Forever. Users own everything they create with absolutely no cost. Plus, you can look through Beryl's source code, report bugs, suggest features, or submit changes through the engine's GitHub.

  • Plug and Play Modules. Beryl builds its subsystems around Modules, isolated systems like Beryl.Physics or Beryl.Rendering that hook into the engine's lifecycle. Modules are entirely optional and can be arbitrarily turned on or off. Does your project not need physics? Disable the Beryl.Physics module to avoid 100% of any unnecessary overhead.

  • Code Only. Whilst the Beryl editor is actively being worked on, Beryl aims to keep any future engine-editor divide clear so you never have to depend on an editor to make full games. The editor will remain a tool instead of a requirement.

Why not C++?

C++ has been the dominant language in engine creation for decades, so why is Beryl using C#? This is a complicated topic as there's many factors that influenced Beryl to go with C# but it can generally be summed up into 4 main points.

  1. Language Features. C# 14 has many amazing features that Beryl utilizes heavily. We use Extension Members to trivially decouple code, Attributes and Reflection to minimize boilerplate, and Roslyn to allow scripted compilation, analyzers, and iteration speeds a fully compiled language like C++ couldn't reach.

  2. Discarding the Engine/Scripting Divide. Because C++ isn't ideal for game scripting, C++ engines typically expose a friendlier language for users to write gameplay logic with. C# is perfect for this, but integrating it from C++ introduces a whole new beast to manage: Interop. Interop layers easily become tangled and struggle to find a balance between the native language and the 'front-end' language. It's easy for a bad interop layer to trap developers into writing C++-styled C# whilst also hiding powerful lower-level engine capabilities that never made it across the boundary. Beryl solves all this by simply writing the engine in the same language used for gameplay logic.

  3. Ecosystem. Using C# comes with the perks of the amazing .NET ecosystem. Not only can the engine easily depend on NuGet packages, games can too, opening up projects to every compatible library.

  4. Safety. TODO.