SlideShare a Scribd company logo
Unreal Engine Basics
Chapter 2: Unreal Editor
Nick Prühs
Objectives
• Getting familiar with the Unreal Level Editor
• Learning how to bind and handle player keyboard and mouse input
• Understanding character movement properties and functions
Unreal Levels
Unreal Levels
In Unreal, a Level is defined as a collection of Actors.
The default level contains seven of them:
• Atmospheric Fog: Provides a realistic sense of atmosphere, air density, and light
scattering.
• Floor: A simple static mesh actor.
• Light Source: Directional light that simulates light that is being emitted from a
source that is infinitely far away (e.g. the sun).
• Player Start: Location in the game world that the player can start from.
• Sky Sphere: Background used to make the level look bigger.
• SkyLight: Captures the distant parts of your level and applies that to the scene as a
light.
• SphereReflectionCapture: Captures the scene for reflection in a sphere shape.
Unreal Levels
Starting the game will spawn eleven more actors:
• CameraActor: Camera viewpoint that can be placed in a level.
• DefaultPawn: Simple Pawn with spherical collision and built-in flying movement.
• GameNetworkManager: Handles game-specific networking management (cheat
detection, bandwidth management, etc.).
• GameSession: Game-specific wrapper around the session interface (e.g. for
matchmaking).
• HUD: Allows rendering text, textures, rectangles and materials.
• ParticleEventManager: Allows handling spawn, collision and death of particles.
• PlayerCameraManager: Responsible for managing the camera for a particular
player.
• GameModeBase, GameStateBase, PlayerController, PlayerState
Asset Naming Conventions
For the same reasons we agreed on coding conventions earlier, it makes
sense to think about your project folder structure:
• Maps
• Characters
• Effects
• Environment
• Gameplay
• Sound
• UI
Asset Naming Conventions
For the same reasons we agreed on coding conventions earlier, it makes sense to think
about your asset names:
(Prefix_)AssetName(_Number)
with prefixes such as:
• BP_ for blueprints
• SK_ for skeletal meshes
• SM_ for static meshes
• M_ for materials
• T_ for textures
Blueprints
• Complete node-based gameplay scripting system
• Typed variables, functions, execution flow
• Extend C++ base classes
 Thus, blueprint actors can be spawned, ticked, destroyed, etc.
• Allow for very fast iteration times
Hint!
By convention, maps don’t use the default underscore (_) asset naming
scheme.
Instead, they are using a combination of game mode shorthand, dash (-)
and map name, e.g.
DM-Deck
Putting it all together
To tell Unreal Engine which game framework classes to use, you need
to…
 Specify your desired game mode in the World Settings of a map
 Specify your other desired classes in your game mode (blueprint)
Hint!
If you don’t happen to have any assets at hand, the
AnimationStarter Pack
from the Unreal Marketplace is a great place to start.
Binding Input
First, we need to define the actions and axes we want to use, in the Input
Settings of our project (saved to Config/DefaultInput.ini).
Binding Input
Then, we need to override APlayerController::SetupInputComponent to
bind our input to C++ functions:
void AASPlayerController::SetupInputComponent()
{
Super::SetupInputComponent();
if (!IsValid(InputComponent))
{
return;
}
InputComponent->BindAxis(TEXT("MoveForward"), this, & AASPlayerController ::InputMoveForward);
}
Binding Input
Finally, we can apply input as character movement:
void AASPlayerController ::InputMoveForward(float AxisValue)
{
// Early out if we haven't got a valid pawn.
if (!IsValid(GetPawn()))
{
return;
}
// Scale movement by input axis value.
FVector Forward = GetPawn()->GetActorForwardVector();
// Apply input.
GetPawn()->AddMovementInput(Forward, AxisValue);
}
Binding Input
In order for our camera to follow our turns, we need to have it use our
control rotation:
Hint!
You can change the
Editor StartupMap
of your project in the project settings.
Binding Input Actions
Just as we‘ve been binding functions to an input axis, we can bind
functions to one-shot input actions:
void AASPlayerController::SetupInputComponent()
{
Super::SetupInputComponent();
if (!IsValid(InputComponent))
{
return;
}
// ...
InputComponent->BindAction(TEXT("Jump"), IE_Pressed, this, &AASPlayerController::InputJump);
}
Character Movement Properties
You can change various other properties at the
CharacterMovementComponent as well, e.g.:
• Max Walk Speed
• Jump Z Velocity (affects jump height)
Setting Up Logging
1. Declare your log category in your module header file:
2. Define your log category in your module .cpp file:
3. Make sure you‘ve included your module header file.
4. Log wherever you want to:
DECLARE_LOG_CATEGORY_EXTERN(LogAS, Log, All);
DEFINE_LOG_CATEGORY(LogAS);
UE_LOG(LogAS, Log, TEXT("This is some nice log output!"));
Unreal Log Categories
Category Summary
Fatal Always prints a error (even if logging is disabled).
Error Prints an error.
Warning Prints a warning.
Log Prints a message.
Verbose Prints a verbose message (if enabled for the given category).
VeryVerbose Prints a verbose message (if enabled for the given category).
Log Formatting
The UE_LOG macro supports formatting, just as in other languages and
frameworks:
FStrings require the indirection operator (*) to be applied for logging:
UE_LOG(LogAS, Log, TEXT("OnHealthChanged - OldHealth: %f, NewHealth: %f"),
OldHealth, NewHealth);
UE_LOG(LogAS, Log, TEXT("OnHealthChanged - Character: %s"), *GetName());
Blueprint Libraries
Unreal Engine exposes many C++ functions to blueprints, some of which
can be very useful for gameplay programming as well, e.g.:
• Kismet/GameplayStatics.h
• Kismet/KismetMathLibrary.h
(Kismet was the name of visual scripting in Unreal Engine3.)
We’ll learn how to do that ourselves in a minute.
Assignment #2 – Character Movement
1. Add blueprints for your code game framework classes.
2. Create a map and setup your world settings and game mode.
3. Make your character move forward, back, left and right.
4. Allow your player to look around.
5. Make your character jump.
References
• Epic Games. Assets Naming Convention.
https://wiki.unrealengine.com/Assets_Naming_Convention, February
2020.
• Epic Games. Introduction to Blueprints.
https://docs.unrealengine.com/en-
US/Engine/Blueprints/GettingStarted/index.html, February 2020.
• Epic Games. Basic Scripting. https://docs.unrealengine.com/en-
US/Engine/Blueprints/Scripting/index.html, February 2020.
• Epic Games. Setting Up Character Movement in Blueprints.
https://docs.unrealengine.com/en-
US/Gameplay/HowTo/CharacterMovement/Blueprints/index.html,
Feburary 2020.
See you next time!
https://www.slideshare.net/npruehs
https://github.com/npruehs/teaching-
unreal-engine/releases/tag/assignment02
npruehs@outlook.com
5 Minute Review Session
• Where do players spawn in Unreal levels?
• How do you tell Unreal which game framework classes to use?
• Where do you define input axis mappings?
• What is the difference between axis and action mappings?
• How do you bind input?

