{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["admonition"]},"redocly_category":"Integrations","type":"markdown"},"seo":{"title":"Unreal Engine SDK","description":"Treasure Data Product Documentation · Collect and Unify · Segment and Activate · Experiment and Analyze · Decisioning Automate with AI Scale and Trust.","siteUrl":"https://docs.treasuredata.com","lang":"en-US","llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"unreal-engine-sdk","__idx":0},"children":["Unreal Engine SDK"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["This plugin behaves as an Analytics Provider for Unreal Engine. It enables you to track in-game events using Treasure Data. Common use cases for this plugin are to track things like currency buys, item trades, and game progression."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You can start sending data from your ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://www.unrealengine.com/"},"children":["Unreal Engine"]}," app to Treasure Data using our Unreal Engine SDK."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"img","attributes":{"src":"/assets/image-20191022-132426.f322f86a09d78e50b2c307af1257421ea14e3b6fc60f4ed28604bd3eedc1d4b1.3fd85dbb.png","alt":""},"children":[]}]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://github.com/treasure-data/td-ue4-sdk"},"children":["Unreal Engine SDK Repository"]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"prerequisites","__idx":1},"children":["Prerequisites"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The Unreal Engine has been compiled from source with all dependencies so third party plugins can build"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The Unreal Engine has been installed on your machine"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Blueprints plugin is in place and enabled"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Treasure Data plugin is in place and enabled"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["You have a ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://console.treasuredata.com/app/users"},"children":["Treasure Data Write-Only API Key"]}]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Treasure Data strongly recommends that you use a write-only API key for ingest and import operations and whenever using Treasure Data SDKs."]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"How to get a Write-Only API Key"},"children":[{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Login to the Treasure Console and go to the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://console.treasuredata.com/app/mp/ak"},"children":["API Key page"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["If you don't already have a write-only API key, then create one. From the top right, select ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Actions > Create API Key"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Name the new API Key."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["From the Type drop-down menu, select ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Write-only"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Select ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Save"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Copy your new Write-Only API Key and use it to authenticate the APIs in your project."]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"setup","__idx":2},"children":["Setup"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"setting-up-unreal-engine-5","__idx":3},"children":["Setting Up Unreal Engine 5"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Sign up for an ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://github.com/EpicGames"},"children":["Unreal Engine account"]}," in order to access the GitHub repository for Unreal Engine 5."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["On the Unreal Engine website, use the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Personal > Apps and Accounts"]}," page to connect your Unreal Account to GitHub."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Clone the Unreal repository from GitHub to your local machine."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Compile the Unreal Engine with all dependencies."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"download-and-place-the-plugin","__idx":4},"children":["Download and Place the Plugin"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Get a copy of the plugin from the main GIT repository:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"git clone https://github.com/treasure-data/td-ue4-sdk\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Checkout the branch that matches your Unreal Engine version:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","data-title":"Unreal Engine 5.3","header":{"title":"Unreal Engine 5.3","controls":{"copy":{}}},"source":"git checkout UE-5.3\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","data-title":"Unreal Engine 4.x","header":{"title":"Unreal Engine 4.x","controls":{"copy":{}}},"source":"git checkout master\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Copy the new ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["td-ue4-sdk"]}," to your Unreal Engine plugins folder. The target path looks something like this:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"UnrealEngine/Engine/Plugins/td-ue4-sdk\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Alternatively, you can copy the plugin content inside your Project Plugin directory. However, this approach does not work in a Linux Development environment."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"build-the-plugin","__idx":5},"children":["Build the Plugin"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To build the plugin, you need to generate the build-rules. The UE Engine provides a script called ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["GenerateProjectFiles"]},":"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GenerateProjectFiles.bat"]}," (Windows)"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["GenerateProjectFiles.sh"]}," (Unix/Linux/Mac)"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Depending on your system (Unix-based or Windows), run the proper script from the command line:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["If the plugin is inside the Project directory (Project/Plugins), go to the Project root directory and run the script."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["If the plugin is inside the Engine, run the command from the Unreal Engine source root directory."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When the command finishes, type the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["make"]}," command:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"make\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["After a few seconds, the plugin binary is available."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":4,"id":"speed-up-plugin-build-phase","__idx":6},"children":["Speed Up Plugin Build Phase"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In some cases you may need to re-build only the plugin. Using a normal ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["make"]}," command can take some minutes as it parses and runs scripts to fix dependencies. To speed up the process, add the following options:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"bash","header":{"controls":{"copy":{}}},"source":"make UE4Editor ARGS=-canskiplink\n","lang":"bash"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"enable-the-analytics-plugins-for-your-project","__idx":7},"children":["Enable the Analytics Plugins for Your Project"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["In the Unreal Engine Editor, select ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Edit > Plugins"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Open your project and the plugins window."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Enable the two required plugins:",{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Blueprints"]},": located at Built-in > Analytics"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Treasure Data"]},": located at Installed > Analytics"]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"img","attributes":{"src":"/assets/image-20191022-132504.d8ef25004a8914d9aeb816f1eb52423fec61361b2651eb26a106463e80f05c0e.3fd85dbb.png","alt":""},"children":[]}," ",{"$$mdtype":"Tag","name":"img","attributes":{"src":"/assets/image-20191022-132513.795ddcb8d26225801bc0bb865cdde797762f202f6828b83cca73769d289dd941.3fd85dbb.png","alt":""},"children":[]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"configure-project-settings","__idx":8},"children":["Configure Project Settings"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["From your project directory, open and edit the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Config/DefaultEngine.ini"]}," file and append the following content at the bottom:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"ini","header":{"controls":{"copy":{}}},"source":"[Analytics]\nProviderModuleName=TreasureData\nTDApiKey=TD-WRITE-ONLY-KEY\nTDDatabase=DATABASE_NAME\nTDRegion=[US01,AP01,AP02,AP03,EU01]\nSendInterval=10\n\n[AnalyticsDevelopment]\nProviderModuleName=TreasureData\nTDApiKey=TD-WRITE-ONLY-KEY\nTDDatabase=DATABASE_NAME\nTDRegion=[US01,AP01,AP02,AP03,EU01]\nSendInterval=10\n\n[AnalyticsTest]\nProviderModuleName=TreasureData\nTDApiKey=TD-WRITE-ONLY-KEY\nTDDatabase=DATABASE_NAME\nTDRegion=[US01,AP01,AP02,AP03,EU01]\nSendInterval=10\n","lang":"ini"},"children":[]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The combined length of database name and table name must be shorter than 129 characters."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["After making your changes, save the file and restart the Unreal Engine Editor."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"gathering-metrics-with-blueprints","__idx":9},"children":["Gathering Metrics with Blueprints"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In the Editor, select ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Blueprints > Open Level Blueprint"]},"."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"img","attributes":{"src":"/assets/image-20191022-132603.0ebbdf6e5796a5cd6d2ad8fb6e0450ebc3a4dcd3b66aebc89b8ce7d24ff9a8b6.3fd85dbb.png","alt":""},"children":[]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In the Event graphs window, different events can now be connected to Analytics functions. The following image demonstrates how to track the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Session Start"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Session End"]},", and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Record Event w/Attributes"]}," events:"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["After a Game starts, the plugin will send the events to Treasure Data."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"viewing-data-on-treasure-data","__idx":10},"children":["Viewing Data on Treasure Data"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To query game events:"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["From the ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"https://console.treasuredata.com"},"children":["Treasure Console"]},", select ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Databases"]}," from the workbench."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Open the database used in the game (specified in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Config/DefaultEngine.ini > TDDatabase"]},")."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"img","attributes":{"src":"/assets/image-20191022-132637.e2074fcadb175961c18432787b104e2c10deac7024895099460750092f25a6a8.3fd85dbb.png","alt":""},"children":[]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["By default two tables are created:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Sessions"]},": start and stop sessions"]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Events"]},": All events with or without attributes"]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To query records, select a table name and then select the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Query"]}," button at the top of the screen. By default you can issue SQL queries similar to this:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"sql","header":{"controls":{"copy":{}}},"source":"SELECT * FROM events;\n","lang":"sql"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"img","attributes":{"src":"/assets/image-20191022-132726.316a30dce56d38fcfeaf69fc5934c01f73f7b3bf0802ed8f0a9a6c1b8c16e3d0.3fd85dbb.png","alt":""},"children":[]}]}]},"headings":[{"value":"Unreal Engine SDK","id":"unreal-engine-sdk","depth":1},{"value":"Prerequisites","id":"prerequisites","depth":2},{"value":"Setup","id":"setup","depth":2},{"value":"Setting Up Unreal Engine 5","id":"setting-up-unreal-engine-5","depth":3},{"value":"Download and Place the Plugin","id":"download-and-place-the-plugin","depth":3},{"value":"Build the Plugin","id":"build-the-plugin","depth":3},{"value":"Speed Up Plugin Build Phase","id":"speed-up-plugin-build-phase","depth":4},{"value":"Enable the Analytics Plugins for Your Project","id":"enable-the-analytics-plugins-for-your-project","depth":3},{"value":"Configure Project Settings","id":"configure-project-settings","depth":3},{"value":"Gathering Metrics with Blueprints","id":"gathering-metrics-with-blueprints","depth":2},{"value":"Viewing Data on Treasure Data","id":"viewing-data-on-treasure-data","depth":2}],"frontmatter":{"seo":{"title":"Unreal Engine SDK"}},"lastModified":"2026-06-01T09:09:59.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/int/unreal-engine-sdk-import-integration","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}