SlideShare a Scribd company logo
1 of 20
Engine Overview
A Programmer’s Glimpse at UE4
Gerke Max Preussner
max.preussner@epicgames.com
The Big Picture
Overview
Directories
Configuration
Modules
Projects
What’s Next?
This Is Not Your Grandma’s Engine
• UE4 is pretty hot… but also huge!
• 5000+ directories, 40,000+ files
• Bazillions of lines of code
• Hundreds of modules
• Dozens of tools, thousands of features
• Centuries of man years
How To Master All This?
• Start with toes, work your way up
• Most code & content you’ll never touch
• Nobody knows everything about UE4
• But you’ll see, it’s really quite easy!
The Big Picture
Overview
Directories
Configuration
Modules
Projects
What’s Next?
Root Directory
• /Engine – All code, content & configuration for the Engine
• /MyProject – All files for the game project ‘MyProject’
• /Templates – Templates for creating new projects
Inside the /Engine and /MyProject Directories
• /Binaries – Executables & DLLs for the Engine
• /Build – Files needed for building the Engine
• /Config – Configuration files
• /Content – Shared Engine content
• /DerivedDataCache – Cached content data files (Engine only)
• /Intermediate – Temporary build products (Engine only)
• /Plugins – Shared and project specific plug-ins
• /Saved – Autosaves, local configs, screenshots, etc.
• /Source – Source code for all the things!
The Big Picture
Overview
Directories
Configuration
Modules
Projects
What’s Next?
INI Files
• Hold class default properties
• Will be loaded into CDOs on startup
• Organized in a hierarchy
• Higher INIs override lower ones
• Organized in sections
• Key-value pairs within sections
• Important ones exposed in Editor UI
• Low-level access with FConfig
The Big Picture
Overview
Directories
Configuration
Modules
Projects
What’s Next?
INI Files
• Hold class default properties
• Will be loaded into CDOs on startup
• Organized in a hierarchy
• Higher INIs override lower ones
• Organized in sections
• Key-value pairs within sections
• Important ones exposed in Editor UI
• Low-level access with FConfig
Class Constructor
BaseXXX.ini
DefaultXXX.ini
XXX.ini
Editor & Project Settings
Sections for UObjects
• [/Script/ModuleName.ClassName]
Sections for Custom Settings
• [SectionName]
Supported Value Types
• Numeric values, strings, enums
• Structured data
• Static and dynamic arrays
Automatic serialization for UObject properties
The Big Picture
Overview
Directories
Configuration
Modules
Projects
What’s Next?
Modularity Promotes
• Reusability
• Extensibility
• Maintainability
• Decoupling
• Efficiency
Monolithic builds are
still possible though!
The Big Picture
Overview
Directories
Configuration
Modules
Projects
What’s Next?
Module Types
• Developer – Used by Editor & Programs, not Games
• Editor – Used by Unreal Editor only
• Runtime – Used by Editor, Games & Programs
• ThirdParty – External code from other companies
• Plugins – Extensions for Editor, Games, or both
• Programs – Standalone applications & tools
Module Dependency Rules
• Runtime modules must not have dependencies to Editor or
Developer modules
• Plug-in modules must not have dependencies to other plug-ins
The Big Picture
Overview
Directories
Configuration
Modules
Projects
What’s Next?
Module Type
UnrealEd App Game
Runtime √ √ √
ThirdParty √ √ √
Plugins √ √ √
Developer √ √ X
Editor √ X X
Module usage across different types of applications
The Big Picture
Overview
Directories
Configuration
Modules
Projects
What’s Next?
Important Modules for Beginners
• Core – Fundamental core types & functions
• CoreUObject – Implements the UObject sub-system
• Engine – Game classes & engine framework
• OnlineSubsystem – Online & social networking features
• Slate – Widget library & high-level UI features
The Big Picture
Overview
Directories
Configuration
Modules
Projects
What’s Next?
Interesting Modules for Advanced Programmers
• DesktopPlatform – Useful APIs for Windows, Mac & Linux
• DetailCustomizations – Editor’s Details panel customizations
• Launch – Main loop classes & functions
• Messaging – Message passing sub-system
• Sockets – Network socket implementations
• Settings – Editor & Project Settings API
• SlateCore – Fundamental UI functionality
• TargetPlatform – Platform abstraction layer
• UMG – Unreal Motion Graphics implementation
• UnrealEd – Unreal Editor main frame & features
The Big Picture
Overview
Directories
Configuration
Modules
Projects
What’s Next?
Interesting Modules for Cool Features
• Analytics – Collects usage statistics from Editor & games
• AssetRegistry – Database for assets in Unreal Editor
• GameLiveStreaming – Twitch Streaming
• HeadMountedDisplay – HMD Support API (Oculus, etc.)
• JsonUtilities & XmlParser – Handle Json & XML files
• SourceControl – API for custom source control providers
The Big Picture
Overview
Directories
Configuration
Modules
Projects
What’s Next?
Your Game Projects can…
• Use Blueprints, C++ Code or both
• Contain any number of modules & plug-ins
• Be moved around and shared with others
Project Templates to Get You Started
• Blank (with or without sample content)
• First Person Shooter
• Side scroller, top-down & puzzle games
• Flying & driving games
• They all come in Blueprint and C++ flavors
• More to come, and make your own!
Project Templates & Samples
Project Packaging & Deployment
Overview
Directories
Configuration
Modules
Projects
What’s Next?
Y U No Use C++11??!?!
Actually, we do
• override, final, nullptr keywords
• auto (automatic type deduction)
• range based for-loops
• Lambdas and anonymous functions
• Strongly typed enumerations
• Move semantics
What about the rest?
• XboxOne SDK is still on VS2012
Overview
Directories
Configuration
Modules
Projects
What’s Next?
Questions?
Documentation, Tutorials and Help at:
• AnswerHub:
• Engine Documentation:
• Official Forums:
• Community Wiki:
• YouTube Videos:
• Community IRC:
Unreal Engine 4 Roadmap
• lmgtfy.com/?q=Unreal+engine+Trello+
http://answers.unrealengine.com
http://docs.unrealengine.com
http://forums.unrealengine.com
http://wiki.unrealengine.com
http://www.youtube.com/user/UnrealDevelopmentKit
#unrealengine on FreeNode