More Related Content

What's hot

Gdc 14 bringing unreal engine 4 to open_gl
Gdc 14 bringing unreal engine 4 to open_glGdc 14 bringing unreal engine 4 to open_gl
Gdc 14 bringing unreal engine 4 to open_gl
changehee lee
 
What Is A Game Engine
What Is A Game EngineWhat Is A Game Engine
What Is A Game Engine
Seth Sivak
 
AAA게임_UI_최적화_및_빌드하기.pptx
AAA게임_UI_최적화_및_빌드하기.pptxAAA게임_UI_최적화_및_빌드하기.pptx
AAA게임_UI_최적화_및_빌드하기.pptx
TonyCms
 
고대특강 게임 프로그래머의 소양
고대특강   게임 프로그래머의 소양고대특강   게임 프로그래머의 소양
고대특강 게임 프로그래머의 소양Jubok Kim
 
The Basics of Unity - The Game Engine
The Basics of Unity - The Game EngineThe Basics of Unity - The Game Engine
The Basics of Unity - The Game Engine
OrisysIndia
 
GDC 2014 - Deformable Snow Rendering in Batman: Arkham Origins
GDC 2014 - Deformable Snow Rendering in Batman: Arkham OriginsGDC 2014 - Deformable Snow Rendering in Batman: Arkham Origins
GDC 2014 - Deformable Snow Rendering in Batman: Arkham Origins
Colin Barré-Brisebois
 
Unity - Game Engine
Unity - Game EngineUnity - Game Engine
Unity - Game Engine
Geeks Anonymes
 
게임 디렉팅 튜토리얼
게임 디렉팅 튜토리얼게임 디렉팅 튜토리얼
게임 디렉팅 튜토리얼
Lee Sangkyoon (Kay)
 
레벨 디자인의 구성
레벨 디자인의 구성레벨 디자인의 구성
레벨 디자인의 구성
준태 김
 
Tips and experience of DX12 Engine development .
Tips and experience of DX12 Engine development .Tips and experience of DX12 Engine development .
Tips and experience of DX12 Engine development .
YEONG-CHEON YOU
 
이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012devCAT Studio, NEXON
 
Introduction to Unity3D Game Engine
Introduction to Unity3D Game EngineIntroduction to Unity3D Game Engine
Introduction to Unity3D Game Engine
Mohsen Mirhoseini
 
Screen space reflection
Screen space reflectionScreen space reflection
Screen space reflection
Bongseok Cho
 
The Android graphics path, in depth
The Android graphics path, in depthThe Android graphics path, in depth
The Android graphics path, in depth
Chris Simmonds
 
Unity 3d Basics
Unity 3d BasicsUnity 3d Basics
Unity 3d Basics
Chaudhry Talha Waseem
 
