How to learn Tool Development - Editor Scripting?

Hi. I realised that I really enjoy Tool Development and Editor Scripting while making my own dialogue system in C++. I made custom k2node’s and made a context menu for custom nodes etc. But when i’m doing it, I found myself relying on AI assistance more than I’d like. The issue wasn’t the logic, i knew what i want to do but for an example I had to ask AI things like “which spesific function do i need to override to change custom node’s color on blueprint editor”. Because i couldn’t documentation or tutorials about that.

For instance, i attempted to build custom graph for my dialogue system but i failed. I had to use UObject based blueprint as if it were my custom graph, because i didn’t know what i was supposed to do.

I want to break this reliance and learn how to find these answers myself. Could any Tool Programmers share a learning Tool Programmer roadmap? Specifically, how do you navigate the Engine Source or find these specific editor overrides without needing AI as a guide? Any resources or advice would be greatly appreciated. Thanks!

Hey!
From my experience it’s the best when a similar tool or just a singular feature, like the one you want to create, already exists in some form within the engine.

For instance, I created a custom asset editor for the item definitions in my game, including a mockup “component” list, a viewport and multiple detail views.
Also I wanted to have multiple editor modes for the item definition to split all my properties into more organized groups.

It wasn’t an easy task, but I knew that certain features already existed in the engine here and there.
E.g.,

  • Reading through the source code of the Behavior Tree editor mode to see how they manage multiple editor modes.
  • Checking the new State Tree editor (to use their state tree visualization as my mockup component list).
  • Going through the Niagara Asset Editor to see how I could create my own little viewport window.

This is something I came up with, all by reading through the source code of UE and looking into other asset editors.

However, I often found myself not knowing where exactly I should search for the implementation of these things.
What helped me a lot was the Widget Reflector , which lets you quickly pick and navigate to slate widgets that got created (the viewport or the state tree nodes for instance)

Also, searching for tooltips (in rider the shortcut is: shift+shift) often led me to the implementation of the things I was looking for.

Generally speaking, reading through the engine source code is the way to go :grinning_face_with_smiling_eyes:

Regarding Tool Menus, in case you haven’t heard of it before, there is an option called “Display UI Extension Points” in the Editor Preferences.
Enabling this (after restarting UE) will display all extendable areas that you can inject custom widgets into using the Tool Menus framework.

You mentioned you wanted to build a custom graph.
So why don’t you look into asset editors for e.g., GameplayCue, CameraRigAsset, MetaSoundSource, BehaviorTree, etc. ?

1 Like

Thank you for all tips and informations, it will definetly help. I will check out about Widget Refector - Display UI extension point. Especially i didnt know about display ui extension point. And reading source code is the new thing for me but i definitely try it. Thank you so much again!

1 Like

:grinning_face: If you like we can stay in contact

1 Like

Sure thing!

1 Like