More Related Content

What's hot

East Coast DevCon 2014: Programming in UE4 - A Quick Orientation for Coders
East Coast DevCon 2014: Programming in UE4 - A Quick Orientation for CodersEast Coast DevCon 2014: Programming in UE4 - A Quick Orientation for Coders
East Coast DevCon 2014: Programming in UE4 - A Quick Orientation for CodersGerke Max Preussner
 
West Coast DevCon 2014: Extensibility in UE4 - Customizing Your Games and the...
West Coast DevCon 2014: Extensibility in UE4 - Customizing Your Games and the...West Coast DevCon 2014: Extensibility in UE4 - Customizing Your Games and the...
West Coast DevCon 2014: Extensibility in UE4 - Customizing Your Games and the...Gerke Max Preussner
 
West Coast DevCon 2014: Programming in UE4 - A Quick Orientation for Coders
West Coast DevCon 2014: Programming in UE4 - A Quick Orientation for CodersWest Coast DevCon 2014: Programming in UE4 - A Quick Orientation for Coders
West Coast DevCon 2014: Programming in UE4 - A Quick Orientation for CodersGerke Max Preussner
 
GDCE 2015: Blueprint Components to C++
GDCE 2015: Blueprint Components to C++GDCE 2015: Blueprint Components to C++
GDCE 2015: Blueprint Components to C++Gerke Max Preussner
 
FMX 2017: Extending Unreal Engine 4 with Plug-ins (Master Class)
FMX 2017: Extending Unreal Engine 4 with Plug-ins (Master Class)FMX 2017: Extending Unreal Engine 4 with Plug-ins (Master Class)
FMX 2017: Extending Unreal Engine 4 with Plug-ins (Master Class)Gerke Max Preussner
 
GDC Europe 2014: Unreal Engine 4 for Programmers - Lessons Learned & Things t...
GDC Europe 2014: Unreal Engine 4 for Programmers - Lessons Learned & Things t...GDC Europe 2014: Unreal Engine 4 for Programmers - Lessons Learned & Things t...
GDC Europe 2014: Unreal Engine 4 for Programmers - Lessons Learned & Things t...Gerke Max Preussner
 
West Coast DevCon 2014: Game Programming in UE4 - Game Framework & Sample Pro...
West Coast DevCon 2014: Game Programming in UE4 - Game Framework & Sample Pro...West Coast DevCon 2014: Game Programming in UE4 - Game Framework & Sample Pro...
West Coast DevCon 2014: Game Programming in UE4 - Game Framework & Sample Pro...Gerke Max Preussner
 
West Coast DevCon 2014: The Slate UI Framework (Part 2) - Game UI & Unreal Mo...
West Coast DevCon 2014: The Slate UI Framework (Part 2) - Game UI & Unreal Mo...West Coast DevCon 2014: The Slate UI Framework (Part 2) - Game UI & Unreal Mo...
West Coast DevCon 2014: The Slate UI Framework (Part 2) - Game UI & Unreal Mo...Gerke Max Preussner
 
