I’m going to apply the plug-in I made to the game project and package it.
Which folder should I add the plug-in to?
Is it the Plugins folder of the game project? Or is it the Plugins folder of the engine?
This is a great reference for what you are asking: Plugins in Unreal Engine | Unreal Engine 5.0 Documentation
Plugin Folders
In order for Plugins to be found, they must be located in one of the search paths for Plugins, either in your project, or in the Engine itself.
Plugin Type Search Path Engine /[UE4 Root]/Engine/Plugins/[Plugin Name]/ Game /[Project Root]/Plugins/[Plugin Name]/ Code in Plugins
When generating project files for Visual Studio or Xcode, any Plugins that have
Source
folders (containing.Build.cs
files) will be added to your project files to make it easier to navigate to their source code. These Plugins will automatically be compiled by UBT when compiling your game project.Plugins are allowed to have any number of Module source directories. Most Plugins will only have one Module, but it is possible to create multiple, for example, if a Plugin contains some Editor-only functionality, and other code that is intended to run during the game.
For the most part, Plugin source file layout is the same as any other C++ Module in the Engine.
Plugins are able to declare new reflected types (
UCLASS
,USTRUCT
, etc.) in header files within a Module’sSource
directory (or one of its subdirectories). The Engine’s build system will detect these files and generate code as needed to support the new types. You will need to follow the normal rules for usingUObjects
within C++ modules, such as including the generated header file and the Module’sgenerated.inl
file in one of your Module’s source files.UE4 supports interdependent Modules and Plugins. Project Modules can depend on Plugins by enabling the Plugins in its .uproject file. Similarly, Plugins indicate dependency by enabling other Plugins within their own .uplugin files. There is one important restriction, however, which is that Plugins and Modules are broken into hierarchical levels, and can only depend on other Plugins or Modules at the same level or higher. For example, although a Project Module can depend on an Engine Module, an Engine Module cannot depend on a Project Module. This is because the Engine (and all of its Plugins and Modules) is higher-level than any Project, as it must be able to build without a Project. The following diagram indicates the hierarchy of dependency levels between Projects and Modules:
Arrows indicate possible dependency. Each Plugin or Module type can depend on others at its own level or higher.