Note
🎁 Now Joint is COMPLETELY FREE to use! (MIT LICENSE, 2025.9.12)
Please share this project to your loving folks, friends, and even family! Plus, We're going to open Fab store version of Joint for the sponsorship purpose - It's the exact same copy of Joint on GitHub with no limitation or restriction, but with a slight amount of fee that I and other future workers will gladly use for our communities' growth!
If you like this project, please buy me a beer with that one.
Warning
Joint provided in this repository is the core part of the framework of a General Purpose Modular Playback System that has been designed to run modularized playback of certain contents that works better with modular design - such as dialogue, or advanced level sequener playback that is dynamically adjusted with localization.
So, the module in this repository itself does not include any built-in content such as dialogue system. To use dialogue or other extended features, you can install and integrate extension-plugins (Derivative plugins) based on Joint into your project.
You can explore available extensions - such as Joint Native, which provides an advanced narrative system in the "Related & Derivative Projects" section of this repository. And if you don’t find what you need, creating your own sub plugin is always a great option!
We used to call Joint itself as a dialogue system before - but THIS is what it actually is. calling it as a dialogue system was a dumb decision.
About | Related & Derivative Projects | Join Joint Development Team | Main Features | Installation | Supports | Release Note
Thank you for your all support and love for Joint!
We are committed to evolving this system into a powerful, free, and friendly standard for narrative creation in the game industry - accessible to everyone, just like Blender did for 3D creation! If you're interested in contributing to our journey in any way - whether through development, 3D art, animation, marketing, feedback, sponsorship, or anything else - please feel free to reach out to us!
Showcase Video (I regret that I made this too fast to read - please slow it down as you need, unless you're not flash!)
Quick-Start Tutorial Video (Please read the pinned comments!)
Joint is Unreal Engine 4 & 5's strongest modular gameplay scripting framework for every type of projects.
Joint is a powerful tool for game developers, designers. You can create complex productions where your needs a power of modularity with whatever gameplay mechanics you want to use with Joint, using very intuitive, the state-of-the-art visual scripting interface.
Note
Joint is a "General Purpose Modular Playback System" that can be used on the many range and system, so we expand its range with sub-plugins for each category. And currently we support "Advanced Narrative System" extension in the form of Joint Native, and many others can come along, or you can make your own usage with the framework.
Do you like the dialogue production of Animal Crossing, or the dialogue system of The Witcher 3? Or do you want to create your own unique dialogue system? Check out Joint Native.
Do you need a replacement for level sequencer for better after-localization synchoronization? Use Joint for such action!
Please consider leaving a star if you loved this project! ⭐
There are some derivative projects that can be worked with Joint!
Currently We provide Joint Native, an advanced tool designed to empower developers and storytellers to create highly customizable and dynamic narrative experiences. It supports a wide range of applications, from simple dialogues to complex, interactive storytelling systems inspired by games like Hogwarts Legacy or The Witcher 3. The system offers maximum control over participants, events, and the surrounding world, enabling intricate narrative designs.
Also, We also provide Volt plugin (MIT License), Unreal Slate Architecture Animation Framework, that was originally developed as a part of Joint to provide cool editor animation and interactions. If you have interest, please take a look into it.
Please click the images above to visit each repository!
We are actively seeking skilled and passionate developers, social media managers, and designers who want to grow with us and contribute to something bigger than themselves.
The development of Joint is a purely community-driven and sponsorship-supported project. As much as we would love to financially reward the incredible efforts of those who join us, the reality is that we currently do not generate significant revenue nor receive stable, ongoing sponsorships. What drives us forward is not profit, but the shared vision of building systems and ecosystems that many studios in the gaming industry desperately need-and releasing them as open source. If you take pride in contributing to projects that give back to the community, you will find a meaningful place with us.
Note
Our team is currently focused on several exciting directions:
Standalone Joint Graph Editor: Inspired by the workflow of Jupyter Notebooks, we are building a GUI-based editor powered by a Python local server and a browser client. This will allow creators to easily design Joint Graphs outside of game engines in an intuitive, standalone environment.
General Lifelike Characters: We are deeply interested in making it possible for anyone to create NPC characters with the same level of realism you might find in AAA games such as GTA or The Witcher-characters with expressive faces, natural voices, and fluid animations. These do not need to be photo-realistic; the goal is to make the interaction with them feel truly alive.
If you are someone who wants to leave a mark on the future of gaming technology, we would love to hear from you. Please reach out to us at devgrain13@gmail.com .let’s build something extraordinary together.
Joint allows you to bring any gameplay mechanics or data you need on the script graph in the form of a module called Fragment.
Playing sounds, triggering animations, spawning actors, granting items or quests... Whatever it is, if Unreal Engine Can do it, you can make it a fragment and attach it to your playback chain.
CoreDesign.mp4
CoreDesign2.mp4
Note
In Joint Native 1.12.2, you can find 39 fragments and assets for:
- Basic Text-Based Dialogue (Text, Text Style)
- Audio and Dubbing Based Dialogue (Dialogue Voice, Dialogue Wave)
- Level Sequencer Controlled Dialogue
- Dialogue Widget Related (Custom Rendering, render size, alpha, location interpolation control, Portrait system with participants) & Participant Control
- Player Controller Control & Player Interactions Based Dialogue Control (Wait Skip until certain players are ready, Vote between players to select next branch to move)
- Conditional Branching & Flow Control & Conditional Playback of Fragments
- Sub Dialogue Control
- Networking & Localization Based Control (On Server, On Client, On Standalone, etc, Culture Specific Playback Control)
+ There are many more than these! Check out the full list here, and more will be added in the future update
Joint is deeply considered to be easy and intuitive to use, even for those who are not familiar with programming.
EasyEditing.mp4
Joint is designed to be fully multiplayer compatible. Fragments in Joint can be replicated and called RPC; via them, you can easily make your fragments work in multiplayer games.
For example, watch how Vote fragment from Joint Native make between players select the next branch to move in a dialogue in the networked game!
Networking.mp4
Note
You can check out the full blueprint logic for each of the nodes in Joint Native. It's also free, So take a look!
4. Reactive & Dynamic Playback - Even in Multiplayer, Even After Localization, Even Between Clients with Different Languages
Joint uses nodes(modules) to build up whole scripts - and using modules and modular playback system has really cool advantages over time-based playback systems!
It allows you to dynamically control the total playback length and timing of elements in your playback—such as sounds and animations—enabling perfectly timed playback delivery for your players, regardless of their client's language or cultural context. This works seamlessly even in multiplayer session and after localization, across clients using different languages, delivering a perfectly synchronized playback experience tailored to each client.
CoolSynchonizationWithModularDesign.mp4
Joint provides a bunch of cool editor features that provides the perfect editing experiences that can boost your productivity and stoping you from banging your head against a wall!
See what major editor features Joint provides!
CoolEditorFeatures1.mp4
CoolEditorFeatures2.mp4
- If the plugin is source build version, you have to change your project to C++ supported project. Open your editor and try adding a dummy C++ class to convert your project to BP & C++ from BP only project.
- Download this repository as a zip file or clone it to your workstation, then unzip the folder and rename it to
Joint. - Place the unzipped
Jointfolder into thePluginsdirectory of your Unreal project (not the engine itself). If this directory doesn’t exist, create it. - Open
Joint.upluginwith notepad, and change "EngineVersion" to your Unreal Engine version. For example, if you are using Unreal Engine 5.5.3, change it to"EngineVersion": "5.5". - Delete pre-existing /intermediate, /Saved, /Binaries folder on your project's root directory if you have.
- Right click xxxx.uproject file on your project's root directory, and press 'Generate Visual Studio File'
- Open .sin file, and press F5 to execute "build and run"- this step is crucial - it will build the actual program binaries from the source code of the plugin.
- See the Unreal Editor for your project getting opened. And close the editor if you want.
- Now you can launch your project anywhere - from Epic Games Launcher and IDE.
Tip
Check this out, especially if you've never compiled or used C++ code on your Unreal Engine before: If the plugin doesn’t launch properly, you may check your machine's Visual Studio configuration for the C++ code build to be valid. Please make sure to follow these steps:
In your Visual Studio configuration (you can modify it in Visual Studio Installer) :
- Click Modify on the 2022 version
- Go to Individual components
- Type “MSVC” in the search bar
- Check “MSVC v143 - VS 2022 C++ x64/86 build tools (v14.38-17.8)”
- Then click modify in the bottom right corner
Second, You have to install Game development with C++ workload as well.
Big thanks to "Kieran" - who posted the fix for the issue on the forum.
Original Post: https://forums.unrealengine.com/t/help-visual-studio-preferred-version-in-5-4/2001249
If you have an issue on installing our plugin, please join our official support Discord channel for further assistance.
Joint provides official documentation page that contains tutorial & release notes & news for the updates!
Come along to find further details for the lastest updates and how to use the system or to see how the system has evolved!
A Contribution means any improvement, bug fix, feature, or idea you share to help improve this Software — whether through GitHub, Discord, or elsewhere. Contributors, so you will retain the copyright to your contributions! Thus, you can reuse your contribution in other projects — just don’t break this agreement or conflict with our license.But by submitting your contribution, you give the Licensor (DevGrain, at the moment) a non-exclusive, worldwide, royalty-free license to use, modify, sublicense, and distribute your contribution — but only within this Software.
You promise your work doesn’t infringe on copyrights, patents, or trade secrets. You’re responsible if any legal issue comes up.
You can ask to change or remove your contribution within 2 months of submitting. We’ll try to honor that — unless it’s core to the Software and hard to take out.
If you need help, feel free to join our official Discord support channel. Our community is happy to assist you with any plugin-related queries.

