{"id":2885,"date":"2022-04-18T12:18:49","date_gmt":"2022-04-18T10:18:49","guid":{"rendered":"https:\/\/store.algosyntax.com\/?post_type=asx-lms-tutorial-cpt&#038;p=2885"},"modified":"2026-03-09T09:14:17","modified_gmt":"2026-03-09T07:14:17","slug":"ue5-how-to-create-a-plugin-from-a-module","status":"publish","type":"asx-lms-tutorial-cpt","link":"https:\/\/store.algosyntax.com\/tutorials\/unreal-engine\/ue5-how-to-create-a-plugin-from-a-module\/","title":{"rendered":"UE5 How To Create A Plugin From A Module"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"2885\" class=\"elementor elementor-2885\" data-elementor-post-type=\"asx-lms-tutorial-cpt\">\n\t\t\t\t<div class=\"elementor-element elementor-element-0d2816d e-con-full e-flex e-con e-parent\" data-id=\"0d2816d\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-17cc8a2 elementor-widget elementor-widget-text-editor\" data-id=\"17cc8a2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>This is a guide for <a href=\"https:\/\/docs.unrealengine.com\/4.27\/en-US\/ProductionPipelines\/Plugins\/#creatingnewplugins\" target=\"_blank\" rel=\"noopener\">unreal engine plugin development<\/a> which lays out brief but useful steps to take an unreal engine custom module and make it a plugin. This assumes some idea of what a module is. For extensive explanations, See our Unreal Engine Plugin Development Course.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b70dce1 elementor-widget elementor-widget-theme-post-featured-image elementor-widget-image\" data-id=\"b70dce1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"theme-post-featured-image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"639\" height=\"474\" src=\"https:\/\/store.algosyntax.com\/wp-content\/uploads\/tutorials\/unreal-engine\/plugin-development\/unreal-engine-plugins-folder-wpp1650303243226.png\" class=\"attachment-full size-full wp-image-2929\" alt=\"Unreal Engine Plugins Folder\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-809bce2 e-con-full e-flex e-con e-parent\" data-id=\"809bce2\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-df2fe0d elementor-widget elementor-widget-heading\" data-id=\"df2fe0d\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">How to convert module(s) into a plugin in Unreal Engine. Quick Steps<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c1f95c5 elementor-widget elementor-widget-text-editor\" data-id=\"c1f95c5\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<ol><li><strong>Create The Root Plugins Folder<br \/><\/strong>Create the &#8220;Plugins&#8221; folder at the root of your project if you don&#8217;t have one.<br \/><br \/><\/li><li><strong>Create Your Plugin Folder<br \/><\/strong>Decide on a name for your plugin and create a folder with that name inside the &#8220;Plugins&#8221; folder.<br \/><br \/><\/li><li><strong>Create the &#8220;Source&#8221; Folder<br \/><\/strong>The Source Folder of the plugin will host the modules.<br \/><br \/><\/li><li><strong>Paste Module(s) Folder Into Source Folder<br \/><\/strong>A plugin can have or use multiple modules. All your modules go inside the Source folder.<p>\u00a0<\/p><\/li><li><strong>Create The .uplugin File<br \/><\/strong>A JSON file describing plugin properties and the modules it needs\/uses.<br \/><strong><br \/><\/strong><\/li><li><strong> Reference the module(s) in the .uplugin file<br \/><\/strong>Module name and properties go inside the &#8220;Modules&#8221; Array.<p>\u00a0<\/p><\/li><\/ol>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-89fd6eb e-con-full e-flex e-con e-parent\" data-id=\"89fd6eb\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-05faaad elementor-widget elementor-widget-heading\" data-id=\"05faaad\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Steps Explanation<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-8958f19 elementor-widget elementor-widget-heading\" data-id=\"8958f19\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">1. The Root Plugins Folder<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e408fd7 elementor-widget elementor-widget-text-editor\" data-id=\"e408fd7\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>The Plugins folder name has to be specifically &#8220;Plugins&#8221; because Unreal Build Tool is hardcoded to look for the name &#8220;Plugins&#8221; in the root folder. This folder is meant to host multiple plugins, including the one you&#8217;re about to create.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-b00c52c elementor-widget elementor-widget-heading\" data-id=\"b00c52c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">2. Your Actual Plugin Folder<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3eca5ad elementor-widget elementor-widget-text-editor\" data-id=\"3eca5ad\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>The resulting structure for the folders should look something like this at this point : &#8220;Plugins\/MyPlugin\/&#8221;.<\/p><p>You can name your plugin whatever you like, as long it&#8217;s folder is insider the &#8220;Plugins&#8221; folder.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-07100eb elementor-widget elementor-widget-heading\" data-id=\"07100eb\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">3. The Source Folder<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-43028bf elementor-widget elementor-widget-text-editor\" data-id=\"43028bf\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>All Modules go inside the Source folder. Expected structure at this point:<\/p><p>&#8220;Plugins\/MyPlugin\/Source&#8221;.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-715250b elementor-widget elementor-widget-heading\" data-id=\"715250b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">4. The Modules<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7690493 elementor-widget elementor-widget-text-editor\" data-id=\"7690493\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>Your Modules do not need to have the same name as the Plugin or the plugin. Give your module(s) whatever name is fit.<\/p><p>Expected Structure<\/p><p>&#8220;Plugins\/MyPlugin\/Source\/MathModule&#8221;.<\/p><p>&#8220;Plugins\/MyPlugin\/Source\/AnimationModule&#8221;.<\/p><p>&#8230;etc.<\/p><p>The plugin can host as many <a href=\"https:\/\/docs.unrealengine.com\/5.0\/en-US\/API\/Runtime\/Projects\/FModuleDescriptor\/\" target=\"_blank\" rel=\"noopener\">modules<\/a> as required. In addition to content. This is covered in our Unreal Engine Plugin Development Course.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-f6426b1 elementor-widget elementor-widget-heading\" data-id=\"f6426b1\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t\t<h3 class=\"elementor-heading-title elementor-size-default\">5. The uplugin file<\/h3>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1e9e845 elementor-widget elementor-widget-text-editor\" data-id=\"1e9e845\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p>The <a href=\"https:\/\/docs.unrealengine.com\/5.0\/en-US\/API\/Runtime\/Projects\/FPluginDescriptor\/\" target=\"_blank\" rel=\"noopener\">Uplugin file<\/a> describes the plugin&#8217;s properties and the modules it will use.<\/p><p>Expected Structure after creation.<\/p><p>Plugins\/MyPlugin\/MyPlugin.uplugin<\/p><p>The reason we are creating this after the source folder is that we will be referencing the modules that are in the source folder, inside the Uplugin.\u00a0<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"featured_media":2929,"template":"","asx-lms-tutorial-categories":[55,48,45],"asx-lms-tutorial-tags":[46],"class_list":["post-2885","asx-lms-tutorial-cpt","type-asx-lms-tutorial-cpt","status-publish","has-post-thumbnail","hentry","asx-lms-tutorial-categories-plugin-development","asx-lms-tutorial-categories-unreal-build-tool","asx-lms-tutorial-categories-unreal-engine","asx-lms-tutorial-tags-cpp","entry","has-media"],"acf":[],"_links":{"self":[{"href":"https:\/\/store.algosyntax.com\/asx-rest\/wp\/v2\/asx-lms-tutorial-cpt\/2885","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/store.algosyntax.com\/asx-rest\/wp\/v2\/asx-lms-tutorial-cpt"}],"about":[{"href":"https:\/\/store.algosyntax.com\/asx-rest\/wp\/v2\/types\/asx-lms-tutorial-cpt"}],"version-history":[{"count":0,"href":"https:\/\/store.algosyntax.com\/asx-rest\/wp\/v2\/asx-lms-tutorial-cpt\/2885\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/store.algosyntax.com\/asx-rest\/wp\/v2\/media\/2929"}],"wp:attachment":[{"href":"https:\/\/store.algosyntax.com\/asx-rest\/wp\/v2\/media?parent=2885"}],"wp:term":[{"taxonomy":"asx-lms-tutorial-categories","embeddable":true,"href":"https:\/\/store.algosyntax.com\/asx-rest\/wp\/v2\/asx-lms-tutorial-categories?post=2885"},{"taxonomy":"asx-lms-tutorial-tags","embeddable":true,"href":"https:\/\/store.algosyntax.com\/asx-rest\/wp\/v2\/asx-lms-tutorial-tags?post=2885"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}