Google flutter and why does it matter
Google flutter and why does it matterGoogle flutter and why does it matter
Google flutter and why does it matter
Ahmed Abu Eldahab
 
Game Engine Overview
Game Engine OverviewGame Engine Overview
Game Engine Overview
Sharad Mitra
 
Scene Graphs & Component Based Game Engines
Scene Graphs & Component Based Game EnginesScene Graphs & Component Based Game Engines
Scene Graphs & Component Based Game Engines
Bryan Duggan
 
HoloLensハンズオン:ハンドトラッキング&音声入力編
HoloLensハンズオン:ハンドトラッキング&音声入力編HoloLensハンズオン:ハンドトラッキング&音声入力編
HoloLensハンズオン:ハンドトラッキング&音声入力編
Takashi Yoshinaga
 
191221 unreal engine 4 editor 확장하기
191221 unreal engine 4 editor 확장하기191221 unreal engine 4 editor 확장하기
191221 unreal engine 4 editor 확장하기
KWANGIL KIM
 

What's hot (20)

Gdc 14 bringing unreal engine 4 to open_gl
Gdc 14 bringing unreal engine 4 to open_glGdc 14 bringing unreal engine 4 to open_gl
Gdc 14 bringing unreal engine 4 to open_gl
 
What Is A Game Engine
What Is A Game EngineWhat Is A Game Engine
What Is A Game Engine
 
AAA게임_UI_최적화_및_빌드하기.pptx
AAA게임_UI_최적화_및_빌드하기.pptxAAA게임_UI_최적화_및_빌드하기.pptx
AAA게임_UI_최적화_및_빌드하기.pptx
 
고대특강 게임 프로그래머의 소양
고대특강   게임 프로그래머의 소양고대특강   게임 프로그래머의 소양
고대특강 게임 프로그래머의 소양
 
The Basics of Unity - The Game Engine
The Basics of Unity - The Game EngineThe Basics of Unity - The Game Engine
The Basics of Unity - The Game Engine
 
GDC 2014 - Deformable Snow Rendering in Batman: Arkham Origins
GDC 2014 - Deformable Snow Rendering in Batman: Arkham OriginsGDC 2014 - Deformable Snow Rendering in Batman: Arkham Origins
GDC 2014 - Deformable Snow Rendering in Batman: Arkham Origins
 
Unity - Game Engine
Unity - Game EngineUnity - Game Engine
Unity - Game Engine
 
게임 디렉팅 튜토리얼
게임 디렉팅 튜토리얼게임 디렉팅 튜토리얼
게임 디렉팅 튜토리얼
 
레벨 디자인의 구성
레벨 디자인의 구성레벨 디자인의 구성
레벨 디자인의 구성
 
Tips and experience of DX12 Engine development .
Tips and experience of DX12 Engine development .Tips and experience of DX12 Engine development .
Tips and experience of DX12 Engine development .
 
이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012
 
Introduction to Unity3D Game Engine
Introduction to Unity3D Game EngineIntroduction to Unity3D Game Engine
Introduction to Unity3D Game Engine
 
Screen space reflection
Screen space reflectionScreen space reflection
Screen space reflection
 
The Android graphics path, in depth
The Android graphics path, in depthThe Android graphics path, in depth
The Android graphics path, in depth
 
Unity 3d Basics
Unity 3d BasicsUnity 3d Basics
Unity 3d Basics
 
Google flutter and why does it matter
Google flutter and why does it matterGoogle flutter and why does it matter
Google flutter and why does it matter
 
Game Engine Overview
Game Engine OverviewGame Engine Overview
Game Engine Overview
 
Scene Graphs & Component Based Game Engines
Scene Graphs & Component Based Game EnginesScene Graphs & Component Based Game Engines
Scene Graphs & Component Based Game Engines
 
HoloLensハンズオン:ハンドトラッキング&音声入力編
HoloLensハンズオン:ハンドトラッキング&音声入力編HoloLensハンズオン:ハンドトラッキング&音声入力編
HoloLensハンズオン:ハンドトラッキング&音声入力編
 
191221 unreal engine 4 editor 확장하기
191221 unreal engine 4 editor 확장하기191221 unreal engine 4 editor 확장하기
191221 unreal engine 4 editor 확장하기
 

Similar to Unreal Engine Basics 02 - Unreal Editor

Unity3d scripting tutorial
Unity3d scripting tutorialUnity3d scripting tutorial
Unity3d scripting tutorial
hungnttg
 
Ember.js Tokyo event 2014/09/22 (English)
Ember.js Tokyo event 2014/09/22 (English)Ember.js Tokyo event 2014/09/22 (English)
Ember.js Tokyo event 2014/09/22 (English)
Yuki Shimada
 
Introduction to Coding
Introduction to CodingIntroduction to Coding
Introduction to Coding
Fabio506452
 
