<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Unreal Engine 4 Archives - Couch Learn</title>
	<atom:link href="https://couchlearn.com/category/unreal-engine/unreal-engine-4/feed/" rel="self" type="application/rss+xml" />
	<link>https://couchlearn.com/category/unreal-engine/unreal-engine-4/</link>
	<description>Detailed Game Programming Tutorials</description>
	<lastBuildDate>Sun, 30 Mar 2025 23:02:38 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.5</generator>

<image>
	<url>https://couchlearn.com/wp-content/uploads/2020/05/cropped-logolarge-32x32.png</url>
	<title>Unreal Engine 4 Archives - Couch Learn</title>
	<link>https://couchlearn.com/category/unreal-engine/unreal-engine-4/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>How to use Data Tables in your Unreal Engine 5 game</title>
		<link>https://couchlearn.com/how-to-use-data-tables-in-your-unreal-engine-5-game/</link>
					<comments>https://couchlearn.com/how-to-use-data-tables-in-your-unreal-engine-5-game/#respond</comments>
		
		<dc:creator><![CDATA[Matt]]></dc:creator>
		<pubDate>Sun, 30 Mar 2025 23:02:36 +0000</pubDate>
				<category><![CDATA[Medium Difficulty]]></category>
		<category><![CDATA[Unreal Engine]]></category>
		<category><![CDATA[Unreal Engine 4]]></category>
		<category><![CDATA[Unreal Engine 5]]></category>
		<category><![CDATA[How to use Data Tables in your Unreal Engine 5 game]]></category>
		<category><![CDATA[ue5]]></category>
		<category><![CDATA[unreal engine]]></category>
		<category><![CDATA[unreal engine 5]]></category>
		<category><![CDATA[unreal engine datatables]]></category>
		<guid isPermaLink="false">https://couchlearn.com/?p=784</guid>

					<description><![CDATA[<p>Data tables are a useful feature of Unreal Engine 5. They allow the programmer/designer to create and access a pre-made list of information. When creating <a class="mh-excerpt-more" href="https://couchlearn.com/how-to-use-data-tables-in-your-unreal-engine-5-game/" title="How to use Data Tables in your Unreal Engine 5 game">[...]</a></p>
<p>The post <a href="https://couchlearn.com/how-to-use-data-tables-in-your-unreal-engine-5-game/">How to use Data Tables in your Unreal Engine 5 game</a> appeared first on <a href="https://couchlearn.com">Couch Learn</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Data tables are a useful feature of Unreal Engine 5. They allow the programmer/designer to create and access a pre-made list of information.<br><br><strong>When creating a data table you are asked to choose which struct you want to base the data table on.</strong><br><br>Here are a few game mechanic uses of data tables:</p>



<ul class="wp-block-list">
<li><em>RPG item data table that contains item stats such as damage, armour etc.</em></li>



<li><em>Subtitles for dialogue that can easily be accessed by character name.</em></li>



<li><em>An enemy data table containing a list of pre made enemy types with enemy health, damage, stamina etc.</em></li>
</ul>



<p>In this guide we will be showing you how to use Data Tables in your Unreal Engine 5 game.</p>



<h2 class="wp-block-heading">Pre-requisites</h2>



<p>To use Data Tables in Unreal Engine 5 you will need to know how to create and use structures.<br><a href="https://couchlearn.com/how-to-use-structs-in-unreal-engine-4/">Click here to read our guide on structures.</a><br><br>It would also help to know how to create and use an blueprint enum.<br><a href="https://couchlearn.com/enums-in-unreal-engine-4-blueprints/">Click here to learn about enums in Unreal Engine and how to create them in your project.</a></p>



<h2 class="wp-block-heading">What is a Data Table?</h2>



<p>In Unreal Engine 5, a Data Table is an extremely useful tool that allows you to define a list of data and store different values for this defined list based on a key.<br><br>This data is stored as an asset in your project which makes it incredibly easy to retrieve and update the data from anywhere in your code.<br><br>The data is also remembered inside of the editor meaning you can create your data while you are developing your project, then use the data inside of your project during runtime. <br><br>A great example of this is data for items or enemies in your project. This data can be set by you when designing your items and enemies which is then saved and persistent.<br><br>Making and using Data Tables in Unreal Engine 5 is easy and requires very little work. In the next section we explain how to make your own data table inside of your Unreal Engine 5 project!</p>



<h2 class="wp-block-heading">Making our Data Table</h2>



<h2 class="wp-block-heading">Creating an Enum</h2>



<p>Before we create our struct, we need to create an enum. This is an item rarity enum which will represent the quality of our role playing game item.<br><br>Simply create your enum by right clicking the content browser and clicking Enumeration in the Blueprint category.</p>



<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="507" height="529" src="https://couchlearn.com/wp-content/uploads/2025/03/image-25.png" alt="" class="wp-image-2266" srcset="https://couchlearn.com/wp-content/uploads/2025/03/image-25.png 507w, https://couchlearn.com/wp-content/uploads/2025/03/image-25-288x300.png 288w" sizes="(max-width: 507px) 100vw, 507px" /></figure>



<p>Then set the values as shown that you require. If you are following along with this guide, copy the values in the image below.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="321" src="https://couchlearn.com/wp-content/uploads/2022/12/image-1-1024x321.png" alt="Creating a basic enumerator for our rarity values" class="wp-image-1902" srcset="https://couchlearn.com/wp-content/uploads/2022/12/image-1-1024x321.png 1024w, https://couchlearn.com/wp-content/uploads/2022/12/image-1-300x94.png 300w, https://couchlearn.com/wp-content/uploads/2022/12/image-1-768x240.png 768w, https://couchlearn.com/wp-content/uploads/2022/12/image-1.png 1217w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading">Creating our Struct</h3>



<p>Now that we have our enum created, next we need to create the struct that our data table will use for the types of values it will hold.<br><br>Right click anywhere in the content browser, then click Structure in the Blueprints category.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="615" src="https://couchlearn.com/wp-content/uploads/2022/12/image-1024x615.png" alt="Creating a new structure" class="wp-image-1899" srcset="https://couchlearn.com/wp-content/uploads/2022/12/image-1024x615.png 1024w, https://couchlearn.com/wp-content/uploads/2022/12/image-300x180.png 300w, https://couchlearn.com/wp-content/uploads/2022/12/image-768x461.png 768w, https://couchlearn.com/wp-content/uploads/2022/12/image.png 1107w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Then set the values as shown that you require. If you are following along with this guide, copy the values in the image below.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="1012" height="308" src="https://couchlearn.com/wp-content/uploads/2022/12/image-6.png" alt="Adding the damage, rarity and sell price values to our struct" class="wp-image-1907" srcset="https://couchlearn.com/wp-content/uploads/2022/12/image-6.png 1012w, https://couchlearn.com/wp-content/uploads/2022/12/image-6-300x91.png 300w, https://couchlearn.com/wp-content/uploads/2022/12/image-6-768x234.png 768w" sizes="(max-width: 1012px) 100vw, 1012px" /></figure>



<h3 class="wp-block-heading">Creating our Data table</h3>



<p>Finally we can create our data table. This is done exactly the same way by right clicking inside of the content browser and clicking the Data Table option in the Miscellaneous category. </p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="654" src="https://couchlearn.com/wp-content/uploads/2022/12/image-3-1024x654.png" alt="Creating the datatable" class="wp-image-1904" srcset="https://couchlearn.com/wp-content/uploads/2022/12/image-3-1024x654.png 1024w, https://couchlearn.com/wp-content/uploads/2022/12/image-3-300x192.png 300w, https://couchlearn.com/wp-content/uploads/2022/12/image-3-768x491.png 768w, https://couchlearn.com/wp-content/uploads/2022/12/image-3.png 1373w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Next there is a popup asking which struct you want to use. In this guide we are using the ExampleStruct we made earlier.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="569" height="233" src="https://couchlearn.com/wp-content/uploads/2022/12/image-4.png" alt="Choosing our datatable row structure" class="wp-image-1905" srcset="https://couchlearn.com/wp-content/uploads/2022/12/image-4.png 569w, https://couchlearn.com/wp-content/uploads/2022/12/image-4-300x123.png 300w" sizes="(max-width: 569px) 100vw, 569px" /></figure>



<h3 class="wp-block-heading">Adding Values to the Data Table</h3>



<p>Now that are data table is created and configured correctly, we can press the Add button to add a new row to our data table.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="454" src="https://couchlearn.com/wp-content/uploads/2022/12/image-5-1024x454.png" alt="Adding a new row to the datatable" class="wp-image-1906" srcset="https://couchlearn.com/wp-content/uploads/2022/12/image-5-1024x454.png 1024w, https://couchlearn.com/wp-content/uploads/2022/12/image-5-300x133.png 300w, https://couchlearn.com/wp-content/uploads/2022/12/image-5-768x340.png 768w, https://couchlearn.com/wp-content/uploads/2022/12/image-5.png 1517w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>As you can see in the image below, the data table has a new row with some default values from our struct.</p>



<p>We can change the values in the &#8220;Row Editor&#8221; and the values in the data table will change above. <br><br><strong>We can now create as many entries as we want!</strong></p>



<figure class="wp-block-image size-full"><img decoding="async" width="949" height="443" src="https://couchlearn.com/wp-content/uploads/2022/12/image-7.png" alt="Showing the values in our new datatable row" class="wp-image-1909" srcset="https://couchlearn.com/wp-content/uploads/2022/12/image-7.png 949w, https://couchlearn.com/wp-content/uploads/2022/12/image-7-300x140.png 300w, https://couchlearn.com/wp-content/uploads/2022/12/image-7-768x359.png 768w" sizes="(max-width: 949px) 100vw, 949px" /></figure>



<p>Clicking the row name section in the row, we can change the row name. In this example we are using BronzeSword as the new row name.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="620" height="301" src="https://couchlearn.com/wp-content/uploads/2022/12/image-8.png" alt="Changing the values of the datatable row" class="wp-image-1910" srcset="https://couchlearn.com/wp-content/uploads/2022/12/image-8.png 620w, https://couchlearn.com/wp-content/uploads/2022/12/image-8-300x146.png 300w" sizes="(max-width: 620px) 100vw, 620px" /></figure>



<p>The Damage, Rarity, and Sell Price values we defined earlier are in the Data Table view, and the Row Editor below.<br><br>Changing the values in the Row Editor will affect the values stored in the data table.<br><br>Don&#8217;t forget to <strong>Save </strong>often to prevent losing your changes!</p>



<figure class="wp-block-image size-full"><img decoding="async" width="632" height="397" src="https://couchlearn.com/wp-content/uploads/2022/12/image-9.png" alt="Setting more datatable row values" class="wp-image-1911" srcset="https://couchlearn.com/wp-content/uploads/2022/12/image-9.png 632w, https://couchlearn.com/wp-content/uploads/2022/12/image-9-300x188.png 300w" sizes="(max-width: 632px) 100vw, 632px" /></figure>



<h2 class="wp-block-heading">Using your Data Table</h2>



<p>Now that we have our data table created, configured, and filled with data, we can now learn how to access this data in our code.<br><br>We have create an Event BeginPlay node to our level blueprint and have created a Get Data Table Row node.<br><br>This Get Data Table Row node asks for a data table asset reference, and a row name.<br><br>Data Table reference is our data table we created earlier, and the Row Name is the row we want to try to find the data for.<br><br>If the row is found, the Row Found pin will run code and the Out Row will contain our data, if the row is not found, the Row Not Found pin will run code and the Out Row data will be invalid.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="639" height="263" src="https://couchlearn.com/wp-content/uploads/2025/03/image-18.png" alt="Creating a get data table row node" class="wp-image-2258" srcset="https://couchlearn.com/wp-content/uploads/2025/03/image-18.png 639w, https://couchlearn.com/wp-content/uploads/2025/03/image-18-300x123.png 300w" sizes="(max-width: 639px) 100vw, 639px" /></figure>



<p>We can set the Data Table reference by clicking on the select asset drop down and selecting our data table from the list of assets.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="593" height="301" src="https://couchlearn.com/wp-content/uploads/2025/03/image-19.png" alt="Setting the data table reference in the get data table row node" class="wp-image-2259" srcset="https://couchlearn.com/wp-content/uploads/2025/03/image-19.png 593w, https://couchlearn.com/wp-content/uploads/2025/03/image-19-300x152.png 300w" sizes="(max-width: 593px) 100vw, 593px" /></figure>



<p>Now we can split the Out Row struct by right clicking and clicking Split Struct Pin in the menu. This will split our struct into all the types and values in contains for easy visibility.<br><br>We can also see that our Row Name is now a drop down that contains all the available row names. This can be overridden by connecting a value to the Row Name pink pin.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="693" height="285" src="https://couchlearn.com/wp-content/uploads/2025/03/image-20.png" alt="Splitting the data table row struct to see the values and types" class="wp-image-2260" srcset="https://couchlearn.com/wp-content/uploads/2025/03/image-20.png 693w, https://couchlearn.com/wp-content/uploads/2025/03/image-20-300x123.png 300w" sizes="(max-width: 693px) 100vw, 693px" /></figure>



<p>Now that we have split our Out Row struct, we can see the Damage, Rarity, and Sell Price values we set earlier.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="565" height="243" src="https://couchlearn.com/wp-content/uploads/2025/03/image-21.png" alt="Getting the row data from a specific row name key" class="wp-image-2261" srcset="https://couchlearn.com/wp-content/uploads/2025/03/image-21.png 565w, https://couchlearn.com/wp-content/uploads/2025/03/image-21-300x129.png 300w" sizes="(max-width: 565px) 100vw, 565px" /></figure>



<h3 class="wp-block-heading">Looping over your Data Table Rows</h3>



<p>Now that we can access a specific row in our data table, it is essential to know how to use a loop with a data table.<br><br>In the example below we have created a Get Data Table Row Names node. This returns an Array with all of the row names inside of the data table.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="541" height="163" src="https://couchlearn.com/wp-content/uploads/2025/03/image-22.png" alt="Getting the data table row names" class="wp-image-2262" srcset="https://couchlearn.com/wp-content/uploads/2025/03/image-22.png 541w, https://couchlearn.com/wp-content/uploads/2025/03/image-22-300x90.png 300w" sizes="(max-width: 541px) 100vw, 541px" /></figure>



<p>We can then connect this to a For Each Loop node. This will now run the Loop Body for each Row Name in the Out Row Names from our Data Table.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="773" height="193" src="https://couchlearn.com/wp-content/uploads/2025/03/image-23.png" alt="Creating a for loop from the gathered data table row names" class="wp-image-2263" srcset="https://couchlearn.com/wp-content/uploads/2025/03/image-23.png 773w, https://couchlearn.com/wp-content/uploads/2025/03/image-23-300x75.png 300w, https://couchlearn.com/wp-content/uploads/2025/03/image-23-768x192.png 768w" sizes="(max-width: 773px) 100vw, 773px" /></figure>



<p>Finally connecting our For Each Loop into a Get Data Table Row like before, we can then connect the Array Element pink pin to the Row Name pink pin. <br><br>This will now get the data for that row name each time the loop runs.<br><br>We can then use the Out Row values however we want in the project!</p>



<figure class="wp-block-image size-full"><img decoding="async" width="1025" height="227" src="https://couchlearn.com/wp-content/uploads/2025/03/image-24.png" alt="Getting the datatable row using the looped array element name" class="wp-image-2264" srcset="https://couchlearn.com/wp-content/uploads/2025/03/image-24.png 1025w, https://couchlearn.com/wp-content/uploads/2025/03/image-24-300x66.png 300w, https://couchlearn.com/wp-content/uploads/2025/03/image-24-768x170.png 768w" sizes="(max-width: 1025px) 100vw, 1025px" /></figure>



<h2 class="wp-block-heading">Conclusion</h2>



<p>Now you have learned how to create, configure, populate, and implement data tables in your Unreal Engine 5 project!<br><br>Almost every Unreal Engine project benefits from using a data table to efficiently and neatly store data for use within the systems you develop.<br><br>Working collaboratively using data tables makes sharing a single source of truth for your projects data simple and does not require any C++ knowledge!</p>



<h3 class="wp-block-heading">Further Reading:</h3>



<ul class="wp-block-list">
<li><a href="https://dev.epicgames.com/community/learning/tutorials/Gp9j/working-with-data-in-unreal-engine-data-tables-data-assets-uproperty-specifiers-and-more">A more advanced look into Data Table merging and composite tables from Unreal Engine 5&#8217;s wiki</a></li>



<li><a href="https://www.youtube.com/watch?v=aZdztLTG3OQ">A great visual guide for Data Tables by Gorka Games (Not affiliated with CouchLearn)</a></li>



<li><a href="https://dev.epicgames.com/documentation/en-us/unreal-engine/BlueprintAPI/DataTable">The official Unreal Engine 5 documentation for Data Tables in Blueprints</a></li>
</ul>
<p>The post <a href="https://couchlearn.com/how-to-use-data-tables-in-your-unreal-engine-5-game/">How to use Data Tables in your Unreal Engine 5 game</a> appeared first on <a href="https://couchlearn.com">Couch Learn</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://couchlearn.com/how-to-use-data-tables-in-your-unreal-engine-5-game/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How to Save and Load in Unreal Engine 5</title>
		<link>https://couchlearn.com/how-to-save-and-load-in-unreal-engine-5/</link>
					<comments>https://couchlearn.com/how-to-save-and-load-in-unreal-engine-5/#comments</comments>
		
		<dc:creator><![CDATA[Matt]]></dc:creator>
		<pubDate>Thu, 22 Dec 2022 22:05:22 +0000</pubDate>
				<category><![CDATA[Medium Difficulty]]></category>
		<category><![CDATA[Unreal Engine]]></category>
		<category><![CDATA[Unreal Engine 4]]></category>
		<category><![CDATA[Unreal Engine 5]]></category>
		<category><![CDATA[medium]]></category>
		<category><![CDATA[save and load]]></category>
		<category><![CDATA[save game]]></category>
		<category><![CDATA[savegame]]></category>
		<category><![CDATA[saving and load]]></category>
		<category><![CDATA[saving and loading]]></category>
		<category><![CDATA[ue4]]></category>
		<category><![CDATA[ue4 save and load]]></category>
		<category><![CDATA[ue5]]></category>
		<category><![CDATA[ue5 save and load]]></category>
		<category><![CDATA[unreal engine]]></category>
		<category><![CDATA[unreal engine 4]]></category>
		<category><![CDATA[unreal engine 5]]></category>
		<category><![CDATA[unreal engine 5 save and load]]></category>
		<category><![CDATA[unreal engine save and load]]></category>
		<guid isPermaLink="false">https://couchlearn.com/?p=1946</guid>

					<description><![CDATA[<p>Saving and loading of game data is a essential part of every modern game. Luckily for you, Unreal Engine has a built in SaveGame system <a class="mh-excerpt-more" href="https://couchlearn.com/how-to-save-and-load-in-unreal-engine-5/" title="How to Save and Load in Unreal Engine 5">[...]</a></p>
<p>The post <a href="https://couchlearn.com/how-to-save-and-load-in-unreal-engine-5/">How to Save and Load in Unreal Engine 5</a> appeared first on <a href="https://couchlearn.com">Couch Learn</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Saving and loading of game data is a essential part of every modern game. Luckily for you, Unreal Engine has a built in SaveGame system that allows easy saving and loading of your game data to a file. All data saved to this file can be loaded easily with only a few functions!<br><br>In this guide you will learn how to Save and Load in Unreal Engine 5.</p>



<h2 class="wp-block-heading">Prerequisites</h2>



<p>To follow this guide you need to understand the basics of Unreal Engine, working with blueprints inside the editor and using a custom Game Instance. We have linked guides below to these topics.<br><a href="https://docs.unrealengine.com/4.27/en-US/ProgrammingAndScripting/Blueprints/BP_HowTo/BasicUsage/" target="_blank" rel="noreferrer noopener">The basics of blueprint actors.<br></a><a href="https://docs.unrealengine.com/4.26/en-US/ProgrammingAndScripting/Blueprints/UserGuide/Variables/" target="_blank" rel="noreferrer noopener">Adding variables to blueprint actors</a>.<br><a href="https://couchlearn.com/how-to-use-the-game-instance-in-unreal-engine-4/" target="_blank" rel="noreferrer noopener">How to use custom Game Instances.</a><br><a href="https://couchlearn.com/how-to-use-custom-events-in-unreal-engine-4/" target="_blank" rel="noreferrer noopener">Custom Events in Unreal Engine.<br></a><br>It would also be beneficial to understand how Input Actions work in Unreal Engine:<br><a href="https://couchlearn.com/how-to-use-input-actions-and-input-axis-mappings-in-your-unreal-engine-4-game/" target="_blank" rel="noreferrer noopener">Click here to learn how to use input actions and axis.</a></p>



<h2 class="wp-block-heading">How it Works</h2>



<p>SaveGame is a class in Unreal Engine that is preconfigured to save and load the data contained in the variables you add.<br><br>The variables you set are then saved to a file stored on the user&#8217;s machine. This is then read and the variables can be accessed in your game.<br><br>The save file is located in these locations:<br>Windows: Local Appdata folder<br>MacOS: Library/Application Support<br>Linux: /home/username/.local/share<br><br><strong>Almost every variable type can be saved and loaded using the SaveGame class.</strong></p>



<h2 class="wp-block-heading">Creating our Save Class</h2>



<p>Firstly, create a new blueprint class from the content drawer.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="953" height="893" src="https://couchlearn.com/wp-content/uploads/2022/12/image-22.png" alt="Creating the blueprint class from the content drawer" class="wp-image-1949" srcset="https://couchlearn.com/wp-content/uploads/2022/12/image-22.png 953w, https://couchlearn.com/wp-content/uploads/2022/12/image-22-300x281.png 300w, https://couchlearn.com/wp-content/uploads/2022/12/image-22-768x720.png 768w" sizes="(max-width: 953px) 100vw, 953px" /></figure>



<p>Next, in the popup window, click the drop down arrow at the bottom. In the search bar type &#8220;SaveGame&#8221; and click the option from the list.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="626" height="555" src="https://couchlearn.com/wp-content/uploads/2022/12/image-23.png" alt="Creating the SaveGame blueprint class." class="wp-image-1950" srcset="https://couchlearn.com/wp-content/uploads/2022/12/image-23.png 626w, https://couchlearn.com/wp-content/uploads/2022/12/image-23-300x266.png 300w" sizes="(max-width: 626px) 100vw, 626px" /></figure>



<p>Then, give your new SaveGame blueprint a suitable name. We need to remember this as it is used later. In our case, we used the name DemoSaveGame.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="381" height="343" src="https://couchlearn.com/wp-content/uploads/2022/12/image-24.png" alt="Naming our SaveGame blueprint &quot;DemoSaveGame&quot;." class="wp-image-1951" srcset="https://couchlearn.com/wp-content/uploads/2022/12/image-24.png 381w, https://couchlearn.com/wp-content/uploads/2022/12/image-24-300x270.png 300w" sizes="(max-width: 381px) 100vw, 381px" /></figure>



<h3 class="wp-block-heading">Saving the variables</h3>



<p>Now that your SaveGame class has been created, you can add any variables you need for your project.<br><br>For this demo we create a new <em>Vector</em> variable called &#8220;PlayerPosition&#8221;.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="682" height="444" src="https://couchlearn.com/wp-content/uploads/2022/12/image-25.png" alt="Creating a new Vector variable named PlayerPosition in the DemoSaveGame blueprint class." class="wp-image-1952" srcset="https://couchlearn.com/wp-content/uploads/2022/12/image-25.png 682w, https://couchlearn.com/wp-content/uploads/2022/12/image-25-300x195.png 300w" sizes="(max-width: 682px) 100vw, 682px" /></figure>



<p>Once you have created the variables you need for your project, click Compile and Save to ensure your changes are applied and saved.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="387" height="237" src="https://couchlearn.com/wp-content/uploads/2022/12/image-26.png" alt="Compiling and saving the previous changes." class="wp-image-1954" srcset="https://couchlearn.com/wp-content/uploads/2022/12/image-26.png 387w, https://couchlearn.com/wp-content/uploads/2022/12/image-26-300x184.png 300w" sizes="(max-width: 387px) 100vw, 387px" /></figure>



<h2 class="wp-block-heading">Adding Save and Load Functionality</h2>



<p>Firstly, in our <strong><em><a href="http://couchlearn.com/how-to-use-the-game-instance-in-unreal-engine-4/(opens in a new tab)" target="_blank" rel="noreferrer noopener">Game Instance</a></em></strong>, add two new custom events. &#8220;Save&#8221; and &#8220;Load&#8221;.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="213" height="256" src="https://couchlearn.com/wp-content/uploads/2022/12/image-27.png" alt="Creating two new events in the Game Instance. &quot;Save&quot; and &quot;Load&quot;" class="wp-image-1958"/></figure>



<p>We also need to add a new variable on the <strong><em>Game Instance</em></strong>. Name this variable SaveGame and set the type to the class you created in the previous step.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="637" height="387" src="https://couchlearn.com/wp-content/uploads/2022/12/image-33.png" alt="Creating a variable to store the SaveGame object." class="wp-image-1968" srcset="https://couchlearn.com/wp-content/uploads/2022/12/image-33.png 637w, https://couchlearn.com/wp-content/uploads/2022/12/image-33-300x182.png 300w" sizes="(max-width: 637px) 100vw, 637px" /></figure>



<h3 class="wp-block-heading">Loading our Variables from the Save File</h3>



<p>Now that our Game Instance is setup, on the Load event, create a new &#8220;Does Save Game Exist&#8221; node. The &#8220;Slot Name&#8221; pin needs to be given a name. This can be set to anything you want. Each different name you use saves to a different file.<br><br>In our case we just named this &#8220;savegame&#8221;.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="514" height="209" src="https://couchlearn.com/wp-content/uploads/2022/12/image-29.png" alt="Creating the Does Save Game Exist node on our Load Event." class="wp-image-1962" srcset="https://couchlearn.com/wp-content/uploads/2022/12/image-29.png 514w, https://couchlearn.com/wp-content/uploads/2022/12/image-29-300x122.png 300w" sizes="(max-width: 514px) 100vw, 514px" /></figure>



<p>Next, add a branch to the output pin of the &#8220;Does Save Game Exist&#8221; node. This will branch if our save file exists or not.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="701" height="192" src="https://couchlearn.com/wp-content/uploads/2022/12/image-30.png" alt="Creating a branch node from the Does Save Game Exist node." class="wp-image-1963" srcset="https://couchlearn.com/wp-content/uploads/2022/12/image-30.png 701w, https://couchlearn.com/wp-content/uploads/2022/12/image-30-300x82.png 300w" sizes="(max-width: 701px) 100vw, 701px" /></figure>



<h4 class="wp-block-heading">If the Save File Exists</h4>



<p>From the &#8220;True&#8221; pin, create a new &#8220;Load Game From Slot&#8221; node with the same &#8220;Slot Name&#8221; as before.</p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" src="https://couchlearn.com/wp-content/uploads/2022/12/image-31.png" alt="Creating the Load Game From Slot node from the Branch node." class="wp-image-1964" width="840" height="152" srcset="https://couchlearn.com/wp-content/uploads/2022/12/image-31.png 1016w, https://couchlearn.com/wp-content/uploads/2022/12/image-31-300x55.png 300w, https://couchlearn.com/wp-content/uploads/2022/12/image-31-768x140.png 768w" sizes="(max-width: 840px) 100vw, 840px" /></figure>



<p>Next, from the blue output pin, create a &#8220;Cast to&#8221; node. This should cast to the class you created in the first step. For us this is &#8220;Cast to DemoSaveGame&#8221;.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="889" height="176" src="https://couchlearn.com/wp-content/uploads/2022/12/image-32.png" alt="Creating the Cast to DemoSaveGame node from the Load Game from Slot blue output pin." class="wp-image-1965" srcset="https://couchlearn.com/wp-content/uploads/2022/12/image-32.png 889w, https://couchlearn.com/wp-content/uploads/2022/12/image-32-300x59.png 300w, https://couchlearn.com/wp-content/uploads/2022/12/image-32-768x152.png 768w" sizes="(max-width: 889px) 100vw, 889px" /></figure>



<p>Then set the Game Instance&#8217;s Save Game variable we created earlier to the output of the &#8220;Cast to&#8221; node.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="893" height="219" src="https://couchlearn.com/wp-content/uploads/2022/12/image-34.png" alt="Setting the SaveGame object variable to the output of the Cast to DemoSaveGame node." class="wp-image-1970" srcset="https://couchlearn.com/wp-content/uploads/2022/12/image-34.png 893w, https://couchlearn.com/wp-content/uploads/2022/12/image-34-300x74.png 300w, https://couchlearn.com/wp-content/uploads/2022/12/image-34-768x188.png 768w" sizes="(max-width: 893px) 100vw, 893px" /></figure>



<p>From there, we create a &#8220;Set Actor Location&#8221; node. This will be used to move our character to the saved location.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="841" height="407" src="https://couchlearn.com/wp-content/uploads/2022/12/image-35.png" alt="Creating a Set Actor Location node from the Set Save Game node." class="wp-image-1972" srcset="https://couchlearn.com/wp-content/uploads/2022/12/image-35.png 841w, https://couchlearn.com/wp-content/uploads/2022/12/image-35-300x145.png 300w, https://couchlearn.com/wp-content/uploads/2022/12/image-35-768x372.png 768w" sizes="(max-width: 841px) 100vw, 841px" /></figure>



<p>From the variables list on the left of the editor, drag the &#8220;SaveGame&#8221; variable and drop near the the nodes. This will show a list of options. Click the &#8220;Get SaveGame&#8221; option to allow us easy access to this variable for the next few steps.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="329" src="https://couchlearn.com/wp-content/uploads/2022/12/image-41-1024x329.png" alt="Creating a Get Save Game node from the SaveGame variable." class="wp-image-1980" srcset="https://couchlearn.com/wp-content/uploads/2022/12/image-41-1024x329.png 1024w, https://couchlearn.com/wp-content/uploads/2022/12/image-41-300x96.png 300w, https://couchlearn.com/wp-content/uploads/2022/12/image-41-768x247.png 768w, https://couchlearn.com/wp-content/uploads/2022/12/image-41.png 1297w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Dragging from the &#8220;Save Game&#8221; blue pin then typing &#8220;get player position&#8221;, we can see our &#8220;Player Position&#8221; Vector variable that we created earlier. Click this option in the list to add it to the blueprint graph.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="1013" height="329" src="https://couchlearn.com/wp-content/uploads/2022/12/image-42.png" alt="Getting the PlayerPosition variable from the SaveGame class." class="wp-image-1981" srcset="https://couchlearn.com/wp-content/uploads/2022/12/image-42.png 1013w, https://couchlearn.com/wp-content/uploads/2022/12/image-42-300x97.png 300w, https://couchlearn.com/wp-content/uploads/2022/12/image-42-768x249.png 768w" sizes="(max-width: 1013px) 100vw, 1013px" /></figure>



<p>Next, connect the &#8220;Player Position&#8221; vector pin to the &#8220;New Location&#8221; option on the &#8220;Set Actor Location&#8221; node.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="940" height="291" src="https://couchlearn.com/wp-content/uploads/2022/12/image-43.png" alt="Setting the Actor Location to the Player Position value." class="wp-image-1982" srcset="https://couchlearn.com/wp-content/uploads/2022/12/image-43.png 940w, https://couchlearn.com/wp-content/uploads/2022/12/image-43-300x93.png 300w, https://couchlearn.com/wp-content/uploads/2022/12/image-43-768x238.png 768w" sizes="(max-width: 940px) 100vw, 940px" /></figure>



<p>Lastly, create a &#8220;Get Player Character&#8221; node and connect this to the &#8220;Target&#8221; pin of the &#8220;Set Actor Location&#8221; node. This now gets our saved player position and moves the player character to it.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="988" height="312" src="https://couchlearn.com/wp-content/uploads/2022/12/image-44.png" alt="Creating a Get Player Character variable and assigning the output pin to the Set Actor Location Target pin." class="wp-image-1983" srcset="https://couchlearn.com/wp-content/uploads/2022/12/image-44.png 988w, https://couchlearn.com/wp-content/uploads/2022/12/image-44-300x95.png 300w, https://couchlearn.com/wp-content/uploads/2022/12/image-44-768x243.png 768w" sizes="(max-width: 988px) 100vw, 988px" /></figure>



<h4 class="wp-block-heading">If the Save File doesn&#8217;t Exist</h4>



<p>If the save file does not exist then we need to create a new file. From the &#8220;False&#8221; pin create a new &#8220;Create Save Game Object&#8221; node. Then set the &#8220;Save Game Class&#8221; purple pin to the custom SaveGame class we created earlier.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="998" height="390" src="https://couchlearn.com/wp-content/uploads/2022/12/image-40.png" alt="Creating a Save Game Object from the false pin on the branch node." class="wp-image-1978" srcset="https://couchlearn.com/wp-content/uploads/2022/12/image-40.png 998w, https://couchlearn.com/wp-content/uploads/2022/12/image-40-300x117.png 300w, https://couchlearn.com/wp-content/uploads/2022/12/image-40-768x300.png 768w" sizes="(max-width: 998px) 100vw, 998px" /></figure>



<p>Then, set the Game Instance &#8220;Save Game&#8221; variable to the blue output pin value.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="859" height="345" src="https://couchlearn.com/wp-content/uploads/2022/12/image-45.png" alt="Setting the SaveGame variable to the return value of the Create Save Game Object node." class="wp-image-1984" srcset="https://couchlearn.com/wp-content/uploads/2022/12/image-45.png 859w, https://couchlearn.com/wp-content/uploads/2022/12/image-45-300x120.png 300w, https://couchlearn.com/wp-content/uploads/2022/12/image-45-768x308.png 768w" sizes="(max-width: 859px) 100vw, 859px" /></figure>



<p>Lastly, connect the &#8220;Set Save Game&#8221; node to the blueprint nodes above. This can be done by double clicking the white lines to create points. <br><br>Connect the blueprints nodes together as shown in the image below.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="974" height="372" src="https://couchlearn.com/wp-content/uploads/2022/12/image-46.png" alt="Cleaning the blueprints for easy reading." class="wp-image-1985" srcset="https://couchlearn.com/wp-content/uploads/2022/12/image-46.png 974w, https://couchlearn.com/wp-content/uploads/2022/12/image-46-300x115.png 300w, https://couchlearn.com/wp-content/uploads/2022/12/image-46-768x293.png 768w" sizes="(max-width: 974px) 100vw, 974px" /></figure>



<h3 class="wp-block-heading">Saving our Variables to the Save File</h3>



<p>Now that we can load saved variables, we need to save the variables!<br><br>Firstly, drag and drop the SaveGame variable and click &#8220;Get SaveGame&#8221; next to the Save event.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="883" height="369" src="https://couchlearn.com/wp-content/uploads/2022/12/image-47.png" alt="Getting the value of the SaveGame variable." class="wp-image-1987" srcset="https://couchlearn.com/wp-content/uploads/2022/12/image-47.png 883w, https://couchlearn.com/wp-content/uploads/2022/12/image-47-300x125.png 300w, https://couchlearn.com/wp-content/uploads/2022/12/image-47-768x321.png 768w" sizes="(max-width: 883px) 100vw, 883px" /></figure>



<p>From there, we create an &#8220;? Is Valid&#8221; node. This allows us to branch the code if our save file has been loaded or not.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="637" height="281" src="https://couchlearn.com/wp-content/uploads/2022/12/image-51.png" alt="Creating an Is Valid node connect to the SaveGame variable value." class="wp-image-1992" srcset="https://couchlearn.com/wp-content/uploads/2022/12/image-51.png 637w, https://couchlearn.com/wp-content/uploads/2022/12/image-51-300x132.png 300w" sizes="(max-width: 637px) 100vw, 637px" /></figure>



<h4 class="wp-block-heading">If the Save File is Valid</h4>



<p>From our &#8220;Save Game&#8221; blue variable, create a &#8220;Set Player Position&#8221; node and connect it to the &#8220;Is Valid&#8221; pin.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="637" height="299" src="https://couchlearn.com/wp-content/uploads/2022/12/image-52.png" alt="Setting the Player Position variable if the SaveGame object reference is valid." class="wp-image-1993" srcset="https://couchlearn.com/wp-content/uploads/2022/12/image-52.png 637w, https://couchlearn.com/wp-content/uploads/2022/12/image-52-300x141.png 300w" sizes="(max-width: 637px) 100vw, 637px" /></figure>



<p>Next, create a &#8220;Get Player Character&#8221; node and from the blue output pin, create a &#8220;Get Actor Location&#8221; pin.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="741" height="353" src="https://couchlearn.com/wp-content/uploads/2022/12/image-53.png" alt="Creating a get player character node and getting the actor location." class="wp-image-1994" srcset="https://couchlearn.com/wp-content/uploads/2022/12/image-53.png 741w, https://couchlearn.com/wp-content/uploads/2022/12/image-53-300x143.png 300w" sizes="(max-width: 741px) 100vw, 741px" /></figure>



<p>Lastly, connect the yellow output pin of the &#8220;Get Actor Location&#8221; node to the yellow input pin on the &#8220;Set Player Position&#8221; node. Now if our save game object is valid we will save the player character location to the save file on disk.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="658" height="307" src="https://couchlearn.com/wp-content/uploads/2022/12/image-54.png" alt="Connecting the Get Actor Location output value to the Set Player Position node." class="wp-image-1995" srcset="https://couchlearn.com/wp-content/uploads/2022/12/image-54.png 658w, https://couchlearn.com/wp-content/uploads/2022/12/image-54-300x140.png 300w" sizes="(max-width: 658px) 100vw, 658px" /></figure>



<h4 class="wp-block-heading">If the Save File is not Valid</h4>



<p>If the save game object isn&#8217;t valid, we need to create it before saving any data.<br><br>Firstly, create a &#8220;Create Save Game Object&#8221; node, set the purple input value to our previously created save game class, then connect this to the &#8220;Is Not Valid&#8221; pin as shown below.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="831" height="324" src="https://couchlearn.com/wp-content/uploads/2022/12/image-55.png" alt="Creating a Create Save Game Object node from the Is Not Valid pin." class="wp-image-1996" srcset="https://couchlearn.com/wp-content/uploads/2022/12/image-55.png 831w, https://couchlearn.com/wp-content/uploads/2022/12/image-55-300x117.png 300w, https://couchlearn.com/wp-content/uploads/2022/12/image-55-768x299.png 768w" sizes="(max-width: 831px) 100vw, 831px" /></figure>



<p>Next, set the Game Instance SaveGame variable to the blue output pin of the &#8220;Create Save Game Object&#8221; node.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="347" src="https://couchlearn.com/wp-content/uploads/2022/12/image-56-1024x347.png" alt="Setting the Save Game value to the output of the Create Save Game Object node." class="wp-image-1997" srcset="https://couchlearn.com/wp-content/uploads/2022/12/image-56-1024x347.png 1024w, https://couchlearn.com/wp-content/uploads/2022/12/image-56-300x102.png 300w, https://couchlearn.com/wp-content/uploads/2022/12/image-56-768x260.png 768w, https://couchlearn.com/wp-content/uploads/2022/12/image-56.png 1059w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Then, connect the &#8220;Set Save Game&#8221; node to the &#8220;Set Player Position&#8221; node as shown below. This will save the player character&#8217;s position after the &#8220;Save Game&#8221; object is valid.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="272" src="https://couchlearn.com/wp-content/uploads/2022/12/image-57-1024x272.png" alt="Connecting the Set SaveGame node to the other blueprints and cleaning them up." class="wp-image-1998" srcset="https://couchlearn.com/wp-content/uploads/2022/12/image-57-1024x272.png 1024w, https://couchlearn.com/wp-content/uploads/2022/12/image-57-300x80.png 300w, https://couchlearn.com/wp-content/uploads/2022/12/image-57-768x204.png 768w, https://couchlearn.com/wp-content/uploads/2022/12/image-57.png 1057w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Finally, create either a &#8220;Save Game to Slot&#8221; or &#8220;Async Save Game to Slot&#8221; node from the blue SaveGame variable.<br><br><strong><em>If your game needs to save lots of information, use the &#8220;Async Save Game to Slot&#8221; node.<br></em></strong><br><strong><em>If your game only saves a small amount of data, use the &#8220;Save Game to Slot&#8221; node.</em></strong></p>



<figure class="wp-block-image size-full"><img decoding="async" width="851" height="249" src="https://couchlearn.com/wp-content/uploads/2022/12/image-62.png" alt="Creating a Save the Game to Slot node from the SaveGame variable." class="wp-image-2003" srcset="https://couchlearn.com/wp-content/uploads/2022/12/image-62.png 851w, https://couchlearn.com/wp-content/uploads/2022/12/image-62-300x88.png 300w, https://couchlearn.com/wp-content/uploads/2022/12/image-62-768x225.png 768w" sizes="(max-width: 851px) 100vw, 851px" /></figure>



<p>Make sure to set the &#8220;Slot Name&#8221; variable to the name you used earlier. In our case this was &#8220;savegame&#8221;.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="637" height="303" src="https://couchlearn.com/wp-content/uploads/2022/12/image-63.png" alt="Saving the game to the savegame slot." class="wp-image-2004" srcset="https://couchlearn.com/wp-content/uploads/2022/12/image-63.png 637w, https://couchlearn.com/wp-content/uploads/2022/12/image-63-300x143.png 300w" sizes="(max-width: 637px) 100vw, 637px" /></figure>



<h2 class="wp-block-heading">Saving and Loading the Player Position</h2>



<p>Now that your Save and Load system is complete, we need to trigger this functionality.</p>



<p>In your Player Character class add an Key Press Event. For this guide we used the number 1 key from our ThirdPersonCharacterBP class.<br><br>From there, create a &#8220;Get Game Instance&#8221; node and a &#8220;Cast To&#8221; node to your custom game instance. Connect the two as shown below.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="507" height="232" src="https://couchlearn.com/wp-content/uploads/2022/12/image-58.png" alt="Casting to the GameInstance from the Number 1 Key event" class="wp-image-1999" srcset="https://couchlearn.com/wp-content/uploads/2022/12/image-58.png 507w, https://couchlearn.com/wp-content/uploads/2022/12/image-58-300x137.png 300w" sizes="(max-width: 507px) 100vw, 507px" /></figure>



<p>Next, from the blue &#8220;As Game Instance&#8221; pin, call the &#8220;Save&#8221; event we created earlier. Now when we press the number 1 key, our game will save the current player character&#8217;s position to the save file.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="935" height="279" src="https://couchlearn.com/wp-content/uploads/2022/12/image-59.png" alt="Calling the Save event from the Number 1 Key event Cast to Game Instance nodes." class="wp-image-2000" srcset="https://couchlearn.com/wp-content/uploads/2022/12/image-59.png 935w, https://couchlearn.com/wp-content/uploads/2022/12/image-59-300x90.png 300w, https://couchlearn.com/wp-content/uploads/2022/12/image-59-768x229.png 768w" sizes="(max-width: 935px) 100vw, 935px" /></figure>



<p>Repeat the previous step for the number 2 key as shown in the image below.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="515" height="223" src="https://couchlearn.com/wp-content/uploads/2022/12/image-60.png" alt="Repeating the previous nodes for the Number 2 Key event" class="wp-image-2001" srcset="https://couchlearn.com/wp-content/uploads/2022/12/image-60.png 515w, https://couchlearn.com/wp-content/uploads/2022/12/image-60-300x130.png 300w" sizes="(max-width: 515px) 100vw, 515px" /></figure>



<p>Finally, call the &#8220;Load&#8221; event from the &#8220;As Game Instance&#8221; blue pin. This will now load our saved player position from the save file and teleport our player to that position.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="737" height="223" src="https://couchlearn.com/wp-content/uploads/2022/12/image-61.png" alt="Calling the Load event from the Number 2 Key Cast to Game Instance nodes." class="wp-image-2002" srcset="https://couchlearn.com/wp-content/uploads/2022/12/image-61.png 737w, https://couchlearn.com/wp-content/uploads/2022/12/image-61-300x91.png 300w" sizes="(max-width: 737px) 100vw, 737px" /></figure>



<h2 class="wp-block-heading">Demo</h2>



<figure class="wp-block-image size-full"><img decoding="async" width="800" height="449" src="https://couchlearn.com/wp-content/uploads/2022/12/SaveAndLoadDemo.webp" alt="The player character saving and loading the location to and from the save file affecting the gameplay." class="wp-image-2006"/></figure>



<h2 class="wp-block-heading">Download the Project Files</h2>



<script src="https://gumroad.com/js/gumroad-embed.js"></script>
<div class="gumroad-product-embed"><a href="https://gumroad.com/l/jwouk">Loading&#8230;</a></div>



<h2 class="wp-block-heading">Conclusion</h2>



<p>Now your project has saving and loading capabilities!<br><br>This is a very basic implementation but allows you to expand this further. Any data you want to save and load can be implemented into the events we created during this guide. <br><br>An example of this would be the player&#8217;s health. This variable could be created on the SaveGame, saved and loaded onto the character with minimal setup.<br><br>Further Reading:<br><a href="https://docs.unrealengine.com/4.26/en-US/InteractiveExperiences/SaveGame/#:~:text=Creating%20a%20SaveGame%20Object&amp;text=When%20the%20Pick%20Parent%20Class,you%20would%20like%20to%20save." target="_blank" rel="noreferrer noopener">Official UE4/5 documentation for the Saving and Loading in the engine.</a><br><a href="https://www.tomlooman.com/unreal-engine-cpp-save-system/" target="_blank" rel="noreferrer noopener">Tom Looman&#8217;s great guide for implementing Saving and Loading for C++ classes</a></p>
<p>The post <a href="https://couchlearn.com/how-to-save-and-load-in-unreal-engine-5/">How to Save and Load in Unreal Engine 5</a> appeared first on <a href="https://couchlearn.com">Couch Learn</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://couchlearn.com/how-to-save-and-load-in-unreal-engine-5/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>How to reduce Unreal Engine 5 editor install size</title>
		<link>https://couchlearn.com/how-to-reduce-unreal-engine-5-editor-install-size/</link>
					<comments>https://couchlearn.com/how-to-reduce-unreal-engine-5-editor-install-size/#respond</comments>
		
		<dc:creator><![CDATA[Matt]]></dc:creator>
		<pubDate>Sat, 26 Nov 2022 12:16:35 +0000</pubDate>
				<category><![CDATA[Easy Difficulty]]></category>
		<category><![CDATA[Unreal Engine]]></category>
		<category><![CDATA[Unreal Engine 4]]></category>
		<category><![CDATA[Unreal Engine 5]]></category>
		<category><![CDATA[reduce install size ue4]]></category>
		<category><![CDATA[reduce install size ue5]]></category>
		<category><![CDATA[reduce install size unreal engine]]></category>
		<category><![CDATA[reduce size unreal engine]]></category>
		<category><![CDATA[ue4]]></category>
		<category><![CDATA[ue5]]></category>
		<category><![CDATA[unreal engine]]></category>
		<category><![CDATA[unreal engine 4]]></category>
		<category><![CDATA[unreal engine 5]]></category>
		<guid isPermaLink="false">https://couchlearn.com/?p=1795</guid>

					<description><![CDATA[<p>One of the most common questions new developers of Unreal Engine ask is &#8220;how to reduce the size of the engine and editor on my <a class="mh-excerpt-more" href="https://couchlearn.com/how-to-reduce-unreal-engine-5-editor-install-size/" title="How to reduce Unreal Engine 5 editor install size">[...]</a></p>
<p>The post <a href="https://couchlearn.com/how-to-reduce-unreal-engine-5-editor-install-size/">How to reduce Unreal Engine 5 editor install size</a> appeared first on <a href="https://couchlearn.com">Couch Learn</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>One of the most common questions new developers of Unreal Engine ask is &#8220;<em>how to reduce the size of the engine and editor on my hard drive or SSD</em>&#8220;.<br><br>In this guide we will be showing you the easiest way how to reduce Unreal Engine 5 editor install size.</p>



<h2 class="wp-block-heading">Before Installation</h2>



<p>To reduce the install size of a new install of Unreal Engine, firstly click the plus button next to &#8220;Engine Versions&#8221;. This is found in the Unreal Engine / Library tab of the Epic Games Launcher.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="334" src="https://couchlearn.com/wp-content/uploads/2022/11/image-6-1024x334.png" alt="Adding a new engine version to the epic games launcher" class="wp-image-1809" srcset="https://couchlearn.com/wp-content/uploads/2022/11/image-6-1024x334.png 1024w, https://couchlearn.com/wp-content/uploads/2022/11/image-6-300x98.png 300w, https://couchlearn.com/wp-content/uploads/2022/11/image-6-768x251.png 768w, https://couchlearn.com/wp-content/uploads/2022/11/image-6-1536x501.png 1536w, https://couchlearn.com/wp-content/uploads/2022/11/image-6.png 1900w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>From there select the engine version you would like to download and click the &#8220;Install&#8221; button.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="399" src="https://couchlearn.com/wp-content/uploads/2022/11/image-7-1024x399.png" alt="Installing unreal engine 5" class="wp-image-1810" srcset="https://couchlearn.com/wp-content/uploads/2022/11/image-7-1024x399.png 1024w, https://couchlearn.com/wp-content/uploads/2022/11/image-7-300x117.png 300w, https://couchlearn.com/wp-content/uploads/2022/11/image-7-768x299.png 768w, https://couchlearn.com/wp-content/uploads/2022/11/image-7-1536x598.png 1536w, https://couchlearn.com/wp-content/uploads/2022/11/image-7.png 1916w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>In the popup box, choose the directory to install the engine to then click &#8220;Options&#8221;.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="707" height="359" src="https://couchlearn.com/wp-content/uploads/2022/11/image-8.png" alt="Choosing additional install options" class="wp-image-1811" srcset="https://couchlearn.com/wp-content/uploads/2022/11/image-8.png 707w, https://couchlearn.com/wp-content/uploads/2022/11/image-8-300x152.png 300w" sizes="(max-width: 707px) 100vw, 707px" /></figure>



<p>Finally scroll through the list of options and remove the ones you do not need in your install then click &#8220;Apply&#8221; and &#8220;Install&#8221;. <br><br><strong>We recommend keeping the templates and editor symbols to aid in development and debugging.</strong><br><br>The easiest to remove are TVOS and HoloLens2 as most users do not build for these platforms.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="668" height="494" src="https://couchlearn.com/wp-content/uploads/2022/11/image-4.png" alt="Removing unneeded features from the engine to reduce install size" class="wp-image-1807" srcset="https://couchlearn.com/wp-content/uploads/2022/11/image-4.png 668w, https://couchlearn.com/wp-content/uploads/2022/11/image-4-300x222.png 300w, https://couchlearn.com/wp-content/uploads/2022/11/image-4-80x60.png 80w" sizes="(max-width: 668px) 100vw, 668px" /></figure>



<h2 class="wp-block-heading">After Installation</h2>



<p>It is still possible to reduce the install size even if you have already installed a version of Unreal Engine.<br><br>First find the version you would like to reduce in size then click the arrow next to &#8220;Launch&#8221;.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="511" src="https://couchlearn.com/wp-content/uploads/2022/11/image-1-1024x511.png" alt="Adjusting the settings of unreal engine 5 which has already been installed" class="wp-image-1803" srcset="https://couchlearn.com/wp-content/uploads/2022/11/image-1-1024x511.png 1024w, https://couchlearn.com/wp-content/uploads/2022/11/image-1-300x150.png 300w, https://couchlearn.com/wp-content/uploads/2022/11/image-1-768x384.png 768w, https://couchlearn.com/wp-content/uploads/2022/11/image-1-1536x767.png 1536w, https://couchlearn.com/wp-content/uploads/2022/11/image-1.png 1546w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Next click the &#8220;Options&#8221; button in the drop down menu underneath the editor version you are editing.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="511" src="https://couchlearn.com/wp-content/uploads/2022/11/image-2-1024x511.png" alt="Opening the install options of Unreal Engine 5" class="wp-image-1804" srcset="https://couchlearn.com/wp-content/uploads/2022/11/image-2-1024x511.png 1024w, https://couchlearn.com/wp-content/uploads/2022/11/image-2-300x150.png 300w, https://couchlearn.com/wp-content/uploads/2022/11/image-2-768x384.png 768w, https://couchlearn.com/wp-content/uploads/2022/11/image-2-1536x767.png 1536w, https://couchlearn.com/wp-content/uploads/2022/11/image-2.png 1546w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Finally scroll through the list of options and remove the ones you want to remove in your current install then click &#8220;Apply&#8221;. <br><br><strong>We recommend keeping the templates and editor symbols to aid in development and debugging.</strong></p>



<p>The easiest to remove are <strong>TVOS</strong> and <strong>HoloLens2</strong> as most users do not build for these platforms.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="668" height="494" src="https://couchlearn.com/wp-content/uploads/2022/11/image-3.png" alt="Removing unneeded build features from Unreal Engine 5 to reduce install size" class="wp-image-1805" srcset="https://couchlearn.com/wp-content/uploads/2022/11/image-3.png 668w, https://couchlearn.com/wp-content/uploads/2022/11/image-3-300x222.png 300w, https://couchlearn.com/wp-content/uploads/2022/11/image-3-80x60.png 80w" sizes="(max-width: 668px) 100vw, 668px" /></figure>



<h2 class="wp-block-heading">Conclusion</h2>



<p><strong>Your Unreal Engine 5 editor install size i</strong>s <strong>now reduced! <br></strong><br>Newer versions of the editor are considerably larger than older Unreal Engine 4 installs and this most likely will continue to grow as more features are added.<br><br>For the best development experience, we recommend installing Unreal Engine to a separate 512GB SSD. This improves the speed of the editor and allows you to have all the features and files installed in case you begin to develop for separate platforms or need to use the standard assets.<br><br><a href="https://docs.unrealengine.com/5.0/en-US/installing-unreal-engine/" target="_blank" rel="noreferrer noopener">Click here to read the official UE5 install documentation</a><br><a href="https://docs.unrealengine.com/5.0/en-US/hardware-and-software-specifications-for-unreal-engine/" target="_blank" rel="noreferrer noopener">Click here to read the official required and recommended hardware for Unreal Engine 5</a></p>
<p>The post <a href="https://couchlearn.com/how-to-reduce-unreal-engine-5-editor-install-size/">How to reduce Unreal Engine 5 editor install size</a> appeared first on <a href="https://couchlearn.com">Couch Learn</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://couchlearn.com/how-to-reduce-unreal-engine-5-editor-install-size/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How to use Timers in Unreal Engine 5</title>
		<link>https://couchlearn.com/how-to-use-timers-in-unreal-engine-5/</link>
					<comments>https://couchlearn.com/how-to-use-timers-in-unreal-engine-5/#respond</comments>
		
		<dc:creator><![CDATA[Matt]]></dc:creator>
		<pubDate>Wed, 16 Nov 2022 22:00:18 +0000</pubDate>
				<category><![CDATA[UE4 Basics]]></category>
		<category><![CDATA[Unreal Basics]]></category>
		<category><![CDATA[Unreal Engine]]></category>
		<category><![CDATA[Unreal Engine 4]]></category>
		<category><![CDATA[Unreal Engine 5]]></category>
		<category><![CDATA[easy]]></category>
		<category><![CDATA[easy difficulty]]></category>
		<category><![CDATA[ue4]]></category>
		<category><![CDATA[ue4 basics]]></category>
		<category><![CDATA[ue4 timer]]></category>
		<category><![CDATA[ue5 timer]]></category>
		<category><![CDATA[unreal engine]]></category>
		<category><![CDATA[unreal engine 4]]></category>
		<category><![CDATA[unreal engine 4 timer]]></category>
		<category><![CDATA[unreal engine 5]]></category>
		<category><![CDATA[unreal engine 5 timer]]></category>
		<guid isPermaLink="false">https://couchlearn.com/?p=1383</guid>

					<description><![CDATA[<p>Timers are one of the best ways to run blueprint code periodically without using Event Tick. Unreal Engine will trigger your event or function automatically <a class="mh-excerpt-more" href="https://couchlearn.com/how-to-use-timers-in-unreal-engine-5/" title="How to use Timers in Unreal Engine 5">[...]</a></p>
<p>The post <a href="https://couchlearn.com/how-to-use-timers-in-unreal-engine-5/">How to use Timers in Unreal Engine 5</a> appeared first on <a href="https://couchlearn.com">Couch Learn</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Timers are one of the best ways to run blueprint code periodically without using Event Tick. Unreal Engine will trigger your event or function automatically at the time set instead of constantly polling your functionality every frame.<br><br><strong>Using timers can prevent actors reducing your game&#8217;s frame rate if implemented correctly.</strong><br><br>In this guide we will be learning how to use Timers in Unreal Engine 5.</p>



<h2 class="wp-block-heading">Prerequisites</h2>



<p>To understand this guide and implement timers into your project, you will need to know how to use custom events and functions in Unreal Engine 5 before starting.</p>



<p><a href="https://couchlearn.com/how-to-use-custom-events-in-unreal-engine-4/">Click here to read our guide on custom events.</a></p>



<h2 class="wp-block-heading">How to create Blueprint Timers</h2>



<h3 class="wp-block-heading">Basic Timer Settings</h3>



<p>Before we create our timer, we will look at the basic timer settings that all timers have. These allow us to set the frequency of the timer and if the timer repeats or not.<br><br>The green <strong>Time </strong>pin is the time Unreal Engine will wait to call your event. <strong>If this value is less than or equal to 0, the timer will be cleared and will not call the event.</strong></p>



<figure class="wp-block-image size-large"><img decoding="async" width="245" height="180" src="https://couchlearn.com/wp-content/uploads/2021/01/image-13.png" alt="Setting the timer Time value. This sets the frequency of your timer." class="wp-image-1390"/></figure>



<p>The <strong>Looping</strong> check box will repeat the timer if set to <strong>true </strong>and only run once if set to <strong>false</strong>. Ticking this box is best for functionality that you want to run repeatedly.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="243" height="178" src="https://couchlearn.com/wp-content/uploads/2021/01/image-14.png" alt="Setting the Looping value of the timer. This will loop at the frequency set if true." class="wp-image-1391"/></figure>



<h3 class="wp-block-heading">Timer by Event</h3>



<p>When you want to create a timer that uses a custom event in the event graph, you need to use Set Timer by Event.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="241" height="176" src="https://couchlearn.com/wp-content/uploads/2021/01/image-10.png" alt="Creating a new timer by event" class="wp-image-1385"/></figure>



<p>As shown below, your custom events can be connected using the red event delegate square. Any custom event are connected to this pin to trigger on the time set. Only one event is connected at a time.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="516" height="268" src="https://couchlearn.com/wp-content/uploads/2021/01/image-12.png" alt="Connecting the timer to the event" class="wp-image-1389" srcset="https://couchlearn.com/wp-content/uploads/2021/01/image-12.png 516w, https://couchlearn.com/wp-content/uploads/2021/01/image-12-300x156.png 300w" sizes="(max-width: 516px) 100vw, 516px" /></figure>



<h3 class="wp-block-heading">Timer by Function</h3>



<p>If you want to use a function instead of an event delegate, we have the Timer by Function Name blueprint node. This has function name and object pins replacing the red delegate pin.<br><br>Object is the reference to the object that you want to run the function on (e.g. FirstPersonCharacter or your own custom actors). <strong>If you want to run the function on this actor, you can leave this pin empty.</strong><br><br>&#8220;Function Name&#8221; is the name of the function found in the function list in your object.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="285" height="219" src="https://couchlearn.com/wp-content/uploads/2021/01/image-11.png" alt="Creating a timer with a function" class="wp-image-1387"/></figure>



<p>In this example we have created a new function in the My Blueprint panel on the left of the blueprint editor. Our new function is called <strong>MyCustomFunction</strong>.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="289" height="216" src="https://couchlearn.com/wp-content/uploads/2021/01/image-17.png" alt="Creating a new function in the blueprint editor" class="wp-image-1395"/></figure>



<p>Now our function has been created, we then add the functions name into the Function Name pin.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="301" height="236" src="https://couchlearn.com/wp-content/uploads/2021/01/image-16.png" alt="Setting a new timer's function name to the function we created in the previous step." class="wp-image-1394"/></figure>



<p><strong>The blueprint node above now run MyCustomFunction after 5 seconds without looping.</strong></p>



<h3 class="wp-block-heading">Saving the Timer</h3>



<p>If you want to change any properties about a timer, you need to save a reference to the return value. The easiest way to do this is to drag from the return value and click Promote to Variable.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="787" height="295" src="https://couchlearn.com/wp-content/uploads/2021/01/image-20.png" alt="Promoting the return value of the new timer to a variable for use later." class="wp-image-1400" srcset="https://couchlearn.com/wp-content/uploads/2021/01/image-20.png 787w, https://couchlearn.com/wp-content/uploads/2021/01/image-20-300x112.png 300w, https://couchlearn.com/wp-content/uploads/2021/01/image-20-768x288.png 768w" sizes="(max-width: 787px) 100vw, 787px" /></figure>



<h3 class="wp-block-heading">Pausing and Unpausing Timers</h3>



<p>Now we have a reference to our timer, we can pause and un-pause the timer. The nodes below show the handle and function versions of pausing and unpausing your timer.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="199" height="91" src="https://couchlearn.com/wp-content/uploads/2021/01/image-18.png" alt="Pausing the timer by handle" class="wp-image-1397"/></figure>



<figure class="wp-block-image size-large"><img decoding="async" width="212" height="94" src="https://couchlearn.com/wp-content/uploads/2021/01/image-21.png" alt="Unpausing the timer by handle" class="wp-image-1402"/></figure>



<p>Function timers can be paused and unpaused using the function name and do not need a timer handle.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="247" height="152" src="https://couchlearn.com/wp-content/uploads/2021/01/image-19.png" alt="Pausing the timer by function name" class="wp-image-1398"/></figure>



<figure class="wp-block-image size-large"><img decoding="async" width="262" height="155" src="https://couchlearn.com/wp-content/uploads/2021/01/image-23.png" alt="Un pausing the timer by function name" class="wp-image-1405"/></figure>



<h3 class="wp-block-heading">Removing a Timer</h3>



<p>When you need a timer to stop, use the clear and invalidate timer blueprint nodes. These nodes will stop the timer and destroy the specified handle object.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="278" height="92" src="https://couchlearn.com/wp-content/uploads/2021/01/image-24.png" alt="Clearing and invalidating the timer by handle" class="wp-image-1407"/></figure>



<p>When using a Function Timer, you will need to clear and invalidate the timer separately if you want to use a function name.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="457" height="161" src="https://couchlearn.com/wp-content/uploads/2021/01/image-30.png" alt="Clearing the timer by function name then invalidating the handle separately" class="wp-image-1417" srcset="https://couchlearn.com/wp-content/uploads/2021/01/image-30.png 457w, https://couchlearn.com/wp-content/uploads/2021/01/image-30-300x106.png 300w" sizes="(max-width: 457px) 100vw, 457px" /></figure>



<h3 class="wp-block-heading">Checking a Timer&#8217;s Status</h3>



<p>With the handle or function name, you can check various properties about a timer.<br><br>Firstly we have Does Timer Exist. These nodes check if the timer exists in memory. <strong>If the timer is cleared and invalidated this value is false.</strong></p>



<figure class="wp-block-image size-large"><img decoding="async" width="286" height="209" src="https://couchlearn.com/wp-content/uploads/2021/01/image-31.png" alt="Checking if the timer exists by handle or by function name" class="wp-image-1418"/></figure>



<p>Is Timer Active will return true if the handle or function name has a timer that is actively running and exists.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="292" height="210" src="https://couchlearn.com/wp-content/uploads/2021/01/image-28.png" alt="Checking if the timer is active by function name or handle" class="wp-image-1414"/></figure>



<p>&#8220;Is Timer Paused&#8221; returns true if the timer is not actively running but does exist.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="292" height="215" src="https://couchlearn.com/wp-content/uploads/2021/01/image-32.png" alt="Checking if the timer is paused by function name or handle" class="wp-image-1419"/></figure>



<h3 class="wp-block-heading">Conclusion</h3>



<p>Now you have all the knowledge to use timers in your blueprint code in Unreal Engine 5!<br><br>Having all of these nodes at your disposal allows code and functionality to run at specific times and at certain frequencies. This will overall improve the readability of your code and can bring great performance gains. We recommend setting the Time value to 0.1 or 0.05 seconds instead of running every frame on tick.<br><br>Further reading:<br><a href="https://docs.unrealengine.com/4.26/en-US/InteractiveExperiences/UseTimers/">In depth use of timers with gameplay example from Unreal Engine documentation<br></a><a href="https://docs.unrealengine.com/en-US/ProgrammingAndScripting/ProgrammingWithCPP/UnrealArchitecture/Timers/index.html">Click here to read how C++ Timers work in Unreal Engine</a></p>
<p>The post <a href="https://couchlearn.com/how-to-use-timers-in-unreal-engine-5/">How to use Timers in Unreal Engine 5</a> appeared first on <a href="https://couchlearn.com">Couch Learn</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://couchlearn.com/how-to-use-timers-in-unreal-engine-5/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/

Page Caching using Disk: Enhanced 
Minified using Disk

Served from: couchlearn.com @ 2026-04-15 17:04:08 by W3 Total Cache
-->