Vigilance.Debug 0.2.12

dotnet add package Vigilance.Debug --version 0.2.12
                    
NuGet\Install-Package Vigilance.Debug -Version 0.2.12
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Vigilance.Debug" Version="0.2.12" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Vigilance.Debug" Version="0.2.12" />
                    
Directory.Packages.props
<PackageReference Include="Vigilance.Debug" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Vigilance.Debug --version 0.2.12
                    
#r "nuget: Vigilance.Debug, 0.2.12"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Vigilance.Debug@0.2.12
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Vigilance.Debug&version=0.2.12
                    
Install as a Cake Addin
#tool nuget:?package=Vigilance.Debug&version=0.2.12
                    
Install as a Cake Tool

Vigilance

Vigilance is a 2D game engine/framework for C# and .NET, built on Raylib and focused on developer experience and performance. It runs natively on desktop and in the browser through WebAssembly, and it is compatible with Native AOT.

Documentation

The engine documentation and API reference are available at vigilance.samaelheaven.workers.dev.

Features

  • Entity component system: components are stored in sparse sets, so adding, removing, and iterating them stays cheap. Structural changes can be deferred while you iterate, and every add, set, and remove can be observed through events.
  • Scenes: a scene ties everything together. It holds your entity hierarchies and the systems that act on them, and supports names, prefabs, and transitions between scenes.
  • Game loop: the frame runs through update, fixed update, and render phases, each with its own pre and post steps. Transforms are interpolated between fixed updates, so motion stays smooth at any frame rate.
  • Systems: write your logic as ordered systems that hook into any phase. Built-in systems already handle physics, sprite batching, drawables, animations, UI, and more!
  • Rendering: draw sprites, animations, shapes, and text with FreeType fonts, use shaders, render textures, and cameras, and batch sprites through instancing.
  • Physics: Box2D bodies and shapes, with contact and sensor events and ray casts.
  • UI: high-level UI elements laid out with flexbox, usable in both immediate and retained mode.
  • Input: keyboard, mouse, gamepads, and the clipboard.
  • Audio: sounds, music, and audio streams.
  • Utilities: collections, math, tweens, timers, assets, logging, HTTP requests, and more!

Installation

Vigilance targets .NET 10 and later.

dotnet add package Vigilance

Vigilance.Debug is the same engine with internal assertions enabled, for catching misuse during development. To use it in Debug builds and the regular package in Release builds, add both references to your project, replacing x.y.z with the latest version:

<PackageReference Include="Vigilance" Version="x.y.z" Condition="'$(Configuration)' == 'Release'" />
<PackageReference Include="Vigilance.Debug" Version="x.y.z" Condition="'$(Configuration)' == 'Debug'" />

Benchmarks

The engine's entity operations and queries are compared against Flecs.NET after each release. The ratio column compares each Vigilance benchmark with the Flecs.NET baseline of the same operation; the measurements come from a shared CI machine, so the ratios are more meaningful than the absolute times.

BenchmarkDotNet v0.15.8, Linux Ubuntu 24.04.5 LTS (Noble Numbat)
AMD EPYC 7763 3.24GHz, 1 CPU, 2 logical cores and 1 physical core
.NET SDK 10.0.401
  [Host]     : .NET 10.0.12 (10.0.12, 10.0.1226.42308), X64 RyuJIT x86-64-v3
  Job-NHQAEU : .NET 10.0.12 (10.0.12, 10.0.1226.42308), X64 RyuJIT x86-64-v3

Entities

EnvironmentVariables=DOTNET_TieredCompilation=0 InvocationCount=1 IterationCount=12 UnrollFactor=1 WarmupCount=4