Silverlight as a Gaming Platform
Silverlight as a Gaming PlatformSilverlight as a Gaming Platform
Silverlight as a Gaming Platform
goodfriday
 
Sephy engine development document
Sephy engine development documentSephy engine development document
Sephy engine development document
Jaejun Kim
 
libGDX: Scene2D
libGDX: Scene2DlibGDX: Scene2D
libGDX: Scene2D
Jussi Pohjolainen
 
Initial design (Game Architecture)
Initial design (Game Architecture)Initial design (Game Architecture)
Initial design (Game Architecture)
Rajkumar Pawar
 
Introduction to html5 game programming with impact js
Introduction to html5 game programming with impact jsIntroduction to html5 game programming with impact js
Introduction to html5 game programming with impact js
Luca Galli
 
Cocos2d 소개 - Korea Linux Forum 2014
Cocos2d 소개 - Korea Linux Forum 2014Cocos2d 소개 - Korea Linux Forum 2014
Cocos2d 소개 - Korea Linux Forum 2014
Changwon National University
 
Cocos2d programming
Cocos2d programmingCocos2d programming
Cocos2d programming
Changwon National University
 
Gdc09 Minigames
Gdc09 MinigamesGdc09 Minigames
Gdc09 Minigames
Susan Gold
 
Parallel Futures of a Game Engine
Parallel Futures of a Game EngineParallel Futures of a Game Engine
Parallel Futures of a Game Engine
Johan Andersson
 
Galactic Wars XNA Game
Galactic Wars XNA GameGalactic Wars XNA Game
Galactic Wars XNA Game
Sohil Gupta
 
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)
Johan Andersson
 
Rotoscope inthebrowserppt billy
Rotoscope inthebrowserppt billyRotoscope inthebrowserppt billy
Rotoscope inthebrowserppt billy
nimbleltd
 
Unity workshop
Unity workshopUnity workshop
Unity workshop
fsxflyer789Productio
 
98 374 Lesson 06-slides
98 374 Lesson 06-slides98 374 Lesson 06-slides
98 374 Lesson 06-slides
Tracie King
 
Enterprise Tic-Tac-Toe
Enterprise Tic-Tac-ToeEnterprise Tic-Tac-Toe
Enterprise Tic-Tac-Toe
Scott Wlaschin
 
OpenGL ES based UI Development on TI Platforms
OpenGL ES based UI Development on TI PlatformsOpenGL ES based UI Development on TI Platforms
OpenGL ES based UI Development on TI Platforms
Prabindh Sundareson
 
Introduction to the Unreal Development Kit
Introduction to the Unreal Development KitIntroduction to the Unreal Development Kit
Introduction to the Unreal Development Kit
Nick Pruehs
 

Similar to Unreal Engine Basics 02 - Unreal Editor (20)

Unity3d scripting tutorial
Unity3d scripting tutorialUnity3d scripting tutorial
Unity3d scripting tutorial
 
Ember.js Tokyo event 2014/09/22 (English)
Ember.js Tokyo event 2014/09/22 (English)Ember.js Tokyo event 2014/09/22 (English)
Ember.js Tokyo event 2014/09/22 (English)
 
Introduction to Coding
Introduction to CodingIntroduction to Coding
Introduction to Coding
 
Silverlight as a Gaming Platform
Silverlight as a Gaming PlatformSilverlight as a Gaming Platform
Silverlight as a Gaming Platform
 
Sephy engine development document
Sephy engine development documentSephy engine development document
Sephy engine development document
 
libGDX: Scene2D
libGDX: Scene2DlibGDX: Scene2D
libGDX: Scene2D
 
Initial design (Game Architecture)
Initial design (Game Architecture)Initial design (Game Architecture)
Initial design (Game Architecture)
 
Introduction to html5 game programming with impact js
Introduction to html5 game programming with impact jsIntroduction to html5 game programming with impact js
Introduction to html5 game programming with impact js
 
Cocos2d 소개 - Korea Linux Forum 2014
Cocos2d 소개 - Korea Linux Forum 2014Cocos2d 소개 - Korea Linux Forum 2014
Cocos2d 소개 - Korea Linux Forum 2014
 
Cocos2d programming
Cocos2d programmingCocos2d programming
Cocos2d programming
 
Gdc09 Minigames
Gdc09 MinigamesGdc09 Minigames
Gdc09 Minigames
 
Parallel Futures of a Game Engine
Parallel Futures of a Game EngineParallel Futures of a Game Engine
Parallel Futures of a Game Engine
 
Galactic Wars XNA Game
Galactic Wars XNA GameGalactic Wars XNA Game
Galactic Wars XNA Game
 
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)
Parallel Graphics in Frostbite - Current & Future (Siggraph 2009)
 
Rotoscope inthebrowserppt billy
Rotoscope inthebrowserppt billyRotoscope inthebrowserppt billy
Rotoscope inthebrowserppt billy
 
Unity workshop
Unity workshopUnity workshop
Unity workshop
 
