reckfellENGINE

Frame recording: OGV, PNG and audio

Working CLI recording, frame counts, formats and result checks.

On this page

What Movie Maker does

Movie Maker runs a project with fixed timing and records its rendered window plus mixed audio. It records project output, not the desktop, and is not a video editor. Duration follows recorded frame count and FPS; computing those frames can take a different amount of wall-clock time.

Prepare a test project

Create a Control level, attach RecordingSlate.cs, build C# and assign it as the main level. Normal F6 shows a moving blue square and time. Use even viewport dimensions, such as 1280 × 720; the teaching clip uses 512 × 288.

RecordingSlate.cs
C#
using Reckfell;

public partial class RecordingSlate : Control
{
    private double _time;
    private Label _label = null!;

    public override void _Ready()
    {
        SetAnchorsAndOffsetsPreset(LayoutPreset.FullRect);
        _label = new Label { Position = new Vector2(16, 12) };
        AddChild(_label);
    }

    public override void _Process(double delta)
    {
        _time += delta;
        _label.Text = $"Reckfell 1.0.0   {_time:0.00} s";
        QueueRedraw();
    }

    public override void _Draw()
    {
        DrawRect(new Rect2(Vector2.Zero, Size), new Color(.03f, .03f, .04f));
        float x = 24 + (float)(_time * 100 % Mathf.Max(1, Size.X - 96));
        DrawRect(new Rect2(x, 70, 64, 64), new Color(.15f, .35f, 1));
        DrawLine(new Vector2(24, 150), new Vector2(Size.X - 24, 150), Colors.White, 2);
    }
}

Record four seconds from PowerShell

Set the actual Reckfell console binary in the first line and your project in the second. A new Capture subdirectory separates the run from old frames. The project must contain project.reckfell, have an assigned main level and a completed C# build.

PowerShell
$engine = 'C:/Tools/Reckfell/Reckfell Engine.console.exe'
$project = 'C:/Projects/RecordingDemo'
$output = Join-Path $project ('Capture/' + (Get-Date -Format 'yyyyMMdd-HHmmss'))
New-Item -ItemType Directory -Path $output
& $engine --path $project --write-movie "$output/slate.ogv" --fixed-fps 30 --quit-after 120 --disable-vsync

Expect slate.ogv and a 120 frames at 30 FPS message: four seconds of video. Here --quit-after limits recorded run iterations, not seconds. Without an explicit finish, recording continues until the application closes or calls GetTree().Quit().

Do not add --headless; normal headless uses a dummy renderer and cannot supply these frames. A working graphics driver is required. --disable-vsync can reduce synchronization waits but does not guarantee faster-than-real-time recording. Simulation timing and hardware recording speed are separate.

Choose the output

OutputContents and purpose
.ogvTheora + Vorbis; compact and playable with built-in VideoStreamPlayer; dimensions must be even
.pngLossless PNG sequence plus separate PCM WAV; useful for editing and frame inspection, with greater storage use
.aviMJPEG + PCM; large files with 32-bit size fields; check the target player and avoid long high-bitrate captures
MP4 / WebMSeparate transcoding or a custom MovieWriter; changing the extension does not create a writer

For PNG, use the variables above and the same newly created directory:

PowerShell
& $engine --path $project --write-movie "$output/frames.png" --fixed-fps 30 --quit-after 120 --disable-vsync

This creates frames00000000.png, subsequent numbered frames and frames.wav, not one frames.png. Use the same FPS when assembling them externally. Use a new directory for each new sequence so leftover higher-numbered frames cannot enter an edit.

AVI example:

PowerShell
& $engine --path $project --write-movie "$output/slate.avi" --fixed-fps 30 --quit-after 120 --disable-vsync

Other containers/codecs need a MovieWriter implementation or an external tool such as FFmpeg. Installing it is unnecessary for these three built-in outputs and is not performed by these commands.

Settings and audio

Project SettingsPurpose
editor/movie_writer/fpsFPS for ordinary editor Movie Maker runs; CLI --fixed-fps sets the run explicitly
editor/movie_writer/movie_fileEditor recording path
editor/movie_writer/video_qualityThe writer's compression quality, not scene-rendering quality
editor/movie_writer/mix_rateAudio rate; 48000 Hz divides evenly into 30/60 FPS
editor/movie_writer/ogv/keyframe_intervalOGV keyframe interval, affecting compression and later seeking

The PNG writer produces 32-bit PCM WAV; AVI bit-depth settings do not change that format. The engine warns when audio rate does not divide evenly by FPS. A clip without active sounds can still contain a quiet audio track.

In the editor, use Open Movie Maker Settings…, choose the file, enable Enable Movie Maker Mode, then run. Disable recording before ordinary interactive testing. End normally so the writer finalizes indices and container sizes; forcibly terminating the process can leave an incomplete file.

Resolution and quality

The recording-start log reports actual width and height. Configure the project viewport before running. If the window and output sizes differ, the current writer can crop to the output aspect and resize; inspect frame edges as well as file dimensions. High graphics quality does not automatically change resolution.

For reproducible footage, use fixed data, random seeds and local resources. Movie Maker does not make network responses or user actions deterministic. Test a short segment with the intended settings before a long render.

Verify the result

Compare logged frame count, FPS and expected duration. Open the beginning and end; check movement, dimensions and audio. Try the ready-made OGV in the built-in VideoDemo. This guide's checks also decode actual PNG/JPEG frames, validate WAV and play OGV; that is not certification of every external player.

If recording never starts, check writer extension, output directory, permissions and free space. For empty frames, check the chosen level, graphics driver and absence of headless. For a short file, inspect gameplay Quit conditions. Do not stop solely by wall-clock duration; expensive frames can take longer to compute.

Reckfell Engine documentationBack to top ↑
QUICK LINKSGetting startedEntity hierarchyC# & .NET 10Scenes and prefabs
Reckfell guides and full API K
reckfellENGINE
RECKFELL ACCOUNT

Sign in

Sign in to your Reckfell account.

One account for the entire Reckfell platform.