novolis-raylib / getting-started.md
Getting started with Novolis.Raylib
Raylib 6 for modern .NET
dotnetraylibgamedevnovolis
Novolis.Raylib is a multi-package .NET 10 binding for raylib 6 and raygui.
Install
dotnet add package Novolis.RaylibFor test projects:
dotnet add package Novolis.Raylib.TestingPick an entry API
flowchart TB
install[Novolis.Raylib]
game[RayGame.Run]
host[IHost + systems]
shell[RaylibRuntimeShell]
install --> game
install --> host
install --> shell| Use case | API | Sample |
|---|---|---|
| Jam / prototype | `Novolis.Raylib.Game` → `RayGame.Run` | `novolis-dogfooding/apps/raylib/HelloGame` |
| DI / phased loop | `Novolis.Raylib.Hosting` → `AddRaylib`, `IRenderSystem` | `novolis-dogfooding/apps/raylib/HelloHosting` |
| Low-level control | `Graphics`, `World`, `Hud`, `Gui` | `novolis-dogfooding/apps/raylib/HelloRuntime` |
| Automated tests | `Novolis.Raylib.Testing` | `novolis-dogfooding/apps/raylib/HelloTesting` |
| Frame streaming / clips | `Novolis.Raylib.Capture` (optional) | `novolis-dogfooding/apps/raylib/HelloCapture` |
| Full 3D cockpit demo | `Novolis.Raylib.Game` | `novolis-dogfooding/apps/raylib/XFighter` |
Do not add direct package references to Novolis.Raylib.Native or Novolis.Raylib.Abstractions unless you extend the stack.
Drawing model
Within one frame:
Graphics.BeginDrawing()- Optional 3D:
World.Begin(camera)…World.End() - Optional 2D overlay:
Hud.* - Optional UI:
Gui.*(raygui, UTF-8) Graphics.EndDrawing()
Headless and CI
| Variable | Effect |
|---|---|
| `NOVOLIS_RAYLIB_HEADLESS=1` | Skip blocking window loop |
| `NOVOLIS_RAYLIB_OFFSCREEN_TESTS=1` | Enable test harness |
| `NOVOLIS_RAYLIB_NATIVE_TESTS=1` | Load native DLLs in tests |
Learn raylib concepts
Façade methods map to raylib C APIs. When you need parameter semantics, use the raylib cheatsheet and raylib wiki.
Package READMEs
Maintainers: codegen.md, testing.md.