98 374 Lesson 06-slides
98 374 Lesson 06-slides98 374 Lesson 06-slides
98 374 Lesson 06-slides
 
Enterprise Tic-Tac-Toe
Enterprise Tic-Tac-ToeEnterprise Tic-Tac-Toe
Enterprise Tic-Tac-Toe
 
OpenGL ES based UI Development on TI Platforms
OpenGL ES based UI Development on TI PlatformsOpenGL ES based UI Development on TI Platforms
OpenGL ES based UI Development on TI Platforms
 
Introduction to the Unreal Development Kit
Introduction to the Unreal Development KitIntroduction to the Unreal Development Kit
Introduction to the Unreal Development Kit
 

More from Nick Pruehs

Unreal Engine Basics 06 - Animation, Audio, Visual Effects
Unreal Engine Basics 06 - Animation, Audio, Visual EffectsUnreal Engine Basics 06 - Animation, Audio, Visual Effects
Unreal Engine Basics 06 - Animation, Audio, Visual Effects
Nick Pruehs
 
Game Programming - Cloud Development
Game Programming - Cloud DevelopmentGame Programming - Cloud Development
Game Programming - Cloud Development
Nick Pruehs
 
Game Programming - Git
Game Programming - GitGame Programming - Git
Game Programming - Git
Nick Pruehs
 
Eight Rules for Making Your First Great Game
Eight Rules for Making Your First Great GameEight Rules for Making Your First Great Game
Eight Rules for Making Your First Great Game
Nick Pruehs
 
Designing an actor model game architecture with Pony
Designing an actor model game architecture with PonyDesigning an actor model game architecture with Pony
Designing an actor model game architecture with Pony
Nick Pruehs
 
Game Programming 13 - Debugging & Performance Optimization
Game Programming 13 - Debugging & Performance OptimizationGame Programming 13 - Debugging & Performance Optimization
Game Programming 13 - Debugging & Performance Optimization
Nick Pruehs
 
Scrum - but... Agile Game Development in Small Teams
Scrum - but... Agile Game Development in Small TeamsScrum - but... Agile Game Development in Small Teams
Scrum - but... Agile Game Development in Small Teams
Nick Pruehs
 
Component-Based Entity Systems (Demo)
Component-Based Entity Systems (Demo)Component-Based Entity Systems (Demo)
Component-Based Entity Systems (Demo)
Nick Pruehs
 
What Would Blizzard Do
What Would Blizzard DoWhat Would Blizzard Do
What Would Blizzard Do
Nick Pruehs
 
School For Games 2015 - Unity Engine Basics
School For Games 2015 - Unity Engine BasicsSchool For Games 2015 - Unity Engine Basics
School For Games 2015 - Unity Engine Basics
Nick Pruehs
 
Tool Development A - Git
Tool Development A - GitTool Development A - Git
Tool Development A - Git
Nick Pruehs
 
Game Programming 12 - Shaders
Game Programming 12 - ShadersGame Programming 12 - Shaders
Game Programming 12 - Shaders
Nick Pruehs
 
Game Programming 11 - Game Physics
Game Programming 11 - Game PhysicsGame Programming 11 - Game Physics
Game Programming 11 - Game Physics
Nick Pruehs
 
Game Programming 10 - Localization
Game Programming 10 - LocalizationGame Programming 10 - Localization
Game Programming 10 - Localization
Nick Pruehs
 
Game Programming 09 - AI
Game Programming 09 - AIGame Programming 09 - AI
Game Programming 09 - AI
Nick Pruehs
 
Game Development Challenges
Game Development ChallengesGame Development Challenges
Game Development Challenges
Nick Pruehs
 
Game Programming 08 - Tool Development
Game Programming 08 - Tool DevelopmentGame Programming 08 - Tool Development
Game Programming 08 - Tool Development
Nick Pruehs
 
Game Programming 07 - Procedural Content Generation
Game Programming 07 - Procedural Content GenerationGame Programming 07 - Procedural Content Generation
Game Programming 07 - Procedural Content Generation
Nick Pruehs
 
Game Programming 06 - Automated Testing
Game Programming 06 - Automated TestingGame Programming 06 - Automated Testing
Game Programming 06 - Automated Testing
Nick Pruehs
 
Game Programming 05 - Development Tools
Game Programming 05 - Development ToolsGame Programming 05 - Development Tools
Game Programming 05 - Development Tools
Nick Pruehs
 

More from Nick Pruehs (20)

Unreal Engine Basics 06 - Animation, Audio, Visual Effects
Unreal Engine Basics 06 - Animation, Audio, Visual EffectsUnreal Engine Basics 06 - Animation, Audio, Visual Effects
Unreal Engine Basics 06 - Animation, Audio, Visual Effects
 
Game Programming - Cloud Development
Game Programming - Cloud DevelopmentGame Programming - Cloud Development
Game Programming - Cloud Development
 
Game Programming - Git
Game Programming - GitGame Programming - Git
Game Programming - Git
 