East Coast DevCon 2014: The Slate UI Framework - Architecture & Tools
East Coast DevCon 2014: The Slate UI Framework - Architecture & ToolsEast Coast DevCon 2014: The Slate UI Framework - Architecture & Tools
East Coast DevCon 2014: The Slate UI Framework - Architecture & ToolsGerke Max Preussner
 
From Unity3D to Unreal Engine 4
From Unity3D to Unreal Engine 4From Unity3D to Unreal Engine 4
From Unity3D to Unreal Engine 4Martin Pernica
 
Unreal Engine 4 Introduction
Unreal Engine 4 IntroductionUnreal Engine 4 Introduction
Unreal Engine 4 IntroductionSperasoft
 
Endless runner game in unreal engine 4
Endless runner game in unreal engine 4Endless runner game in unreal engine 4
Endless runner game in unreal engine 4Vasilis Kamakaris
 
Course 102: Lecture 1: Course Overview
Course 102: Lecture 1: Course Overview Course 102: Lecture 1: Course Overview
Course 102: Lecture 1: Course Overview Ahmed El-Arabawy
 
Game Programming - Cloud Development
Game Programming - Cloud DevelopmentGame Programming - Cloud Development
Game Programming - Cloud DevelopmentNick Pruehs
 
【Unite 2017 Tokyo】Unity最適化講座 ~スペシャリストが教えるメモリとCPU使用率の負担最小化テクニック~
【Unite 2017 Tokyo】Unity最適化講座 ~スペシャリストが教えるメモリとCPU使用率の負担最小化テクニック~【Unite 2017 Tokyo】Unity最適化講座 ~スペシャリストが教えるメモリとCPU使用率の負担最小化テクニック~
【Unite 2017 Tokyo】Unity最適化講座 ~スペシャリストが教えるメモリとCPU使用率の負担最小化テクニック~Unity Technologies Japan K.K.
 
.NET MeetUp Prague 2017 - Challenges of Managing CoreFX repo -- Karel Zikmund
.NET MeetUp Prague 2017 - Challenges of Managing CoreFX repo -- Karel Zikmund.NET MeetUp Prague 2017 - Challenges of Managing CoreFX repo -- Karel Zikmund
.NET MeetUp Prague 2017 - Challenges of Managing CoreFX repo -- Karel ZikmundKarel Zikmund
 
.NET Fringe 2017 - Challenges of Managing CoreFX repo -- Karel Zikmund
.NET Fringe 2017 - Challenges of Managing CoreFX repo -- Karel Zikmund.NET Fringe 2017 - Challenges of Managing CoreFX repo -- Karel Zikmund
.NET Fringe 2017 - Challenges of Managing CoreFX repo -- Karel ZikmundKarel Zikmund
 
.NET MeetUp Prague 2017 - .NET Standard -- Karel Zikmund
.NET MeetUp Prague 2017 - .NET Standard -- Karel Zikmund.NET MeetUp Prague 2017 - .NET Standard -- Karel Zikmund
.NET MeetUp Prague 2017 - .NET Standard -- Karel ZikmundKarel Zikmund
 
Joe Damato
Joe DamatoJoe Damato
Joe DamatoOntico
 

What's hot (20)

East Coast DevCon 2014: Programming in UE4 - A Quick Orientation for Coders
East Coast DevCon 2014: Programming in UE4 - A Quick Orientation for CodersEast Coast DevCon 2014: Programming in UE4 - A Quick Orientation for Coders
East Coast DevCon 2014: Programming in UE4 - A Quick Orientation for Coders
 
West Coast DevCon 2014: Extensibility in UE4 - Customizing Your Games and the...
West Coast DevCon 2014: Extensibility in UE4 - Customizing Your Games and the...West Coast DevCon 2014: Extensibility in UE4 - Customizing Your Games and the...
West Coast DevCon 2014: Extensibility in UE4 - Customizing Your Games and the...
 
West Coast DevCon 2014: Programming in UE4 - A Quick Orientation for Coders
West Coast DevCon 2014: Programming in UE4 - A Quick Orientation for CodersWest Coast DevCon 2014: Programming in UE4 - A Quick Orientation for Coders
West Coast DevCon 2014: Programming in UE4 - A Quick Orientation for Coders
 
GDCE 2015: Blueprint Components to C++
GDCE 2015: Blueprint Components to C++GDCE 2015: Blueprint Components to C++
GDCE 2015: Blueprint Components to C++
 