Method Categories EntityCount Mean Error StdDev Ratio RatioSD Gen0 Gen1 Gen2 Allocated Alloc Ratio
Vigilance_AddComponent AddComponent 1000 32.22 μs 0.878 μs 0.581 μs 4.08x faster 0.13x - - - 41408 B NA
Flecs_AddComponent AddComponent 1000 131.46 μs 5.399 μs 3.571 μs baseline - - - - NA
Vigilance_AddComponent AddComponent 100000 2,254.97 μs 39.857 μs 26.363 μs 5.14x faster 0.06x - - - 4598704 B NA
Flecs_AddComponent AddComponent 100000 11,590.85 μs 49.630 μs 35.886 μs baseline - - - - NA
Vigilance_Create Create 1000 53.26 μs 4.835 μs 3.198 μs 1.02x faster 0.07x - - - 59608 B NA
Flecs_Create Create 1000 54.05 μs 3.438 μs 2.684 μs baseline - - - - NA
Vigilance_Create Create 100000 5,476.60 μs 42.413 μs 30.668 μs 1.16x slower 0.02x 1000.0000 1000.0000 1000.0000 6958440 B NA
Flecs_Create Create 100000 4,713.97 μs 92.898 μs 67.171 μs baseline - - - - NA
Vigilance_CreateWithComponents CreateWithComponents 1000 107.62 μs 19.182 μs 14.976 μs 2.51x faster 0.34x - - - 142424 B NA
Flecs_CreateWithComponents CreateWithComponents 1000 265.21 μs 10.173 μs 7.943 μs baseline - - - - NA
Vigilance_CreateWithComponents CreateWithComponents 100000 11,776.67 μs 138.132 μs 107.845 μs 2.41x faster 0.08x 2000.0000 2000.0000 2000.0000 16156160 B NA
Flecs_CreateWithComponents CreateWithComponents 100000 28,405.68 μs 1,254.468 μs 979.406 μs baseline - - - - NA
Vigilance_Destroy Destroy 1000 110.88 μs 19.475 μs 15.205 μs 1.60x slower 0.23x - - - 8392 B NA
Flecs_Destroy Destroy 1000 69.38 μs 4.745 μs 3.704 μs baseline - - - - NA
Vigilance_Destroy Destroy 100000 7,613.90 μs 33.997 μs 22.487 μs 1.49x slower 0.01x - - - 1048944 B NA
Flecs_Destroy Destroy 100000 5,125.64 μs 30.980 μs 24.187 μs baseline - - - - NA
Vigilance_RemoveComponent RemoveComponent 1000 24.44 μs 0.531 μs 0.414 μs 3.98x faster 0.15x - - - - NA
Flecs_RemoveComponent RemoveComponent 1000 97.29 μs 5.238 μs 3.464 μs baseline - - - - NA
Vigilance_RemoveComponent RemoveComponent 100000 1,842.47 μs 21.524 μs 16.804 μs 4.50x faster 0.05x - - - - NA
Flecs_RemoveComponent RemoveComponent 100000 8,294.40 μs 55.601 μs 43.410 μs baseline - - - - NA

Components

IterationCount=12 WarmupCount=4

Method Categories EntityCount Mean Error StdDev Ratio RatioSD Allocated Alloc Ratio
Vigilance_Get Get 1000 3.227 μs 0.0089 μs 0.0059 μs 3.70x faster 0.02x - NA
Flecs_Get Get 1000 11.951 μs 0.0896 μs 0.0648 μs baseline - NA
Vigilance_Get Get 100000 316.520 μs 2.0282 μs 1.3415 μs 3.78x faster 0.02x - NA
Flecs_Get Get 100000 1,195.861 μs 2.3303 μs 1.5414 μs baseline - NA
Vigilance_Has Has 1000 2.255 μs 0.0085 μs 0.0061 μs 5.41x faster 0.02x - NA
Flecs_Has Has 1000 12.196 μs 0.0192 μs 0.0127 μs baseline - NA
Vigilance_Has Has 100000 223.472 μs 1.3050 μs 0.8632 μs 5.48x faster 0.02x - NA
Flecs_Has Has 100000 1,225.686 μs 5.0287 μs 3.3262 μs baseline - NA
Vigilance_Set Set 1000 9.318 μs 0.1506 μs 0.1176 μs 3.67x faster 0.06x - NA
Flecs_Set Set 1000 34.166 μs 0.5483 μs 0.3965 μs baseline - NA
Vigilance_Set Set 100000 925.330 μs 4.6283 μs 3.0614 μs 3.63x faster 0.01x - NA
Flecs_Set Set 100000 3,361.391 μs 2.9880 μs 1.9764 μs baseline - NA
Vigilance_Write Write 1000 4.439 μs 0.0075 μs 0.0054 μs 3.92x faster 0.01x - NA
Flecs_Write Write 1000 17.389 μs 0.0410 μs 0.0296 μs baseline - NA
Vigilance_Write Write 100000 457.098 μs 2.6054 μs 1.8839 μs 3.50x faster 0.02x - NA
Flecs_Write Write 100000 1,597.847 μs 8.1178 μs 6.3378 μs baseline - NA

Queries

IterationCount=12 WarmupCount=4

