This series will describe how to develop an custom asset editor step by step. This article will introduce knowledge about user-defined asset.
Just creating a class derived from UDataAsset.

For this type of asset, asset editor is not need to be developed. Developer can use build-in editor directly.
For complex user-defined asset, asset editor should be developed to edit this type of asset conveniently.
Such as BehaviorTree asset:

For developing user-defined asset, you’ll need a runtime module and editor module. I recommend to create a plugin to do this. It will be convenient to maintain your modules and apply to other UE4 project.
//Plugin module folder structure:
  -XXX_Module
	- Resource
	- Source
	  - XXX_Module   //Runtime module
	    - Private
	    - Public
	    - XXX_Module.Build.cs
	  - XXX_ModuleEidtor  //Editor module
	    - Private
	    - Public
	    - XXX_ModuleEditor.Build.cs
	- XXX_Module.uplugin
I will create such demo plugin to explain how to customize your asset editor step by step in this series. I will use VS Code editor to develop in UE4 and the step to setup VS Code with UE4 can be found in UE4 Using Visual Studio Code.