Skip to content

API Reference

The 2dog API is deliberately small. Use twodog.Engine to own one Godot instance, or use the fixture classes when xUnit owns the process.

twodog

TypeUse it to
EngineConfigure, start, run, and stop embedded Godot

Engine is the normal entry point from the 2dog.engine package.

Godot

TypeUse it to
GodotInstancePump or control the instance returned by Engine.Start()

2dog adds GodotInstance to the GodotSharp API. Use the Godot class reference for nodes, resources, scenes, and other engine types.

twodog.Testing

TypeUse it to
FixtureBaseBuild a fixture with custom Godot arguments
FixtureRun tests with rendering enabled
HeadlessFixtureRun headless tests, including CI

These fixtures ship in 2dog.engine and do not depend on a specific test framework.

twodog.Testing.Xunit

TypeUse it to
RenderingCollectionShare a rendered fixture across an xUnit collection
HeadlessCollectionShare a headless fixture across an xUnit collection

The collection definitions ship in 2dog.xunit and compile into the consuming test assembly so xUnit can discover them.

Lifetime at a Glance

csharp
using var engine = new twodog.Engine(
    "MyGame", twodog.Engine.ResolveProjectDir(), args);
using var godot = engine.Start();

while (!godot.Iteration())
{
    // One frame has completed.
}

Dispose GodotInstance before its owning Engine. Only one classic instance can run in a process at a time; see Single Godot Instance.