Skip to content

Capture Flow Plugin Documentation

Introduction

Capture Flow is a sophisticated plugin for Unreal Engine that enhances the developer's workflow by capturing time-lapsed visual histories of editor sessions. This documentation covers the Unreal Engine Client components of the plugin in detail, guiding you from installation to advanced configuration.

Example Timelapse

Features

  • Automatic Capture: Seamlessly integrate with Unreal Engine editor to capture periodic screenshots.
  • User-Friendly UI: Intuitive interface within the editor for easy control over capture settings and status visibility.
  • Idle Detection: Smart functionality to pause captures during user inactivity.
  • Customizable Settings: Extensive configurable options for intervals, processors, and more.
  • License Validation: Secure and compliant operation with built-in license management.

Getting Started

Installation

  1. Download the Plugin: Get the Capture Flow plugin from the [Plugin Repository] or [FAB Marketplace].
  2. Install the Plugin: Copy the Capture Flow plugin folder into your Unreal Engine project's Plugins directory.
  3. Enable the Plugin: Open your Unreal Engine project, navigate to Edit > Plugins, locate Capture Flow, and enable it.
  4. Configure Settings: Find the settings under Edit > Project Settings > Capture Flow and adjust to suit your project.

Launching Capture

  • Toggle Capture: Use the toolbar button in the editor for start/stop functionality.

Capture Button

  • Active State: The button changes color when capture is active.

Capture Button

Advanced Configuration

Setup

The initial setup matches the installation process, but with additional steps for customizing the plugin to your needs. If you have purchased a license, you can set an Environment Variable in your system with your License Key called CAPTURE_FLOW_LICENSE_KEY, or you can insert a LICENSE file into the plugins' config directory like so:

License File

The license file should contain your license key and no other data.

Capture Mechanics

The plugin operates by capturing the editor window at regular intervals. Depending on your configuration, the plugin can either capture any focused window or exclusively on the Unreal Engine editor window.

  • Interval Configuration: Default to capture every 30 seconds; adjustable through settings.
  • Idle Detection: Automatically suspends capture if no activity is detected, conserving resources.

Processing

  • Local Processing: Utilizes ffmpeg for turning screenshots into time-lapse videos locally.
  • Remote Processing: Sets up server-based processing for environments where local processing is unfeasible or unwanted.
  • Allows images to be collected and uploaded to a server for conversion into videos. This enables production or third party reviewing of timelapses and workflow without intervention from the user.

Configuration

Configuration

Settings

Each setting can be configured to tailor the functionality of Capture Flow to the needs of your project.

  • bCaptureFlowEnabled: Enable or disable capture functionality (default: false).

UPROPERTY(config, VisibleAnywhere, BlueprintReadOnly, Category = "CaptureFlow") bool bCaptureFlowEnabled = false;

  • CaptureProcessor: Choose between local (ECP_Local) or remote (ECP_Remote) processing.

UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "CaptureFlow") TEnumAsByte<ECaptureProcessor> CaptureProcessor = ECP_Local;

  • CaptureFlowPath: Directory path where screenshots are saved.

UPROPERTY(config, VisibleAnywhere, BlueprintReadOnly, Category = "CaptureFlow") FString CaptureFlowPath = FString::Printf(TEXT("%sCaptureFlow/"), FPlatformProcess::UserDir());

  • CaptureFlowServer: URL of the remote server for processing (if using ECP_Remote).

UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "CaptureFlow") FString CaptureFlowServer = TEXT("https://flow.unreal.dev/");

  • ffmpegPathLocal: Path to the local ffmpeg executable for local processing.

UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "CaptureFlow") FString ffmpegPathLocal = FPaths::Combine(IPluginManager::Get().FindPlugin(TEXT("CaptureFlow"))->GetBaseDir(), TEXT("ThirdParty/ffmpeg/bin/ffmpeg.exe"));

  • CaptureFlowInterval: Interval in seconds between captures (default: 30.0).

UPROPERTY(config, EditAnywhere, BlueprintReadWrite, meta = (ClampMin = "1.0", ClampMax = "3600.0"), Category = "CaptureFlow") float CaptureFlowInterval = 30.0f;

  • ffmpegDuration: Image display duration in video (default: 0.1 seconds).

UPROPERTY(config, EditAnywhere, BlueprintReadWrite, meta = (ClampMin = "0.1", ClampMax = "2.0", UIMin = "0.1", UIMax = "2.0"), Category = "CaptureFlow") float ffmpegDuration = 0.1f;

  • bCaptureOnlyEditorWindow: Whether to capture only the editor window.

UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "CaptureFlow") bool bCaptureOnlyEditorWindow = true;

  • bShouldReverseSearchWindow: Enables reverse search to capture editor window if not currently foreground.

UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "CaptureFlow") bool bShouldReverseSearchWindow = false;

  • bShouldCaptureOnStartExit: Automatically start capture on editor launch.

UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "CaptureFlow") bool bShouldCaptureOnStartExit = false;

  • bNotification: Toggles display of capture notifications.

UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "CaptureFlow") bool bNotification = true;

  • bRemoveDataOnCompletion: Deletes capture data post-processing to save storage.

UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "CaptureFlow") bool bRemoveDataOnCompletion = true;

  • IdleTimeThreshold: Time in seconds before capturing is paused due to inactivity.

UPROPERTY(config, EditAnywhere, BlueprintReadWrite, Category = "CaptureFlow") float IdleTimeThreshold = 60.0f;

API Reference

Core Classes

  • FCaptureFlowModule: Manages capture functionalities and server communication.
  • UCaptureFlowSettings: Houses capture settings, allowing fine-tuned customization.
  • UIdleDetector: Manages detection of idle states to intelligently pause capturing.

Client Dashboard

If you have purchased a license, you can access the client dashboard by navigating to the server URL and entering your license key. If there isn't a user account associated with the license key, you will be prompted to create one.

Register Flow

After that you can login at the main page:

Flow

And the dashboard is available at:

Dashboard

Dashboard

Troubleshooting

  • Capture Not Starting: Ensure plugin is correctly installed and enabled, and check configuration settings.
  • License Issues: Verify that the license key is correctly set up. Contact support for persistent issues.
  • Processing Errors: Double-check ffmpeg path or server setup.

More Examples

Watch your workflow come to life with Capture Flow! Example Timelapse

Capture the evolution of your project with ease. Example Timelapse

Monitor productivity and progress with visual timelapses. Example Timelapse

Share your development journey with captivating timelapse videos. Example Timelapse

Further Information

For further assistance, feature requests, or updates, contact us at [email protected]