Eight Rules for Making Your First Great Game
Eight Rules for Making Your First Great GameEight Rules for Making Your First Great Game
Eight Rules for Making Your First Great Game
 
Designing an actor model game architecture with Pony
Designing an actor model game architecture with PonyDesigning an actor model game architecture with Pony
Designing an actor model game architecture with Pony
 
Game Programming 13 - Debugging & Performance Optimization
Game Programming 13 - Debugging & Performance OptimizationGame Programming 13 - Debugging & Performance Optimization
Game Programming 13 - Debugging & Performance Optimization
 
Scrum - but... Agile Game Development in Small Teams
Scrum - but... Agile Game Development in Small TeamsScrum - but... Agile Game Development in Small Teams
Scrum - but... Agile Game Development in Small Teams
 
Component-Based Entity Systems (Demo)
Component-Based Entity Systems (Demo)Component-Based Entity Systems (Demo)
Component-Based Entity Systems (Demo)
 
What Would Blizzard Do
What Would Blizzard DoWhat Would Blizzard Do
What Would Blizzard Do
 
School For Games 2015 - Unity Engine Basics
School For Games 2015 - Unity Engine BasicsSchool For Games 2015 - Unity Engine Basics
School For Games 2015 - Unity Engine Basics
 
Tool Development A - Git
Tool Development A - GitTool Development A - Git
Tool Development A - Git
 
Game Programming 12 - Shaders
Game Programming 12 - ShadersGame Programming 12 - Shaders
Game Programming 12 - Shaders
 
Game Programming 11 - Game Physics
Game Programming 11 - Game PhysicsGame Programming 11 - Game Physics
Game Programming 11 - Game Physics
 
Game Programming 10 - Localization
Game Programming 10 - LocalizationGame Programming 10 - Localization
Game Programming 10 - Localization
 
Game Programming 09 - AI
Game Programming 09 - AIGame Programming 09 - AI
Game Programming 09 - AI
 
Game Development Challenges
Game Development ChallengesGame Development Challenges
Game Development Challenges
 
Game Programming 08 - Tool Development
Game Programming 08 - Tool DevelopmentGame Programming 08 - Tool Development
Game Programming 08 - Tool Development
 
Game Programming 07 - Procedural Content Generation
Game Programming 07 - Procedural Content GenerationGame Programming 07 - Procedural Content Generation
Game Programming 07 - Procedural Content Generation
 
Game Programming 06 - Automated Testing
Game Programming 06 - Automated TestingGame Programming 06 - Automated Testing
Game Programming 06 - Automated Testing
 
Game Programming 05 - Development Tools
Game Programming 05 - Development ToolsGame Programming 05 - Development Tools
Game Programming 05 - Development Tools
 

Recently uploaded

"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
Fwdays
 
AppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSFAppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSF
Ajin Abraham
 
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge GraphGraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
Neo4j
 
Dandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity serverDandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity server
Antonios Katsarakis
 
Christine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptxChristine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptx
christinelarrosa
 
GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)
Javier Junquera
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
DanBrown980551
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
Jason Packer
 
Must Know Postgres Extension for DBA and Developer during Migration
Must Know Postgres Extension for DBA and Developer during MigrationMust Know Postgres Extension for DBA and Developer during Migration
Must Know Postgres Extension for DBA and Developer during Migration
Mydbops
 
Session 1 - Intro to Robotic Process Automation.pdf
Session 1 - Intro to Robotic Process Automation.pdfSession 1 - Intro to Robotic Process Automation.pdf
Session 1 - Intro to Robotic Process Automation.pdf
UiPathCommunity
 
Essentials of Automations: Exploring Attributes & Automation Parameters
Essentials of Automations: Exploring Attributes & Automation ParametersEssentials of Automations: Exploring Attributes & Automation Parameters
Essentials of Automations: Exploring Attributes & Automation Parameters
Safe Software
 
Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving
 
Northern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
Northern Engraving | Modern Metal Trim, Nameplates and Appliance PanelsNorthern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
Northern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
Northern Engraving
 
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-EfficiencyFreshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
ScyllaDB
 
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
"Scaling RAG Applications to serve millions of users",  Kevin Goedecke"Scaling RAG Applications to serve millions of users",  Kevin Goedecke
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
Fwdays
 
What is an RPA CoE? Session 1 – CoE Vision
What is an RPA CoE?  Session 1 – CoE VisionWhat is an RPA CoE?  Session 1 – CoE Vision
What is an RPA CoE? Session 1 – CoE Vision
DianaGray10
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
Chart Kalyan
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
Jakub Marek
 
Demystifying Knowledge Management through Storytelling
Demystifying Knowledge Management through StorytellingDemystifying Knowledge Management through Storytelling
Demystifying Knowledge Management through Storytelling
Enterprise Knowledge
 