Method Categories EntityCount IsFragmented Mean Error StdDev Ratio RatioSD Allocated Alloc Ratio
Vigilance_OneComponent OneComponent 1000 False 701.4 ns 0.95 ns 0.69 ns 1.20x faster 0.00x - NA
Flecs_OneComponent_Each OneComponent 1000 False 839.3 ns 4.87 ns 3.22 ns baseline - NA
Flecs_OneComponent_Iter OneComponent 1000 False 841.0 ns 10.94 ns 7.91 ns 1.00x slower 0.01x - NA
Vigilance_OneComponent OneComponent 1000 True 719.7 ns 2.67 ns 1.77 ns 2.19x faster 0.01x - NA
Flecs_OneComponent_Each OneComponent 1000 True 1,573.9 ns 4.86 ns 3.22 ns baseline - NA
Flecs_OneComponent_Iter OneComponent 1000 True 1,543.0 ns 4.00 ns 2.65 ns 1.02x faster 0.00x - NA
Vigilance_OneComponent OneComponent 100000 False 66,838.1 ns 118.40 ns 78.32 ns 1.05x slower 0.00x - NA
Flecs_OneComponent_Each OneComponent 100000 False 63,831.8 ns 269.54 ns 178.28 ns baseline - NA
Flecs_OneComponent_Iter OneComponent 100000 False 63,394.8 ns 50.53 ns 36.53 ns 1.01x faster 0.00x - NA
Vigilance_OneComponent OneComponent 100000 True 67,006.6 ns 464.21 ns 307.05 ns 1.01x slower 0.01x - NA
Flecs_OneComponent_Each OneComponent 100000 True 66,149.6 ns 281.04 ns 185.89 ns baseline - NA
Flecs_OneComponent_Iter OneComponent 100000 True 65,375.1 ns 90.34 ns 65.32 ns 1.01x faster 0.00x - NA
Vigilance_ThreeComponents ThreeComponents 1000 False 550.9 ns 2.03 ns 1.35 ns 1.21x faster 0.00x - NA
Flecs_ThreeComponents_Each ThreeComponents 1000 False 666.3 ns 1.37 ns 0.99 ns baseline - NA
Flecs_ThreeComponents_Iter ThreeComponents 1000 False 664.2 ns 7.05 ns 4.66 ns 1.00x faster 0.01x - NA
Vigilance_ThreeComponents ThreeComponents 1000 True 547.0 ns 1.69 ns 1.22 ns 2.21x faster 0.01x - NA
Flecs_ThreeComponents_Each ThreeComponents 1000 True 1,209.8 ns 4.07 ns 2.69 ns baseline - NA
Flecs_ThreeComponents_Iter ThreeComponents 1000 True 1,196.1 ns 4.03 ns 2.66 ns 1.01x faster 0.00x - NA
Vigilance_ThreeComponents ThreeComponents 100000 False 56,159.1 ns 82.24 ns 59.47 ns 1.11x slower 0.00x - NA
Flecs_ThreeComponents_Each ThreeComponents 100000 False 50,557.8 ns 217.05 ns 143.56 ns baseline - NA
Flecs_ThreeComponents_Iter ThreeComponents 100000 False 47,780.5 ns 116.62 ns 84.33 ns 1.06x faster 0.00x - NA
Vigilance_ThreeComponents ThreeComponents 100000 True 56,016.2 ns 69.50 ns 45.97 ns 1.08x slower 0.00x - NA
Flecs_ThreeComponents_Each ThreeComponents 100000 True 51,721.7 ns 247.33 ns 163.59 ns baseline - NA
Flecs_ThreeComponents_Iter ThreeComponents 100000 True 44,291.3 ns 174.26 ns 126.00 ns 1.17x faster 0.00x - NA
Vigilance_TwoComponents TwoComponents 1000 False 854.9 ns 2.19 ns 1.58 ns 1.19x faster 0.00x - NA
Flecs_TwoComponents_Each TwoComponents 1000 False 1,019.3 ns 2.29 ns 1.66 ns baseline - NA
Flecs_TwoComponents_Iter TwoComponents 1000 False 869.4 ns 1.64 ns 1.09 ns 1.17x faster 0.00x - NA
Vigilance_TwoComponents TwoComponents 1000 True 853.7 ns 2.94 ns 1.95 ns 2.29x faster 0.01x - NA
Flecs_TwoComponents_Each TwoComponents 1000 True 1,958.6 ns 5.68 ns 3.76 ns baseline - NA
Flecs_TwoComponents_Iter TwoComponents 1000 True 1,914.3 ns 3.72 ns 2.46 ns 1.02x faster 0.00x - NA
Vigilance_TwoComponents TwoComponents 100000 False 80,773.3 ns 134.28 ns 88.82 ns 1.02x slower 0.00x - NA
Flecs_TwoComponents_Each TwoComponents 100000 False 79,561.1 ns 246.40 ns 178.17 ns baseline - NA
Flecs_TwoComponents_Iter TwoComponents 100000 False 71,818.7 ns 124.95 ns 90.35 ns 1.11x faster 0.00x - NA
Vigilance_TwoComponents TwoComponents 100000 True 81,008.7 ns 235.33 ns 170.16 ns 1.08x slower 0.00x - NA
Flecs_TwoComponents_Each TwoComponents 100000 True 75,226.0 ns 182.98 ns 121.03 ns baseline - NA
Flecs_TwoComponents_Iter TwoComponents 100000 True 75,685.8 ns 76.01 ns 50.27 ns 1.01x slower 0.00x - NA

License

Vigilance is licensed under the zlib License.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed.  net11.0 is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.2.12 0 10/12/2026
Loading failed