FMX 2017: Extending Unreal Engine 4 with Plug-ins (Master Class)
FMX 2017: Extending Unreal Engine 4 with Plug-ins (Master Class)FMX 2017: Extending Unreal Engine 4 with Plug-ins (Master Class)
FMX 2017: Extending Unreal Engine 4 with Plug-ins (Master Class)
 
GDC Europe 2014: Unreal Engine 4 for Programmers - Lessons Learned & Things t...
GDC Europe 2014: Unreal Engine 4 for Programmers - Lessons Learned & Things t...GDC Europe 2014: Unreal Engine 4 for Programmers - Lessons Learned & Things t...
GDC Europe 2014: Unreal Engine 4 for Programmers - Lessons Learned & Things t...
 
West Coast DevCon 2014: Game Programming in UE4 - Game Framework & Sample Pro...
West Coast DevCon 2014: Game Programming in UE4 - Game Framework & Sample Pro...West Coast DevCon 2014: Game Programming in UE4 - Game Framework & Sample Pro...
West Coast DevCon 2014: Game Programming in UE4 - Game Framework & Sample Pro...
 
West Coast DevCon 2014: The Slate UI Framework (Part 2) - Game UI & Unreal Mo...
West Coast DevCon 2014: The Slate UI Framework (Part 2) - Game UI & Unreal Mo...West Coast DevCon 2014: The Slate UI Framework (Part 2) - Game UI & Unreal Mo...
West Coast DevCon 2014: The Slate UI Framework (Part 2) - Game UI & Unreal Mo...
 
East Coast DevCon 2014: The Slate UI Framework - Architecture & Tools
East Coast DevCon 2014: The Slate UI Framework - Architecture & ToolsEast Coast DevCon 2014: The Slate UI Framework - Architecture & Tools
East Coast DevCon 2014: The Slate UI Framework - Architecture & Tools
 
From Unity3D to Unreal Engine 4
From Unity3D to Unreal Engine 4From Unity3D to Unreal Engine 4
From Unity3D to Unreal Engine 4
 
Unreal Engine 4 Introduction
Unreal Engine 4 IntroductionUnreal Engine 4 Introduction
Unreal Engine 4 Introduction
 
Endless runner game in unreal engine 4
Endless runner game in unreal engine 4Endless runner game in unreal engine 4
Endless runner game in unreal engine 4
 
Course 102: Lecture 1: Course Overview
Course 102: Lecture 1: Course Overview Course 102: Lecture 1: Course Overview
Course 102: Lecture 1: Course Overview
 
Game Programming - Cloud Development
Game Programming - Cloud DevelopmentGame Programming - Cloud Development
Game Programming - Cloud Development
 
XNA L01–Introduction
XNA L01–IntroductionXNA L01–Introduction
XNA L01–Introduction
 
【Unite 2017 Tokyo】Unity最適化講座 ~スペシャリストが教えるメモリとCPU使用率の負担最小化テクニック~
【Unite 2017 Tokyo】Unity最適化講座 ~スペシャリストが教えるメモリとCPU使用率の負担最小化テクニック~【Unite 2017 Tokyo】Unity最適化講座 ~スペシャリストが教えるメモリとCPU使用率の負担最小化テクニック~
【Unite 2017 Tokyo】Unity最適化講座 ~スペシャリストが教えるメモリとCPU使用率の負担最小化テクニック~
 
.NET MeetUp Prague 2017 - Challenges of Managing CoreFX repo -- Karel Zikmund
.NET MeetUp Prague 2017 - Challenges of Managing CoreFX repo -- Karel Zikmund.NET MeetUp Prague 2017 - Challenges of Managing CoreFX repo -- Karel Zikmund
.NET MeetUp Prague 2017 - Challenges of Managing CoreFX repo -- Karel Zikmund
 
.NET Fringe 2017 - Challenges of Managing CoreFX repo -- Karel Zikmund
.NET Fringe 2017 - Challenges of Managing CoreFX repo -- Karel Zikmund.NET Fringe 2017 - Challenges of Managing CoreFX repo -- Karel Zikmund
.NET Fringe 2017 - Challenges of Managing CoreFX repo -- Karel Zikmund
 
.NET MeetUp Prague 2017 - .NET Standard -- Karel Zikmund
.NET MeetUp Prague 2017 - .NET Standard -- Karel Zikmund.NET MeetUp Prague 2017 - .NET Standard -- Karel Zikmund
.NET MeetUp Prague 2017 - .NET Standard -- Karel Zikmund
 
