Import the UE5 SDK

We utilize GitHub as the preferred method for file transportation during project delivery, offering several advantages:

  • Version control and history: GitHub enables you to track changes made to your project over time, ensuring a comprehensive history of modifications.

  • Easy rollback and roll forward: With GitHub, you can effortlessly revert to previous versions or progress forward, providing flexibility and facilitating iterative development.

  • Efficient data transfer for updates: By leveraging GitHub for project delivery, you can minimize the amount of data transferred during updates, optimizing the process and saving time.

  • Branching and tagging of releases: GitHub allows for the creation of branches and tagging of releases, enabling efficient management of different versions and milestones within your project.

By utilizing GitHub's features, you can streamline your project delivery process, ensure proper version control, and take advantage of convenient rollback and roll forward capabilities. For a general introduction on Git, please refer to this guide.

Step 0: Creating or Sign in to your Github account

  1. If you do not have a Github account then please goto Github and create an account.

  2. Make sure you have setup Git on you local machine

Step 1: Creating a new project

To initiate metaverse development in Unreal Engine 5, follow these steps (If you would you to integrate the UE5 SDK in your existing project then move to Step 2, but our strong recommendation is to start with a new project):

  1. Begin by creating a new project in Unreal Engine 5, either a Blueprint or C++ project. You also have the option to integrate the UE5 SDK into an existing project. Avoid using characters such as '-', '+', '/', or '*' in the project name, as they can lead to build issues. We recommend a straightforward and descriptive name like "MyFirstExperience". If this your first time, we recommend going for the "Third Person" template setup. Be sure to turn off Raytracing as you want to use UE5 Lumen instead.

  2. To ensure that unnecessary files are excluded from version control, it's recommended to add a .gitignore file located in the root folder of your project. If you are creating a new text document in Windows then make sure to change the extension from .txt to .gitignore (It should not be .gitignore.txt)

The .gitignore file prevents files from unnecessary files to be sent and retrieved to your repository (saving you time). It should contain the following text:

# YOM specific ignores
Plugins/YourOpenMetaverse/Config/DefaultYourOpenMetaverse.ini
PortalImages
*.sln
*.pdb
*.bak

# Created by https://www.toptal.com/developers/gitignore/api/unrealengine,visualstudio,c++,visualstudiocode,rider,clion
# Edit at https://www.toptal.com/developers/gitignore?templates=unrealengine,visualstudio,c++,visualstudiocode,rider,clion

### C++ ###
# Prerequisites
*.d

# Compiled Object files
*.slo
*.lo
*.o
*.obj

# Precompiled Headers
*.gch
*.pch

# Compiled Dynamic libraries
*.so
*.dylib
*.dll

# Fortran module files
*.mod
*.smod

# Compiled Static libraries
*.lai
*.la
*.a
*.lib

# Executables
*.exe
*.out
*.app

### CLion ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839

.idea

# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf

# AWS User-specific
.idea/**/aws.xml

# Generated files
.idea/**/contentModel.xml

# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml

# Gradle
.idea/**/gradle.xml
.idea/**/libraries

# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn.  Uncomment if using
# auto-import.
# .idea/artifacts
# .idea/compiler.xml
# .idea/jarRepositories.xml
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# *.iml
# *.ipr

# CMake
cmake-build-*/

# Mongo Explorer plugin
.idea/**/mongoSettings.xml

# File-based project format
*.iws

# IntelliJ
out/

# mpeltonen/sbt-idea plugin
.idea_modules/

# JIRA plugin
atlassian-ide-plugin.xml

# Cursive Clojure plugin
.idea/replstate.xml

# SonarLint plugin
.idea/sonarlint/

# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties

# Editor-based Rest Client
.idea/httpRequests

# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser

### CLion Patch ###
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721

# *.iml
# modules.xml
# .idea/misc.xml
# *.ipr

# Sonarlint plugin
# https://plugins.jetbrains.com/plugin/7973-sonarlint
.idea/**/sonarlint/