Mutation Testing for Task-Oriented Chatbots
Mutation Testing for Task-Oriented ChatbotsMutation Testing for Task-Oriented Chatbots
Mutation Testing for Task-Oriented Chatbots
Pablo Gómez Abajo
 

Recently uploaded (20)

"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
 
AppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSFAppSec PNW: Android and iOS Application Security with MobSF
AppSec PNW: Android and iOS Application Security with MobSF
 
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge GraphGraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
GraphRAG for LifeSciences Hands-On with the Clinical Knowledge Graph
 
Dandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity serverDandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity server
 
Christine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptxChristine's Product Research Presentation.pptx
Christine's Product Research Presentation.pptx
 
GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)
 
5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides5th LF Energy Power Grid Model Meet-up Slides
5th LF Energy Power Grid Model Meet-up Slides
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
 
Must Know Postgres Extension for DBA and Developer during Migration
Must Know Postgres Extension for DBA and Developer during MigrationMust Know Postgres Extension for DBA and Developer during Migration
Must Know Postgres Extension for DBA and Developer during Migration
 
Session 1 - Intro to Robotic Process Automation.pdf
Session 1 - Intro to Robotic Process Automation.pdfSession 1 - Intro to Robotic Process Automation.pdf
Session 1 - Intro to Robotic Process Automation.pdf
 
Essentials of Automations: Exploring Attributes & Automation Parameters
Essentials of Automations: Exploring Attributes & Automation ParametersEssentials of Automations: Exploring Attributes & Automation Parameters
Essentials of Automations: Exploring Attributes & Automation Parameters
 
Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024Northern Engraving | Nameplate Manufacturing Process - 2024
Northern Engraving | Nameplate Manufacturing Process - 2024
 
Northern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
Northern Engraving | Modern Metal Trim, Nameplates and Appliance PanelsNorthern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
Northern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
 
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-EfficiencyFreshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
Freshworks Rethinks NoSQL for Rapid Scaling & Cost-Efficiency
 
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
"Scaling RAG Applications to serve millions of users",  Kevin Goedecke"Scaling RAG Applications to serve millions of users",  Kevin Goedecke
"Scaling RAG Applications to serve millions of users", Kevin Goedecke
 
What is an RPA CoE? Session 1 – CoE Vision
What is an RPA CoE?  Session 1 – CoE VisionWhat is an RPA CoE?  Session 1 – CoE Vision
What is an RPA CoE? Session 1 – CoE Vision
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
 
Demystifying Knowledge Management through Storytelling
Demystifying Knowledge Management through StorytellingDemystifying Knowledge Management through Storytelling
Demystifying Knowledge Management through Storytelling
 
Mutation Testing for Task-Oriented Chatbots
Mutation Testing for Task-Oriented ChatbotsMutation Testing for Task-Oriented Chatbots
Mutation Testing for Task-Oriented Chatbots
 