Joe Damato
Joe DamatoJoe Damato
Joe Damato
 

Similar to East Coast DevCon 2014: Engine Overview - A Programmer’s Glimpse at UE4

Innovations in Sencha Tooling and Framework
Innovations in Sencha Tooling and FrameworkInnovations in Sencha Tooling and Framework
Innovations in Sencha Tooling and FrameworkSandeep Adwankar
 
Modular PHP Development using CodeIgniter Bonfire
Modular PHP Development using CodeIgniter BonfireModular PHP Development using CodeIgniter Bonfire
Modular PHP Development using CodeIgniter BonfireJeff Fox
 
Visual studio 2012 - What's in it for me?
Visual studio 2012 - What's in it for me?Visual studio 2012 - What's in it for me?
Visual studio 2012 - What's in it for me?Jeff Bramwell
 
Android application development
Android application developmentAndroid application development
Android application developmentLinh Vi Tường
 
8. Software Development Security
8. Software Development Security8. Software Development Security
8. Software Development SecuritySam Bowne
 
8. Software Development Security
8. Software Development Security8. Software Development Security
8. Software Development SecuritySam Bowne
 
COMMitMDE'18: Eclipse Hawk: model repository querying as a service
COMMitMDE'18: Eclipse Hawk: model repository querying as a serviceCOMMitMDE'18: Eclipse Hawk: model repository querying as a service
COMMitMDE'18: Eclipse Hawk: model repository querying as a serviceAntonio García-Domínguez
 
Dot net Online Training | .Net Training and Placement online
Dot net Online Training | .Net Training and Placement onlineDot net Online Training | .Net Training and Placement online
Dot net Online Training | .Net Training and Placement onlineGaruda Trainings
 
Ch1Ch2Sept10.pdf
Ch1Ch2Sept10.pdfCh1Ch2Sept10.pdf
Ch1Ch2Sept10.pdfSamSami69
 
CISSP Prep: Ch 9. Software Development Security
CISSP Prep: Ch 9. Software Development SecurityCISSP Prep: Ch 9. Software Development Security
CISSP Prep: Ch 9. Software Development SecuritySam Bowne
 
Entity Framework Core 1.0
Entity Framework Core 1.0Entity Framework Core 1.0
Entity Framework Core 1.0Senthil Kumar
 
Shift Remote: AI: Behind the scenes development in an AI company - Matija Ili...
Shift Remote: AI: Behind the scenes development in an AI company - Matija Ili...Shift Remote: AI: Behind the scenes development in an AI company - Matija Ili...
Shift Remote: AI: Behind the scenes development in an AI company - Matija Ili...Shift Conference
 
Shift Remote AI: Behind the Scenes Development in an AI Company - Matija Ilij...
Shift Remote AI: Behind the Scenes Development in an AI Company - Matija Ilij...Shift Remote AI: Behind the Scenes Development in an AI Company - Matija Ilij...
Shift Remote AI: Behind the Scenes Development in an AI Company - Matija Ilij...Shift Conference
 
Tokyo Azure Meetup #4 - Build 2016 Overview
Tokyo Azure Meetup #4 -  Build 2016 OverviewTokyo Azure Meetup #4 -  Build 2016 Overview
Tokyo Azure Meetup #4 - Build 2016 OverviewTokyo Azure Meetup
 
Domain Specific Development using T4
Domain Specific Development using T4Domain Specific Development using T4
Domain Specific Development using T4Joubin Najmaie
 
What's New in Innoslate 4.2?
What's New in Innoslate 4.2?What's New in Innoslate 4.2?
What's New in Innoslate 4.2?Elizabeth Steiner
 
Hpc lunch and learn
Hpc lunch and learnHpc lunch and learn
Hpc lunch and learnJohn D Almon
 

Similar to East Coast DevCon 2014: Engine Overview - A Programmer’s Glimpse at UE4 (20)

Innovations in Sencha Tooling and Framework
Innovations in Sencha Tooling and FrameworkInnovations in Sencha Tooling and Framework
Innovations in Sencha Tooling and Framework
 
Modular PHP Development using CodeIgniter Bonfire
Modular PHP Development using CodeIgniter BonfireModular PHP Development using CodeIgniter Bonfire
Modular PHP Development using CodeIgniter Bonfire
 
Visual studio 2012 - What's in it for me?
Visual studio 2012 - What's in it for me?Visual studio 2012 - What's in it for me?
Visual studio 2012 - What's in it for me?
 
Android application development
Android application developmentAndroid application development
Android application development
 