# SonarQube Plugin
# https://plugins.jetbrains.com/plugin/7238-sonarqube-community-plugin
.idea/**/sonarIssues.xml

# Markdown Navigator plugin
# https://plugins.jetbrains.com/plugin/7896-markdown-navigator-enhanced
.idea/**/markdown-navigator.xml
.idea/**/markdown-navigator-enh.xml
.idea/**/markdown-navigator/

# Cache file creation bug
# See https://youtrack.jetbrains.com/issue/JBR-2257
.idea/$CACHE_FILE$

# CodeStream plugin
# https://plugins.jetbrains.com/plugin/12206-codestream
.idea/codestream.xml

# Azure Toolkit for IntelliJ plugin
# https://plugins.jetbrains.com/plugin/8053-azure-toolkit-for-intellij
.idea/**/azureSettings.xml

### Rider ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839

# User-specific stuff

# AWS User-specific

# Generated files

# Sensitive or high-churn files

# Gradle

# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn.  Uncomment if using
# auto-import.
# .idea/artifacts
# .idea/compiler.xml
# .idea/jarRepositories.xml
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# *.iml
# *.ipr

# CMake

# Mongo Explorer plugin

# File-based project format

# IntelliJ

# mpeltonen/sbt-idea plugin

# JIRA plugin

# Cursive Clojure plugin

# SonarLint plugin

# Crashlytics plugin (for Android Studio and IntelliJ)

# Editor-based Rest Client

# Android studio 3.1+ serialized cache file

### UnrealEngine ###
# Visual Studio 2015 user specific files
.vs/

# Compiled Object files

# Precompiled Headers

# Compiled Dynamic libraries

# Fortran module files

# Compiled Static libraries

# Executables
*.ipa

# These project files can be generated by the engine
*.xcodeproj
*.xcworkspace
*.sln
*.suo
*.opensdf
*.sdf
*.VC.db
*.VC.opendb

# Precompiled Assets
SourceArt/**/*.png
SourceArt/**/*.tga

# Binary Files
Binaries/*
Plugins/*/Binaries/*

# Builds
Build/*

# Whitelist PakBlacklist-<BuildConfiguration>.txt files
!Build/*/
Build/*/**
!Build/*/PakBlacklist*.txt

# Don't ignore icon files in Build
!Build/**/*.ico

# Built data for maps
*_BuiltData.uasset

# Configuration files generated by the Editor
Saved/*

# Compiled source files for the engine to use
Intermediate/*
Plugins/*/Intermediate/*

# Cache files for the editor to use
DerivedDataCache/*

### UnrealEngine Patch ###
# Don't ignore icon and splash images for mobile app
!Build/IOS/Resources/
Build/IOS/Resources/*
!Build/IOS/Resources/Graphics/
Build/IOS/Resources/Graphics/*
!Build/IOS/Resources/Graphics/*.png
!Build/Android/res/
Build/Android/res/*
!Build/Android/res/*/
Build/Android/res/*/*
!Build/Android/res/*/*.png
# Ignore plugins binaries on deep subfolders
Plugins/**/Binaries/*
Plugins/**/Intermediate/*

### VisualStudioCode ###
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
!.vscode/*.code-snippets

# Local History for Visual Studio Code
.history/

# Built Visual Studio Code Extensions
*.vsix

### VisualStudioCode Patch ###
# Ignore all local history of files
.history
.ionide

### VisualStudio ###
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore

# User-specific files
*.rsuser
*.user
*.userosscache
*.sln.docstates

# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs

# Mono auto generated files
mono_crash.*

# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
[Ww][Ii][Nn]32/
[Aa][Rr][Mm]/
[Aa][Rr][Mm]64/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
[Ll]ogs/

# Visual Studio 2015/2017 cache/options directory
# Uncomment if you have tasks that create the project's static files in wwwroot
#wwwroot/

# Visual Studio 2017 auto generated files
Generated\ Files/

# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*

# NUnit
*.VisualState.xml
TestResult.xml
nunit-*.xml

# Build Results of an ATL Project
[Dd]ebugPS/
[Rr]eleasePS/
dlldata.c

# Benchmark Results
BenchmarkDotNet.Artifacts/

# .NET Core
project.lock.json
project.fragment.lock.json
artifacts/

# ASP.NET Scaffolding
ScaffoldingReadMe.txt

# StyleCop
StyleCopReport.xml

# Files built by Visual Studio
*_i.c
*_p.c
*_h.h
*.ilk
*.meta
*.iobj
*.pdb
*.ipdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.tmp_proj
*_wpftmp.csproj
*.log
*.tlog
*.vspscc
*.vssscc
.builds
*.pidb
*.svclog
*.scc

# Chutzpah Test files
_Chutzpah*

# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opendb
*.cachefile
*.VC.VC.opendb

# Visual Studio profiler
*.psess
*.vsp
*.vspx
*.sap

# Visual Studio Trace Files
*.e2e

# TFS 2012 Local Workspace
$tf/

# Guidance Automation Toolkit
*.gpState

# ReSharper is a .NET coding add-in
_ReSharper*/
*.[Rr]e[Ss]harper
*.DotSettings.user

