Overview
DeepLinkPlus is an editor plugin for Unreal Engine 4.27 and 5.8 on Windows that extends DeepLink (required) with more link types. Each link type has a menu entry that copies the link and an endpoint that performs the action when the link is opened. Links use the URL scheme configured in DeepLink and reach a running editor the same way.
- Blueprint nodes — focus a node or comment, or open the node’s jump target (the function, macro or graph it refers to).
- Behavior Tree nodes (UE 5.3 and newer, so available on 5.8) — open the tree and focus or double-click the node.
- Level camera positions — open a map with the perspective viewport at the saved location and rotation.
- Content Browser folders — show a folder in the Content Browser.
- Level actors (UE 5.3 and newer, One File Per Actor levels) — open the level, load the actor in World Partition maps, select it and frame the camera on it.
- Automation tests (UE 5) — open the Session Frontend and run every test that matches a filter.
- C++ base class and URL builders for your own link types.
Requirements
| Requirement | Details |
|---|---|
| Unreal Engine | 4.27 and 5.8 (verified clean on both) |
| Modules | DeepLinkPlusUrls (Runtime), DeepLinkPlus (EditorNoCommandlet), DeepLinkPlusGraphNodeEndpoint (EditorNoCommandlet), DeepLinkPlusBlueprintNodeEndpoint (EditorNoCommandlet), DeepLinkPlusBehaviorTreeNodeEndpoint (EditorNoCommandlet), DeepLinkPlusLevelAtCameraCoordsEndpoint (EditorNoCommandlet), DeepLinkPlusContentFolderEndpoint (EditorNoCommandlet), DeepLinkPlusLevelActorEndpoint (EditorNoCommandlet), DeepLinkPlusAutomationEndpoint (EditorNoCommandlet) |
| Dependencies | DeepLink plugin (required; enabled automatically together with DeepLinkPlus). Its settings define the URL scheme. |
| Language | Editor menu commands; extension API in C++. The plugin adds no Blueprint nodes. |
| Platforms | Win64 only (Windows editor), the same as DeepLink. |
Installation
- Install DeepLink and DeepLinkPlus: copy both folders into your project’s
Pluginsfolder (or install them to the engine from Fab). - Open the project; C++ projects build the plugin modules on the first start.
- Enable DeepLinkPlus in Edit > Plugins (DeepLink is enabled with it) and restart the editor.
- C++ only: add the modules you use to your editor module’s Build.cs, for example
"DeepLinkPlus","DeepLinkPlusUrls"and"EditorSubsystem".
Quick start
In the editor
- Right-click a node in a Blueprint graph and choose Copy 'Focus node' URL.
- Paste the link into chat or a task and click it: the editor opens the Blueprint and focuses the node.
- In a level viewport set to Perspective, open the Camera menu of the viewport toolbar (UE 5.8) or the viewport options menu (UE 4.27) and choose Copy camera coords URL. Opening the link loads the map with the camera at that spot.
DeepLinkPlus has no Blueprint nodes; it is used through these menu entries. For your own link type, derive from the C++ base class:
C++: a custom endpoint
// MyEditorModule.Build.cs:
// PrivateDependencyModuleNames.AddRange(new string[] { "DeepLinkPlus", "DeepLinkPlusUrls", "EditorSubsystem" });
// MyDeepLinkEndpoint.h
#pragma once
#include "DeepLinkPlusEndpoint.h"
#include "MyDeepLinkEndpoint.generated.h"
UCLASS()
class UMyDeepLinkEndpoint : public UDeepLinkPlusEndpoint
{
GENERATED_BODY()
protected:
// Handles myproject://my_endpoint/<path>?<query>
virtual FName GetEndpointId() const override { return TEXT("my_endpoint"); }
// Called once the asset registry has finished loading; earlier requests are queued.
virtual void ProcessRequest(const FString& Path, const FDeepLinkQueryParamsMap& QueryParams) const override
{
UE_LOG(LogTemp, Display, TEXT("my_endpoint opened with %s"), *Path);
}
};
// Anywhere in editor code: build a link that reveals a folder
#include "DeepLinkPlusContentFolderUrls.h"
const FString FolderUrl = FDeepLinkPlusContentFolderUrls::GetUrlForContentFolder(TEXT("/Game/Maps"));
Editor subsystems are created automatically, so the endpoint is registered as soon as your module is loaded.
Link types
Every menu entry below sits in a Deep Link section of the menu named in the table and copies the link to the clipboard.
| Node | Type | Description |
|---|---|---|
Copy 'Focus node' URL | Callable | Node context menu of a Blueprint graph (any Blueprint node or comment) and, on UE 5.8, of a Behavior Tree graph. Opening the link opens the asset and focuses the node. |
Copy 'Open node' URL | Callable | Same menus, shown only for nodes that have a jump target (for example a function call). Blueprint: opens the target the way a double-click would. Behavior Tree: double-clicks the node (for example opens a sub tree). |
Copy camera coords URL | Callable | Level viewport: Camera menu of the viewport toolbar on UE 5.8, viewport options menu on UE 4.27; enabled only for Perspective viewports. Opening the link opens the map (unless it is already the current level) and moves the first perspective viewport to the saved location and rotation. |
Copy folder URL | Callable | Content Browser folder context menu, with exactly one folder selected. Opening the link shows the folder in the Content Browser. |
Copy selected actor URL(s) | Callable | UE 5.8. Actor context menu of the level viewport and World Outliner; one link per selected actor that is saved in its own package (One File Per Actor). Opening the link opens the actor’s level, loads the actor if the level uses World Partition, selects it and moves the viewport cameras to it. |
automation link | Link | UE 5.8. No menu entry; write it by hand (see formats). Opening it opens the Session Frontend on the Automation tab and, after a short delay that lets the test list load, runs every test whose name contains the filter. |
Link formats
<scheme> is the scheme set in DeepLink’s Deep Link URLs project settings.
| Endpoint | Format |
|---|---|
graph_node | <scheme>://graph_node/<AssetPackage>?guid=<NodeGuid>, with &open_jump_target for the jump-target variant |
level_coords | <scheme>://level_coords/<MapPackage>?lx=<X>&ly=<Y>&lz=<Z>&rp=<Pitch>&ry=<Yaw>&rr=<Roll> |
content_folder | <scheme>://content_folder/<FolderPath>, for example myproject://content_folder/Game/Maps |
level_actor | <scheme>://level_actor/<ExternalActorPackage>?actor_name=<URL-encoded actor label> |
automation | <scheme>://automation?test_name_filter=<URL-encoded filter>, spaces as %20, for example myproject://automation?test_name_filter=Project.Functional |
C++ API
Link builders (module DeepLinkPlusUrls)
Static helpers that return a complete link using the scheme DeepLink registered, or an empty string when DeepLink’s server module is not loaded (for example in a packaged game).
| Node | Type | Description |
|---|---|---|
| FDeepLinkPlusGraphNodeUrls | Class | GetFocusUrlForNode(FName Package, FGuid NodeGuid), GetOpenJumpTargetUrlForNode(FName Package, FGuid NodeGuid); constants EndpointId, GuidQueryParamName, OpenJumpTargetQueryParamName. |
| FDeepLinkPlusLevelAtCameraCoordsUrls | Class | GetUrlForLevelAtLocationAtRotation(FName Package, const FVector& Location, const FRotator& Rotation). |
| FDeepLinkPlusContentFolderUrls | Class | GetUrlForContentFolder(FName FolderPath). |
| FDeepLinkPlusContentUrls | Class | GetUrlForPackage(FName PackageName) — a DeepLink content link that reveals the asset. |
| FDeepLinkPlusLevelActorUrls | Class | GetUrlForLevelActor(FName Package, const FString& ActorName). |
| FDeepLinkPlusAutomationUrls | Class | Constants EndpointId and TestNameFilterParamName. |
Endpoints and extension points
| Node | Type | Description |
|---|---|---|
| UDeepLinkPlusEndpoint | Class | Abstract editor subsystem (module DeepLinkPlus). Override GetEndpointId() and ProcessRequest(Path, QueryParams); registration with DeepLink and queuing while the asset registry loads are handled for you. |
| UDeepLinkPlusGraphNodeEndpoint | Class | The graph_node endpoint. OnRequest() returns a multicast delegate (FGuid NodeGuid, UObject* Asset, bool bOpenJumpTarget); bind it to support another graph editor. |
| UDeepLinkPlusGraphNodeEndpointEditorExtension | Class | Adds the copy entries to graph node context menus. OnNodeMenuExtensionHookRequest() returns a multicast delegate (const UEdGraphNode*, const UEdGraph*, TSet<FName>& ExtensionHooks); add a menu extension hook name for the nodes your graph editor should offer links for. |
| FDeepLinkPlusGraphNodeEndpointUtils | Class | GetGraphOwnerAsset(const UEdGraph*), GetFocusUrlForNodeInGraph(Node, Graph), GetOpenJumpTargetUrlForNodeInGraph(Node, Graph). |
| FDeepLinkPlusModule | Class | Registers the menu icon style: SlateStyleSetName and IconSlateStyleName for FSlateIcons on your own entries. |
The Blueprint and Behavior Tree modules are working examples of the graph-node extension points.
Troubleshooting
| Symptom | Cause and fix |
|---|---|
| Links open nothing or a different editor | Registration and forwarding are done by DeepLink. Check its troubleshooting: start the editor once with the plugins enabled and give each project its own scheme. |
| No Copy camera coords URL entry, or it is greyed out | On UE 5.8 the entry is in the Camera menu of the viewport toolbar, on UE 4.27 in the viewport options menu. It is enabled only while the viewport shows the Perspective view. |
| No Copy selected actor URL(s) entry | Needs UE 5 and actors saved in their own packages (One File Per Actor, the default for World Partition levels). Actors stored inside the map package cannot be linked. |
| Behavior Tree nodes have no Deep Link entries | Behavior Tree links need UE 5.3 or newer; they are not available on UE 4.27. |
Log: guid query param is missing. | The graph_node link was cut off when it was pasted. Copy it again; keep the whole query string. |
Log: Failed loading asset for path ... or Asset for path ... is not a UWorld. | The asset or map was moved, deleted or given a new name, or the link points at a non-map asset for a camera link. Copy a new link. |
| An automation link opens the Session Frontend but runs nothing | The filter matches no test name, or spaces were not encoded as %20. Check the test names in the Automation tab. |
Credits
© 2026 Alpha XP — alphaxp.net · Support: support@alphaxp.net. Built and verified for Unreal Engine 4.27 and 5.8.