8. Software Development Security
8. Software Development Security8. Software Development Security
8. Software Development Security
 
8. Software Development Security
8. Software Development Security8. Software Development Security
8. Software Development Security
 
COMMitMDE'18: Eclipse Hawk: model repository querying as a service
COMMitMDE'18: Eclipse Hawk: model repository querying as a serviceCOMMitMDE'18: Eclipse Hawk: model repository querying as a service
COMMitMDE'18: Eclipse Hawk: model repository querying as a service
 
Dot net Online Training | .Net Training and Placement online
Dot net Online Training | .Net Training and Placement onlineDot net Online Training | .Net Training and Placement online
Dot net Online Training | .Net Training and Placement online
 
Ch1Ch2Sept10.pdf
Ch1Ch2Sept10.pdfCh1Ch2Sept10.pdf
Ch1Ch2Sept10.pdf
 
CISSP Prep: Ch 9. Software Development Security
CISSP Prep: Ch 9. Software Development SecurityCISSP Prep: Ch 9. Software Development Security
CISSP Prep: Ch 9. Software Development Security
 
Entity Framework Core 1.0
Entity Framework Core 1.0Entity Framework Core 1.0
Entity Framework Core 1.0
 
Shift Remote: AI: Behind the scenes development in an AI company - Matija Ili...
Shift Remote: AI: Behind the scenes development in an AI company - Matija Ili...Shift Remote: AI: Behind the scenes development in an AI company - Matija Ili...
Shift Remote: AI: Behind the scenes development in an AI company - Matija Ili...
 
Shift Remote AI: Behind the Scenes Development in an AI Company - Matija Ilij...
Shift Remote AI: Behind the Scenes Development in an AI Company - Matija Ilij...Shift Remote AI: Behind the Scenes Development in an AI Company - Matija Ilij...
Shift Remote AI: Behind the Scenes Development in an AI Company - Matija Ilij...
 
Module development
Module developmentModule development
Module development
 
Logic appsforbeginners
Logic appsforbeginnersLogic appsforbeginners
Logic appsforbeginners
 
Tokyo Azure Meetup #4 - Build 2016 Overview
Tokyo Azure Meetup #4 -  Build 2016 OverviewTokyo Azure Meetup #4 -  Build 2016 Overview
Tokyo Azure Meetup #4 - Build 2016 Overview
 
Domain Specific Development using T4
Domain Specific Development using T4Domain Specific Development using T4
Domain Specific Development using T4
 
What's New in Innoslate 4.2?
What's New in Innoslate 4.2?What's New in Innoslate 4.2?
What's New in Innoslate 4.2?
 
Hpc lunch and learn
Hpc lunch and learnHpc lunch and learn
Hpc lunch and learn
 
David buksbaum a-briefintroductiontocsharp
David buksbaum a-briefintroductiontocsharpDavid buksbaum a-briefintroductiontocsharp
David buksbaum a-briefintroductiontocsharp
 

