RadicalBeard.Filament.Abstractions 0.1.0

dotnet add package RadicalBeard.Filament.Abstractions --version 0.1.0
                    
NuGet\Install-Package RadicalBeard.Filament.Abstractions -Version 0.1.0
                    
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="RadicalBeard.Filament.Abstractions" Version="0.1.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="RadicalBeard.Filament.Abstractions" Version="0.1.0" />
                    
Directory.Packages.props
<PackageReference Include="RadicalBeard.Filament.Abstractions" />
                    
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 RadicalBeard.Filament.Abstractions --version 0.1.0
                    
#r "nuget: RadicalBeard.Filament.Abstractions, 0.1.0"
                    
#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 RadicalBeard.Filament.Abstractions@0.1.0
                    
#: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=RadicalBeard.Filament.Abstractions&version=0.1.0
                    
Install as a Cake Addin
#tool nuget:?package=RadicalBeard.Filament.Abstractions&version=0.1.0
                    
Install as a Cake Tool

Filament

Filament is a small .NET framework for data-driven game behavior: C# owns the engine boundary, Lua owns fast-iteration behavior logic, and TOML owns world configuration.

The repository is ready for source checkout use, public NuGet packages, local/private NuGet feeds, and agent-assisted playtest loops.

What is included

  • Filament.Abstractions: [Scriptable], [ScriptMember], Result, Option, LuaError, and LuaRef.
  • Filament.Core: hardened MoonSharp Lua modules, hot reload, last-good script fallback, C# to Lua marshalling, Lua to C# return coercion, and sandbox verbs.
  • Filament.SourceGen: analyzer/source generator for [Scriptable] converters.
  • Filament.Config: TOML world parsing, normalized entity props, typed prop access, and world diffs.
  • Filament.Godot: Godot 4.6 .NET adapter and Godot value-type marshalling.
  • demo/: console demo for Lua loading, calls, and hot reload.
  • playtest/: MCP server that launches a build and collects structured human playtest feedback through a local browser survey.

Requirements

  • .NET SDK 10.0.100 or newer in the 10.0 line.
  • Godot 4.6 .NET only if you use Filament.Godot.
  • Python 3.11+ and uv only if you use the playtest MCP server.

The repo includes global.json so dotnet resolves a compatible 10.0 SDK.

Quick start

dotnet restore filament.slnx
dotnet test filament.slnx
dotnet run --project demo/Filament.Demo.csproj -- --ticks 3

Run without --ticks to keep the demo alive for hot reload. From a source checkout, the demo loads demo/lua/policy.lua; while it is running, edit that file and watch the output change. Standalone binary launches fall back to the copied lua/ directory beside the executable.

One-command verification

Any platform with .NET:

dotnet run --project tools/Filament.Verify/Filament.Verify.csproj

macOS/Linux:

scripts/verify.sh

Windows or any machine with PowerShell 7:

./scripts/verify.ps1

These run the same .NET verifier: build, format check, tests, demo smoke, playtest-agent smoke, package packing, and fresh package-consumer checks.

Use from a source checkout

For a game or tool in the same repository, reference the runtime project you need plus the source generator as an analyzer:

<ProjectReference Include="path/to/Filament.Core/Filament.Core.csproj" />
<ProjectReference Include="path/to/Filament.SourceGen/Filament.SourceGen.csproj"
                  OutputItemType="Analyzer"
                  ReferenceOutputAssembly="false" />

For Godot:

<ProjectReference Include="path/to/Filament.Godot/Filament.Godot.csproj" />

Add ScriptRegistryNode near the root of a scene and keep Lua behavior modules under res://lua.

Pack locally

scripts/package-smoke.sh

A package consumer should be able to add RadicalBeard.Filament.Core and immediately use [Scriptable]; the analyzer/source generator is included in the package. Public package IDs use the RadicalBeard.Filament.* prefix:

dotnet add package RadicalBeard.Filament.Core --version 0.1.0

The C# namespaces remain Filament and Filament.Config. See docs/distribution.md for the verification command.

For usage examples, see docs/package-usage.md, docs/scripting.md, and docs/godot.md.

Agent playtest MCP

This repo includes .mcp.json for MCP clients that support project-level MCP configuration. It registers filament-playtest with:

uv run --script playtest/server.py

The tool accepts a launch_dir containing filament.toml; the root filament.toml launches the console demo. See docs/agent-setup.md and playtest/README.md.

Development checks

macOS/Linux:

scripts/verify.sh

Windows/PowerShell:

./scripts/verify.ps1
Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  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. 
.NET Core netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.1 is compatible. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETStandard 2.1

    • No dependencies.

NuGet packages (3)

Showing the top 3 NuGet packages that depend on RadicalBeard.Filament.Abstractions:

Package Downloads
RadicalBeard.Filament.Core

Engine-free Filament Lua sandbox, hot reload, marshalling, and script dispatch.

RadicalBeard.Filament.Godot

Godot 4.6 adapter and value-type marshalling for Filament.

RadicalBeard.Filament.Config

TOML world configuration parsing, property access, and diffing for Filament.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.1.0 181 6/2/2026