# TeamCity is a build add-in
_TeamCity*

# DotCover is a Code Coverage Tool
*.dotCover

# AxoCover is a Code Coverage Tool
.axoCover/*
!.axoCover/settings.json

# Coverlet is a free, cross platform Code Coverage Tool
coverage*.json
coverage*.xml
coverage*.info

# Visual Studio code coverage results
*.coverage
*.coveragexml

# NCrunch
_NCrunch_*
.*crunch*.local.xml
nCrunchTemp_*

# MightyMoose
*.mm.*
AutoTest.Net/

# Web workbench (sass)
.sass-cache/

# Installshield output folder
[Ee]xpress/

# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html

# Click-Once directory
publish/

# Publish Web Output
*.[Pp]ublish.xml
*.azurePubxml
# Note: Comment the next line if you want to checkin your web deploy settings,
# but database connection strings (with potential passwords) will be unencrypted
*.pubxml
*.publishproj

# Microsoft Azure Web App publish settings. Comment the next line if you want to
# checkin your Azure Web App publish settings, but sensitive information contained
# in these scripts will be unencrypted
PublishScripts/

# NuGet Packages
*.nupkg
# NuGet Symbol Packages
*.snupkg
# The packages folder can be ignored because of Package Restore
**/[Pp]ackages/*
# except build/, which is used as an MSBuild target.
!**/[Pp]ackages/build/
# Uncomment if necessary however generally it will be regenerated when needed
#!**/[Pp]ackages/repositories.config
# NuGet v3's project.json files produces more ignorable files
*.nuget.props
*.nuget.targets

# Microsoft Azure Build Output
csx/
*.build.csdef

# Microsoft Azure Emulator
ecf/
rcf/

# Windows Store app package directories and files
AppPackages/
BundleArtifacts/
Package.StoreAssociation.xml
_pkginfo.txt
*.appx
*.appxbundle
*.appxupload

# Visual Studio cache files
# files ending in .cache can be ignored
*.[Cc]ache
# but keep track of directories ending in .cache
!?*.[Cc]ache/

# Others
ClientBin/
~$*
*~
*.dbmdl
*.dbproj.schemaview
*.jfm
*.pfx
*.publishsettings
orleans.codegen.cs

# Including strong name files can present a security risk
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
#*.snk

# Since there are multiple workflows, uncomment next line to ignore bower_components
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
#bower_components/

# RIA/Silverlight projects
Generated_Code/

# Backup & report files from converting an old project file
# to a newer Visual Studio version. Backup files are not needed,
# because we have git ;-)
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML
UpgradeLog*.htm
ServiceFabricBackup/
*.rptproj.bak