East Coast DevCon 2014: Engine Overview - A Programmer’s Glimpse at UE4

  • 1. Engine Overview A Programmer’s Glimpse at UE4 Gerke Max Preussner max.preussner@epicgames.com
  • 2. The Big Picture Overview Directories Configuration Modules Projects What’s Next? This Is Not Your Grandma’s Engine • UE4 is pretty hot… but also huge! • 5000+ directories, 40,000+ files • Bazillions of lines of code • Hundreds of modules • Dozens of tools, thousands of features • Centuries of man years How To Master All This? • Start with toes, work your way up • Most code & content you’ll never touch • Nobody knows everything about UE4 • But you’ll see, it’s really quite easy!
  • 3. The Big Picture Overview Directories Configuration Modules Projects What’s Next? Root Directory • /Engine – All code, content & configuration for the Engine • /MyProject – All files for the game project ‘MyProject’ • /Templates – Templates for creating new projects Inside the /Engine and /MyProject Directories • /Binaries – Executables & DLLs for the Engine • /Build – Files needed for building the Engine • /Config – Configuration files • /Content – Shared Engine content • /DerivedDataCache – Cached content data files (Engine only) • /Intermediate – Temporary build products (Engine only) • /Plugins – Shared and project specific plug-ins • /Saved – Autosaves, local configs, screenshots, etc. • /Source – Source code for all the things!
  • 4. The Big Picture Overview Directories Configuration Modules Projects What’s Next? INI Files • Hold class default properties • Will be loaded into CDOs on startup • Organized in a hierarchy • Higher INIs override lower ones • Organized in sections • Key-value pairs within sections • Important ones exposed in Editor UI • Low-level access with FConfig
  • 5. The Big Picture Overview Directories Configuration Modules Projects What’s Next? INI Files • Hold class default properties • Will be loaded into CDOs on startup • Organized in a hierarchy • Higher INIs override lower ones • Organized in sections • Key-value pairs within sections • Important ones exposed in Editor UI • Low-level access with FConfig Class Constructor BaseXXX.ini DefaultXXX.ini XXX.ini
  • 6. Editor & Project Settings
  • 7. Sections for UObjects • [/Script/ModuleName.ClassName] Sections for Custom Settings • [SectionName] Supported Value Types • Numeric values, strings, enums • Structured data • Static and dynamic arrays Automatic serialization for UObject properties
  • 8.
  • 9. The Big Picture Overview Directories Configuration Modules Projects What’s Next? Modularity Promotes • Reusability • Extensibility • Maintainability • Decoupling • Efficiency Monolithic builds are still possible though!
  • 10. The Big Picture Overview Directories Configuration Modules Projects What’s Next? Module Types • Developer – Used by Editor & Programs, not Games • Editor – Used by Unreal Editor only • Runtime – Used by Editor, Games & Programs • ThirdParty – External code from other companies • Plugins – Extensions for Editor, Games, or both • Programs – Standalone applications & tools Module Dependency Rules • Runtime modules must not have dependencies to Editor or Developer modules • Plug-in modules must not have dependencies to other plug-ins
  • 11. The Big Picture Overview Directories Configuration Modules Projects What’s Next? Module Type UnrealEd App Game Runtime √ √ √ ThirdParty √ √ √ Plugins √ √ √ Developer √ √ X Editor √ X X Module usage across different types of applications
  • 12. The Big Picture Overview Directories Configuration Modules Projects What’s Next? Important Modules for Beginners • Core – Fundamental core types & functions • CoreUObject – Implements the UObject sub-system • Engine – Game classes & engine framework • OnlineSubsystem – Online & social networking features • Slate – Widget library & high-level UI features
  • 13. The Big Picture Overview Directories Configuration Modules Projects What’s Next? Interesting Modules for Advanced Programmers • DesktopPlatform – Useful APIs for Windows, Mac & Linux • DetailCustomizations – Editor’s Details panel customizations • Launch – Main loop classes & functions • Messaging – Message passing sub-system • Sockets – Network socket implementations • Settings – Editor & Project Settings API • SlateCore – Fundamental UI functionality • TargetPlatform – Platform abstraction layer • UMG – Unreal Motion Graphics implementation • UnrealEd – Unreal Editor main frame & features
  • 14. The Big Picture Overview Directories Configuration Modules Projects What’s Next? Interesting Modules for Cool Features • Analytics – Collects usage statistics from Editor & games • AssetRegistry – Database for assets in Unreal Editor • GameLiveStreaming – Twitch Streaming • HeadMountedDisplay – HMD Support API (Oculus, etc.) • JsonUtilities & XmlParser – Handle Json & XML files • SourceControl – API for custom source control providers
  • 15. The Big Picture Overview Directories Configuration Modules Projects What’s Next? Your Game Projects can… • Use Blueprints, C++ Code or both • Contain any number of modules & plug-ins • Be moved around and shared with others Project Templates to Get You Started • Blank (with or without sample content) • First Person Shooter • Side scroller, top-down & puzzle games • Flying & driving games • They all come in Blueprint and C++ flavors • More to come, and make your own!
  • 17. Project Packaging & Deployment
  • 18. Overview Directories Configuration Modules Projects What’s Next? Y U No Use C++11??!?! Actually, we do • override, final, nullptr keywords • auto (automatic type deduction) • range based for-loops • Lambdas and anonymous functions • Strongly typed enumerations • Move semantics What about the rest? • XboxOne SDK is still on VS2012
  • 20. Questions? Documentation, Tutorials and Help at: • AnswerHub: • Engine Documentation: • Official Forums: • Community Wiki: • YouTube Videos: • Community IRC: Unreal Engine 4 Roadmap • lmgtfy.com/?q=Unreal+engine+Trello+ http://answers.unrealengine.com http://docs.unrealengine.com http://forums.unrealengine.com http://wiki.unrealengine.com http://www.youtube.com/user/UnrealDevelopmentKit #unrealengine on FreeNode

