Where are we now.
Codename Fear, my latest Unreal Engine 5 game where you play as an amateur paranormal investigator has been in full development. Until December of 2024 it was my only project on my list, consuming all my free time. That was until I hit a bit of a writers block scenario. Mainly around some of the way I was handling the internal subsystems around story and quest management. The only problem I had was I store al my quest data in structured JSON, loaded into a UE DataTable, then accessed via my QuestManager system. This JSON data was manually edited. When I needed to add a new quest, sub quest, trigger, post quest trigger, rearrange quests, etc it became a massive hassle. Sure there are node based tools out there, but nothing that could turn my visual graph into game engine ready data.
So I have been building LoomGraph.
LoomGraph is a visual systems builder, where you can design anything backed by data. Narrative structure, quests, dialog, workflows. Visual editor meets easy JSON exports.
The Core of LoomGraph is the canvas. An interactive slate where you can drag, drop, rearrange, attribute and connect nodes. Easily visualizing data flows. Below is a screenshot of my actual workflow for my Main Quests. These are stored in a single graph, which is then exported into a single JSON file, with clean nested structure that mimics my current quest json file.
The graph allows the developer to visually build narratives. Which in my case is then exported via the application into something similar to:
[
{
"CompletedLogText": "You made your way into the old ghost town.",
"LogDescription": "I continued hiking through the woods. The old mining town should be just over this hill",
"NextQuestId": "q1",
"PrerequisiteQuests": "[]",
"QuestId": "q0",
"QuestName": "The Ghost Town",
"QuestType": "EQT_Main",
"TrackerDescription": "Travel along the old cart path.",
"description": "",
"node": "primary",
"tasks": {
"q0_t0": {
"LogDescription": "Reach the town entrance.",
"NextTaskId": "",
"Ordinal": "0",
"Quantity": "1",
"TaskId": "q0_t0",
"TaskName": "- Travel along the old cart path.",
"TaskType": "EQSTT_Location",
"TrackerHeader": "An Investigation Begins.",
"bIsOptional": "false",
"description": "",
"node": "sub",
"tasks": {
"40b01c32-e11b-456d-b9c0-05c30ee4df7d": {
"description": "",
"node": "trigger",
"title": "q0_t0_posttask"
},
"e78079f7-68ef-4fe5-b5b3-e0ba0209362c": {
"description": "",
"name": "TimeOfDay++",
"node": "trigger",
"title": "q0_t0_pretask"
}
},
"title": "q0_t0"
}
},
"title": "q0"
},
...
]
I will have more in-depth how-to videos in the coming weeks. I am still working towards release, which should be in a few weeks. Finalizing some corporation items along with a few more features and a whole lot of testing. If you are interested in beta testing, you can hit me up @ corey@loomgraph.com. All data during beta will carry over, the data is in a very solid place in the backend.
As always, keep building.
Corey