UDCore (or Unreal Directive Core), is an open-source Unreal Engine plugin that's designed from the ground-up to provide quality-of-life functionalities to enhance the development experience.
This plugin was started by Dylan "Tezenari" Amos as part of the Unreal Directive initiative to empower Unreal Engine developers with knowledge and tools to better allow them to build amazing things.
UDCore's philosophy revolves around the following --
- Adherence to Best Practices - Every feature in UDCore is designed to be efficient, easy to read, and aligned with best development practices, making it simple for developers to learn from, replicate, or extend.
- Enhancing Workflow Efficiency - UDCore is built to streamline development by exposing hidden Unreal Engine editor features, introducing new functionality, and simplifying existing tools to boost productivity.
- Universal Compatibility - UDCore's core functionality is primarily developed in C++, ensuring it is accessible and usable across C++, Blueprints and Python, making it versatile for any project.
This plugin will be updated sporadically with new functionality.
- Software: Unreal Engine 5.3 ~ 5.4
- Platform: Windows
- Async Tasks - New functionality to perform common tasks asynchronously.
- String/Text Utilities - Functions to handle and manipulate strings and text.
- Editor Actor Subsystem - A plethora of utilities and filters to that improves upon the Editor Actor Subsystem.
- Enhanced Input - New functions to simplify and improve Enhanced Input system.
Instruction on how to install the UDCore plugin. I recommend checking out the Quick Start page over on the documentation website.
UDCore can be installed directly by using the Plugin Downloader plugin on the marketplace.
-
Install Plugin Downloader from the Unreal Engine Marketplace
-
Enable the
Plugin Downloader
plugin- Open your Unreal Engine project.
- Go to
Edit
->Plugins
. - Search for
Plugin Downloader
and enable it. - Restart the Unreal Engine editor.
-
Download
UDCore
-
Go to
Edit
->Plugins
-
Click on
Download
in the upper left of thePlugins
window -
Enter the following info in the
Download Plugin
window- User: UnrealDirective
- Repo: UDCore
- Branch: main
-
Click on
Download
in the bottom right of theDownload Plugin
window -
Wait for download to complete
-
Restart the Unreal Engine editor when prompted
-
-
Enable the
UDCore
plugin- Open your Unreal Engine project.
- Go to
Edit
->Plugins
. - Search for
Plugin Downloader
and enable it. - Restart the Unreal Engine editor.
-
Clone the repository:
git clone https://github.com/UnrealDirective/UDCore.git
-
Copy the plugin to your Unreal Engine project:
- Navigate to your Unreal Engine project's
Plugins
directory. - Copy the
UDCore
folder into thePlugins
directory.
- Navigate to your Unreal Engine project's
-
Enable the plugin:
- Open your Unreal Engine project.
- Go to
Edit
>Plugins
. - Search for
UDCore
and enable it. - Restart the Unreal Engine editor.
Here are examples on how you can go about using some of the functions in UDCore. For more detailed information, please check out the documentation.
-
Async Move to Location:
.cpp #include "AI/UDAT_MoveToLocation.h" #include "GameFramework/Controller.h" #include "GameFramework/Actor.h" void AExampleCharacter::MovePlayerToLocation() { UWorld* World = GetWorld(); AController* Controller = GetController(); const FVector Destination(100.0f, 200.0f, 300.0f); constexpr float AcceptanceRadius = 100.0f; constexpr bool bDebugLineTrace = false; UUDAT_MoveToLocation* MoveToLocationTask = UUDAT_MoveToLocation::MoveToLocation( World, Controller, Destination, AcceptanceRadius, bDebugLineTrace); if (MoveToLocationTask) { MoveToLocationTask->Completed.AddDynamic(this, &ThisClass::OnMoveToLocationCompleted); } } void AExampleCharacter::OnMoveToLocationCompleted(bool bSuccess) { // Called when UUDAT_MoveToLocation has completed with either a success or fail. // Add your logic here. }
-
Contains Letters:
FString StringToCheck = "Example123" bool bHasLetters = UUDCoreFunctionLibrary::ContainsLetters(StringToCheck);
-
Contains Numbers:
FString StringToCheck = "Example123" bool bHasNumbers = UUDCoreFunctionLibrary::ContainsNumbers(StringToCheck);
-
Filter Characters:
FString StringToCheck = "Example 123 !@#" bool bFilterOutLetters = false; bool bFilterOutNumbers = false; bool bFilterOutSpecialCharacters = true; bool bFilterOutSpaces = true; // "Example 123 !@#" would become "Example123" FString FilteredString = UUDCoreFunctionLibrary::FilterCharacters( StringToCheck, bFilterOutLetters, bFilterOutNumbers, bFilterOutSpecialCharacters, bFilterOutSpaces);
-
Is Not Empty:
FText TextToCheck = "Example123" bool bIsNotEmpty = UUDCoreFunctionLibrary::IsNotEmpty(TextToCheck);
-
Focus Actors In Viewport:
TArray<AActor*> ActorsToFocus; bool bFocusInstantly = true; // Populate ActorsToFocus with actors UUDCoreEditorActorSubsystem::FocusActorsInViewport(ActorsToFocus, bFocusInstantly);
-
Get All Level Classes:
TArray<UClass*> LevelClasses = UUDCoreEditorActorSubsystem::GetAllLevelClasses();
-
Filter Static Mesh Actors:
TArray<AStaticMeshActor*> StaticMeshActors; TArray<AActor*> ActorsToFilter; // Populate ActorsToFilter with actors UUDCoreEditorActorSubsystem::FilterStaticMeshActors(StaticMeshActors, ActorsToFilter);
-
Filter Actors By Name:
TArray<AActor*> FilteredActors; TArray<AActor*> ActorsToFilter; FString ActorNameToFind = "ExampleName"; // Populate ActorsToFilter with actors UUDCoreEditorActorSubsystem::FilterActorsByName(ActorsToFilter, FilteredActors, ActorNameToFind, EUDInclusivity::Include);
-
Filter Actors By Class:
TArray<AActor*> FilteredActors; TArray<AActor*> ActorsToFilter; // Populate ActorsToFilter with actors UUDCoreEditorActorSubsystem::FilterActorsByClass(ActorsToFilter, FilteredActors, AStaticMeshActor::StaticClass(), EUDInclusivity::Include);
We welcome contributions to enhance the functionality of UDCore. Please follow these steps to contribute:
- Fork the repository.
- Create a new branch (
git checkout -b feature/YourFeature
). - Commit your changes (
git commit -am 'Add new feature'
). - Push to the branch (
git push origin feature/YourFeature
). - Create a new Pull Request.
UDCore is licensed under the MIT License. See the LICENSE file for more details.
For support, please visit our GitHub Issues page.
- Special thanks to the Unreal Engine community for their continuous support and contributions.