# SQL Server files
*.mdf
*.ldf
*.ndf

# Business Intelligence projects
*.rdl.data
*.bim.layout
*.bim_*.settings
*.rptproj.rsuser
*- [Bb]ackup.rdl
*- [Bb]ackup ([0-9]).rdl
*- [Bb]ackup ([0-9][0-9]).rdl

# Microsoft Fakes
FakesAssemblies/

# GhostDoc plugin setting file
*.GhostDoc.xml

# Node.js Tools for Visual Studio
.ntvs_analysis.dat
node_modules/

# Visual Studio 6 build log
*.plg

# Visual Studio 6 workspace options file
*.opt

# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
*.vbw

# Visual Studio 6 auto-generated project file (contains which files were open etc.)
*.vbp

# Visual Studio 6 workspace and project file (working project files containing files to include in project)
*.dsw
*.dsp

# Visual Studio 6 technical files

# Visual Studio LightSwitch build output
**/*.HTMLClient/GeneratedArtifacts
**/*.DesktopClient/GeneratedArtifacts
**/*.DesktopClient/ModelManifest.xml
**/*.Server/GeneratedArtifacts
**/*.Server/ModelManifest.xml
_Pvt_Extensions

# Paket dependency manager
.paket/paket.exe
paket-files/

# FAKE - F# Make
.fake/

# CodeRush personal settings
.cr/personal

# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc

# Cake - Uncomment if you are using it
# tools/**
# !tools/packages.config

# Tabs Studio
*.tss

# Telerik's JustMock configuration file
*.jmconfig

# BizTalk build output
*.btp.cs
*.btm.cs
*.odx.cs
*.xsd.cs

# OpenCover UI analysis results
OpenCover/

# Azure Stream Analytics local run output
ASALocalRun/

# MSBuild Binary and Structured Log
*.binlog

# NVidia Nsight GPU debugger configuration file
*.nvuser

# MFractors (Xamarin productivity tool) working folder
.mfractor/

# Local History for Visual Studio
.localhistory/

# Visual Studio History (VSHistory) files
.vshistory/

# BeatPulse healthcheck temp database
healthchecksdb

# Backup folder for Package Reference Convert tool in Visual Studio 2017
MigrationBackup/

# Ionide (cross platform F# VS Code tools) working folder
.ionide/

# Fody - auto-generated XML schema
FodyWeavers.xsd

# VS Code files for those working on multiple tools
*.code-workspace

# Local History for Visual Studio Code

# Windows Installer files from build outputs
*.cab
*.msi
*.msix
*.msm
*.msp

# JetBrains Rider
*.sln.iml

### VisualStudio Patch ###
# Additional files built by Visual Studio

# End of https://www.toptal.com/developers/gitignore/api/unrealengine,visualstudio,c++,visualstudiocode,rider,clion
  1. Initialize the git repository in the project directory, where the .uproject file should be in the root of the repository.

cd YourProject
git init
  1. For storing large files it is required to enable Git LFS on the repository. Visit the Git LFS site, download and install git-lfs. After installation run following command from your root directory

git lfs install
  1. Now copy the below content and paste it in a newly created .gitattributes file (put in your root folder next to the .gitignore file). If you are creating a new text document in Windows then make sure to change the extension from .txt to .gitattributes (It should not be .gitattributes.txt)

# Auto detect text files and perform LF normalization
* text=auto
*.zip filter=lfs diff=lfs merge=lfs -text
*.uasset filter=lfs diff=lfs merge=lfs -text
*.gitignore filter=lfs diff=lfs merge=lfs -text
*.ini filter=lfs diff=lfs merge=lfs -text
*.umap filter=lfs diff=lfs merge=lfs -text
*.rar filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.clang-format filter=lfs diff=lfs merge=lfs -text
*.cpp filter=lfs diff=lfs merge=lfs -text
*.h filter=lfs diff=lfs merge=lfs -text
*.cs filter=lfs diff=lfs merge=lfs -text
*.uplugin filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.chm filter=lfs diff=lfs merge=lfs -text
*.sfx filter=lfs diff=lfs merge=lfs -text
*.txt filter=lfs diff=lfs merge=lfs -text
*.ttt filter=lfs diff=lfs merge=lfs -text
*.ion filter=lfs diff=lfs merge=lfs -text
*.json filter=lfs diff=lfs merge=lfs -text
*.md filter=lfs diff=lfs merge=lfs -text
/Plugins/glTFRuntime/LICENSE filter=lfs diff=lfs merge=lfs -text
*.uproject filter=lfs diff=lfs merge=lfs -text
  1. Run the following command to commit your changes locally.

git add .
git commit -m "Initial commit"
  1. Now login into your Github and create a new repository (either in your personal workspace or in your organisation). Please note that it's essential that the repository name matches the name of your Unreal project file.

  2. Once the repository is created, run the following command to push the project to your repository. The name of the repository needs to match the .uproject name. You can also copy and paste the repository url from github.com

git remote add origin https://github.com/[Personal or organization space]/[YourProject].git
git branch -M main
git push -u origin main

Step 2: Adding the YOM SDK to the project

To incorporate the necessary SDK into your project, follow these steps:

  • Navigate to your root project folder and create a new folder called "Plugins". This folder will serve as the container for the required plugins.

  • Obtain the YOM UE5 SDK for your Unreal Engine version from the link. If you don't have access, ask your YOM contact person.

  • This will trigger a download of a ZIP file. The ZIP file will contain three plugins. Extract the zip file.

  • Copy and paste these plugins into the "Plugins" folder you created in your project directory. Ensure that the plugins are directly placed inside the "Plugins" folder and not within any additional subfolders.

Result

By following the steps outlined above, you should now have a folder structure resembling the following (assuming "MyFirstExperience" is the name of your project and the root of your Git repository):

- YourProject
  - Plugins
    - YOM Replicator SDK
    - GltfRuntime
    - VaRest

Additional considerations for team members accessing the project with the plugin: If other team members need to retrieve the project with the plugin and the binaries are not included in the Git repository, there are a few options available:

  1. Let them download the plugin separately and override it in their project structure. This can be achieved by following Step 2 mentioned earlier. After downloading the plugin, team members can replace the corresponding plugin folders in their project with the new ones. You can then revert the changes made to your changelist since only the binaries are necessary.

  2. Although not recommended, you can push the binaries to Git. However, this approach may lead to larger repository sizes and potential conflicts. It's generally advisable to avoid pushing binaries to the repository unless necessary.

Adding other plugins

If you have additional plugins you want to include in your project, they should also be placed in the "Plugins" folder. Normally, Unreal Engine automatically downloads and installs plugins from the marketplace into the Unreal Engine folder. However, this process does not occur on our build pipeline. Instead, you can obtain the desired plugin by locating it in the plugins directory of the engine you intend to use. The screenshot shows an example path where you can these plugins can be found for an example installation of Unreal Engine 5.0.3:

To add the plugin to your project:

  1. Copy the desired plugin folder from the Unreal Engine plugins folder.

  2. Paste that plugin folder into the "Plugins" folder within your project.

  3. Open your Unreal project to verify that the plugin works correctly and functions as intended.

Check if everything looks good!

Before proceeding, it's advised to perform some local checks to ensure everything is in order:

  1. Confirm that all the necessary plugins are present in the "Plugins" folder. Disable any tooling plugins that are not required for the build, (for exampled "Project Cleaner").

  2. Verify that the right map has been selected.

  3. Ensure that the git project and Unreal project have the same name to prevent any naming conflicts.

  4. Double-check that you have uploaded all the necessary files to GitHub, ensuring that all required assets and code are included.

  5. push the changes to the remote repository

git add .
git commit -m "Added YOM SDK"
git push origin main
  1. Lastly, exit the unreal editor and open the project again by double clicking on the .uproject file.

Last updated