Unreal Engine Basics 02 - Unreal Editor

  • 1. Unreal Engine Basics Chapter 2: Unreal Editor Nick Prühs
  • 2. Objectives • Getting familiar with the Unreal Level Editor • Learning how to bind and handle player keyboard and mouse input • Understanding character movement properties and functions
  • 4. Unreal Levels In Unreal, a Level is defined as a collection of Actors. The default level contains seven of them: • Atmospheric Fog: Provides a realistic sense of atmosphere, air density, and light scattering. • Floor: A simple static mesh actor. • Light Source: Directional light that simulates light that is being emitted from a source that is infinitely far away (e.g. the sun). • Player Start: Location in the game world that the player can start from. • Sky Sphere: Background used to make the level look bigger. • SkyLight: Captures the distant parts of your level and applies that to the scene as a light. • SphereReflectionCapture: Captures the scene for reflection in a sphere shape.
  • 5. Unreal Levels Starting the game will spawn eleven more actors: • CameraActor: Camera viewpoint that can be placed in a level. • DefaultPawn: Simple Pawn with spherical collision and built-in flying movement. • GameNetworkManager: Handles game-specific networking management (cheat detection, bandwidth management, etc.). • GameSession: Game-specific wrapper around the session interface (e.g. for matchmaking). • HUD: Allows rendering text, textures, rectangles and materials. • ParticleEventManager: Allows handling spawn, collision and death of particles. • PlayerCameraManager: Responsible for managing the camera for a particular player. • GameModeBase, GameStateBase, PlayerController, PlayerState
  • 6. Asset Naming Conventions For the same reasons we agreed on coding conventions earlier, it makes sense to think about your project folder structure: • Maps • Characters • Effects • Environment • Gameplay • Sound • UI
  • 7. Asset Naming Conventions For the same reasons we agreed on coding conventions earlier, it makes sense to think about your asset names: (Prefix_)AssetName(_Number) with prefixes such as: • BP_ for blueprints • SK_ for skeletal meshes • SM_ for static meshes • M_ for materials • T_ for textures
  • 8. Blueprints • Complete node-based gameplay scripting system • Typed variables, functions, execution flow • Extend C++ base classes  Thus, blueprint actors can be spawned, ticked, destroyed, etc. • Allow for very fast iteration times
  • 9. Hint! By convention, maps don’t use the default underscore (_) asset naming scheme. Instead, they are using a combination of game mode shorthand, dash (-) and map name, e.g. DM-Deck
  • 10. Putting it all together To tell Unreal Engine which game framework classes to use, you need to…  Specify your desired game mode in the World Settings of a map  Specify your other desired classes in your game mode (blueprint)
  • 11. Hint! If you don’t happen to have any assets at hand, the AnimationStarter Pack from the Unreal Marketplace is a great place to start.
  • 12. Binding Input First, we need to define the actions and axes we want to use, in the Input Settings of our project (saved to Config/DefaultInput.ini).
  • 13. Binding Input Then, we need to override APlayerController::SetupInputComponent to bind our input to C++ functions: void AASPlayerController::SetupInputComponent() { Super::SetupInputComponent(); if (!IsValid(InputComponent)) { return; } InputComponent->BindAxis(TEXT("MoveForward"), this, & AASPlayerController ::InputMoveForward); }
  • 14. Binding Input Finally, we can apply input as character movement: void AASPlayerController ::InputMoveForward(float AxisValue) { // Early out if we haven't got a valid pawn. if (!IsValid(GetPawn())) { return; } // Scale movement by input axis value. FVector Forward = GetPawn()->GetActorForwardVector(); // Apply input. GetPawn()->AddMovementInput(Forward, AxisValue); }
  • 15. Binding Input In order for our camera to follow our turns, we need to have it use our control rotation:
  • 16. Hint! You can change the Editor StartupMap of your project in the project settings.
  • 17. Binding Input Actions Just as we‘ve been binding functions to an input axis, we can bind functions to one-shot input actions: void AASPlayerController::SetupInputComponent() { Super::SetupInputComponent(); if (!IsValid(InputComponent)) { return; } // ... InputComponent->BindAction(TEXT("Jump"), IE_Pressed, this, &AASPlayerController::InputJump); }
  • 18. Character Movement Properties You can change various other properties at the CharacterMovementComponent as well, e.g.: • Max Walk Speed • Jump Z Velocity (affects jump height)
  • 19. Setting Up Logging 1. Declare your log category in your module header file: 2. Define your log category in your module .cpp file: 3. Make sure you‘ve included your module header file. 4. Log wherever you want to: DECLARE_LOG_CATEGORY_EXTERN(LogAS, Log, All); DEFINE_LOG_CATEGORY(LogAS); UE_LOG(LogAS, Log, TEXT("This is some nice log output!"));
  • 20. Unreal Log Categories Category Summary Fatal Always prints a error (even if logging is disabled). Error Prints an error. Warning Prints a warning. Log Prints a message. Verbose Prints a verbose message (if enabled for the given category). VeryVerbose Prints a verbose message (if enabled for the given category).
  • 21. Log Formatting The UE_LOG macro supports formatting, just as in other languages and frameworks: FStrings require the indirection operator (*) to be applied for logging: UE_LOG(LogAS, Log, TEXT("OnHealthChanged - OldHealth: %f, NewHealth: %f"), OldHealth, NewHealth); UE_LOG(LogAS, Log, TEXT("OnHealthChanged - Character: %s"), *GetName());
  • 22. Blueprint Libraries Unreal Engine exposes many C++ functions to blueprints, some of which can be very useful for gameplay programming as well, e.g.: • Kismet/GameplayStatics.h • Kismet/KismetMathLibrary.h (Kismet was the name of visual scripting in Unreal Engine3.) We’ll learn how to do that ourselves in a minute.
  • 23. Assignment #2 – Character Movement 1. Add blueprints for your code game framework classes. 2. Create a map and setup your world settings and game mode. 3. Make your character move forward, back, left and right. 4. Allow your player to look around. 5. Make your character jump.
  • 24. References • Epic Games. Assets Naming Convention. https://wiki.unrealengine.com/Assets_Naming_Convention, February 2020. • Epic Games. Introduction to Blueprints. https://docs.unrealengine.com/en- US/Engine/Blueprints/GettingStarted/index.html, February 2020. • Epic Games. Basic Scripting. https://docs.unrealengine.com/en- US/Engine/Blueprints/Scripting/index.html, February 2020. • Epic Games. Setting Up Character Movement in Blueprints. https://docs.unrealengine.com/en- US/Gameplay/HowTo/CharacterMovement/Blueprints/index.html, Feburary 2020.
  • 25. See you next time! https://www.slideshare.net/npruehs https://github.com/npruehs/teaching- unreal-engine/releases/tag/assignment02 npruehs@outlook.com
  • 26. 5 Minute Review Session • Where do players spawn in Unreal levels? • How do you tell Unreal which game framework classes to use? • Where do you define input axis mappings? • What is the difference between axis and action mappings? • How do you bind input?