Editor's Notes

  1. Prepared and presented by Gerke Max Preussner for East Coast MiniDevCon 2014, November 12-13th Email max.preussner@epicgames.com in case of comments, questions or suggestions or visit our AnswerHub at http://answers.unrealengine.com
  2. Unreal Engine has been developed over a period of over 20 years and contains code and content from hundreds of developers. The result is an unprecedented feature set for game development, but also a lot of things to learn. Despite the large number of components and concepts, you should find it relatively easy to get started. We have put a lot of effort into hierarchically organizing everything, so that the Engine as a whole is really just a big collection of simple parts.
  3. The very first things you will encounter after downloading Unreal Engine 4 are the various directories on your hard drive. Most of the files are located within the Engine directory, which contains everything needed to make and run games. Over time, you will add your own directories, one for each project you are creating.
  4. After looking at a few sample projects and perhaps creating your own first project, you may wonder how the Engine knows what to load and what to do. The answer to this are configuration files – we call them INIs. Many systems, such as the Engine, the Editor and games have their own so called INI file stack.
  5. There is not just one INI file, but multiple ones that are stacked hierarchically.
  6. In previous versions of Unreal Engine, users had to modify INI files quite frequently. This was tedious and error prone. In Unreal Engine 4 we are making a big push to expose all the important settings directly in the Editor. We hope that, in the future, users will no longer have to edit INI files directly.
  7. For some very advanced settings you may still have to edit the INI files directly. It cannot hurt to familiarize yourself with the syntax. Here you can see a portion of the BaseGame.ini file. The different types of sections and key-value pairs are easily recognized.
  8. Take a look at the GameSession class in this example. Note that the C++ declaration of the class (right picture) is marked up with special attribute macros. These macros cause our build tool to generate magic glue code that will add INI file support to the corresponding properties. These properties can now be assigned in the INI file and will be automatically initialized when an instance of this object is created.
  9. In previous versions of Unreal Engine all code was split into a small number of DLLs. Each DLL had a large number of responsibilities, which lead to a lot of very tightly coupled code that was difficult to maintain and extend. For Unreal Engine 4 we have rewritten large parts of the code base from scratch and reorganized it into hundreds of modules, each of which has one particular purpose. Modules are still compiled into DLLs, but they can also still be compiled into one large monolithic binary. The important point is that the code base is now much more organized and easier to use.
  10. We split our modules into various categories. Modules that are used by the Engine can be found in the Runtime directory. Modules that are used to build the Editor can be found in the Editor directory. We also have some standalone programs, which share their modules with the Editor. Those modules are located in the Developer directory. One important convention to remember is that Runtime modules must not have any dependencies to Developer or Editor modules.
  11. Like I said, there are now hundreds of modules in the code base, but you only need to know a few of them. When you first begin programming with Unreal Engine, you will frequently use features from Core, CoreUObject, Engine and Slate. Nearly all other modules in the code base are built on top of one or more of these.
  12. Once you are more familiar with programming games and tools for Unreal Engine, you may also be interested in other more advanced modules. Most of the remaining modules in the code base implement features for Unreal Editor. You can use them as a learning resource for implementing your own plug-ins and applications.
  13. There are also several modules that will make it easier for you to add cool new features to the Editor or your game. We recently added the GameLiveStreaming module, which allows your users to stream their game play to Twitch. There is also a module for 3D Head Mounted Display support – the Oculus plug-in uses it to add Oculus support to the Engine. There are also various utility modules, such as Json and XML helpers.
  14. All these modules are used in the Engine, the Editor and our tools. However, you will actually spend most of your time in your own projects. Projects are really easy to create in Unreal Engine 4. We provide a number of both Blueprint and C++ project samples for various types of games. More templates will be added over time, and you can even add your own.
  15. Here you can see the project template browser and the sample project browser.
  16. When your project is ready for testing, you can cook, package and deploy it. Cooking is the process of optimizing your game’s content for the desired target platforms. Packaging will arrange all content files and binaries in a way that is best for the target device, usually a .pak file. Deployment is the process of getting your packaged files onto the device. Cooking and packaging each time is very time consuming. We recommend that you use the Quick Launch feature instead, which utilizes Cook-On-The-Fly.
  17. UE4 recently started to use C++11 language features that are well supported on all platforms that the Engine runs on. Most notably, we are gradually replacing our OVERRIDE, FINAL and NULL macros. For the time being, you will still see both the old macros and the new keywords being used in parallel. We are also in the process of replacing static local functions with lambdas, and namespaced enums with enum classes. We can’t use all of the modern language features yet, because the XboxOne SDK still requires Visual Studio 2012.
  18. Of course, this short presentation is not even remotely enough to introduce you to all the components of the Engine. We have prepared a number of other talks for today that will provide more detail on various topics.
  19. Make sure to check out our extensive documentation on the internet!