SlideShare ist ein Scribd-Unternehmen logo
1 von 63
Downloaden Sie, um offline zu lesen
Introduction to the Unreal
Development Kit (UDK)
Nick Prühs
October 23, 2013
About Me
“Best Bachelor“ Computer Science
Kiel University, 2009
Master Games
Hamburg University of Applied Sciences, 2011
Lead Programmer
Daedalic Entertainment, 2011-2012

Co-Founder
slash games, 2013

2 / 58
Features
• complete editing environment
• pure rendering power (Gemini)
• state-of-the-art animation
(Mantinee)

• powerful scripting (Kismet)
• real worlds physics
• eye-popping lighting and shadows (Lightmass)
Features (Cont.)
• gorgeous cinematics (Mantinee)
• terrain
• built-in networking
• real-time shaders
• broad audio support
• particle effects (Cascade)
Features (Cont.)
• artificial intelligence
• distributed computing (Swarm)
• descructible environments
• Bink video codec
• SpeedTree foliage editor
• FaceFX facial animation
• Scaleform 4.0 UI
Platforms
Platforms
Platforms
Integrated Partners
Licensing
• non-commercial use:
• free!

• commercial use:
• USD 99 up-front
• 0% royalty on first USD 50,000 in UDK related revenue
• 25% royalty on UDK related revenue above USD 50,000
Useful Stuff
• UT Source Code
• UDK Forums
• Showcases
• UDK Programming Home
• UDK Gems
• UnrealScript Language Reference
Working With The UDK
• UDK vs. Licensees
• monthly releases
• Feb 12: Recast
• May 12: RealD 3D
• Feb 13: Substance

• Visual Studio 2010 & nFringe
• UnrealEd & UnrealFrontend
• Content Packages
Unreal Engine Basics
• Core
• C++
• Rendering, Sound, GameLoop, Collision, Physics,
Threading, Low Level Network

• Virtual Machine
• runs in core
• executes UnrealScript
Unreal Engine Basics (Cont.)
• UnrealScript
• similar to C++ and Java
• high-level object-oriented language
• pointerless environment with automatic garbage
collection
• simple single-inheritance class graph
• strong compile-time type checking
• safe client-side execution "sandbox"
Class Hierarchy
UnrealScript Features
• instantiation
• Actor.Spawn(class<Actor>) vs. new

• timers
• Actor.SetTimer(float, bool, name)

• iterators
• Actor.AllActors
• Actor.DynamicActors
• Actor.CollidingActors
UnrealScript Features (Cont.)
• states
state Dead
{
ignores SeePlayer, HearNoise, KilledBy, NextWeapon, PrevWeapon;
function bool IsDead()
{
return true;
}
// ...
}

Source: PlayerController.uc
UnrealScript Features (Cont.)
• exec functions
.Bindings=(Name="MouseScrollDown",Command="GBA_NextWeapon")

Source: DefaultInput.ini
UnrealScript Features (Cont.)
• exec functions
.Bindings=(Name="MouseScrollDown",Command="GBA_NextWeapon")

Source: DefaultInput.ini
exec function NextWeapon()
{
if ( WorldInfo.Pauser!=None )
return;
if ( Pawn.Weapon == None )
{
SwitchToBestWeapon();
return;
}
if ( Pawn.InvManager != None )
Pawn.InvManager.NextWeapon();
}

Source: PlayerController.uc
UnrealScript Features (Cont.)
• config files
class HWPawn extends HWSelectable
config(HostileWorldsUnitData)
abstract;
/** The value the damage of all attacks is reduces by before being applied. */
var config int Armor;
/** The ground movement speed of this unit, in UU/s. */
var config int MovementSpeed;

Source: HWPawn.uc
UnrealScript Features (Cont.)
• config files
class HWPawn extends HWSelectable
config(HostileWorldsUnitData)
abstract;
/** The value the damage of all attacks is reduces by before being applied. */
var config int Armor;
/** The ground movement speed of this unit, in UU/s. */
var config int MovementSpeed;

Source: HWPawn.uc
[HostileWorlds.HWSM_Commander]
Armor=0
MovementSpeed=160

Source: UDKHostileWorldsUnitData.ini
UnrealScript Features (Cont.)
• localization files
class HWAbility extends Actor
config(HostileWorldsAbilityData)
abstract;
/** The name of this ability. */
var localized string AbilityName;

Source: HWAbility.uc
UnrealScript Features (Cont.)
• localization files
class HWAbility extends Actor
config(HostileWorldsAbilityData)
abstract;
/** The name of this ability. */
var localized string AbilityName;

Source: HWAbility.uc
[HWAb_Cloak]
AbilityName=Cloak

Source: HostileWorlds.int
UnrealScript Features (Cont.)
• meta data
/** Enable or disable spawning. */
Var() bool bEnableSpawning;
/** Set the rate at which AIs are spawned. */
Var() float RespawnsPerSecond<EditCondition=bEnableSpawning>;

Source: http://udn.epicgames.com/Three/UnrealScriptMetadata.html
Navigation Meshes
• connected graph of convex polygons
• at each node we know that an AI can get from any
point in that node, to any other point in that node
due to its convexity
• thus the task of pathfinding through the graph
simplifies into pathfinding along a connected graph
of nodes
• much more natural looking movement
Navigation Meshes (Cont.)

Source: http://udn.epicgames.com/Three/NavigationMeshReference.html
Navigation Meshes (Cont.)

Source: http://udn.epicgames.com/Three/NavigationMeshReference.html
Navigation Meshes (Cont.)

Source: http://udn.epicgames.com/Three/NavigationMeshReference.html
Obstacle Meshes
• represent obstacles in the world
• allow low-fidelity raycasts (against this obstacle
mesh only) when an AI needs to know whether it
can walk from one point to another directly
• allows us to skip doing a path search in wide open
areas even if there are many polygons between the
start and the goal
Navigation Meshes

DEMO
Benefits of Navigation Meshes
• can represent a large area with a single polygon
• overall graph density goes down
• memory footprint reduced
• pathfinding time goes down
• less time fixing up cross-level pathing information

• better pathing behavior
• automatic generation
Benefits of Navigation Meshes (Cont.)
• handling of dynamic objects

Source: http://udn.epicgames.com/Three/NavigationMeshReference.html
Benefits of Navigation Meshes (Cont.)
• handling of dynamic objects

Source: http://udn.epicgames.com/Three/NavigationMeshReference.html
Weapons & Inventory
/** Holds the list of link guns linked to this weapon */

var array<UTWeap_LinkGun> LinkedList;

Source: UTWeap_LinkGun.uc

// I made a funny Hahahahah :)
Weapon Fire
Weapon Fire (Cont.)
Weapon Fire (Cont.)
Weapon Fire (Cont.)
Weapon Fire (Cont.)
Weapon Fire (Cont.)
Weapon Fire (Cont.)
Weapon Fire (Cont.)
Weapon Fire (Cont.)
Weapon Fire (Cont.)
Weapon Fire (Cont.)
Weapon Fire (Cont.)
Network
“Unreal views the general problem of coordinating a
reasonable approximation of a shared reality
between the server and clients as a problem of
replication.
That is, a problem of determining a set of data and
commands that flow between the client and server
in order to achieve that approximate shared reality.“

- Tim Sweeney, Epic Games Inc.
Network
• generalized client-server model
• authoritative server (dedicated, listen)
• predicting and simulating clients
• “hybrid” code
• client and server execute same code on approximately the
same data
• minimizes traffic
Network (Cont.)
• generalized client-server model
• decoupling of network and game logic facilitates
extensibility
• network code can coordinate any game which can be described
by the language
• network is controlled on language level through keywords &
variables
• low level network (serialization, reliable UDP) done by core
Network - Basic Terminology
• Actor
• object that can move and interact with other actors

• Level
• object which contains a set of actors

• Game State
• the complete set of all actors that exist in a level
• the current values of all actor variables
Network – Update Loop
1. if (server)
Send(Gamestate) to all clients
2. if (client)
Send(RequestedMovement) to server
Receive(Gamestate) from server
Render(ApproximateWorldView) to screen
3. if (server || client)
Tick(DeltaTime) to update Gamestate
Update(Actors)
Execute(Physics)
Receive(GameEvents)
Execute(ScriptCode)
Actor Roles
• describes how much control the machine (server or
client) has over an actor
• controls the actors function call permissions
// Net variables.
enum ENetRole
{
ROLE_None,
ROLE_SimulatedProxy,
ROLE_AutonomousProxy,
ROLE_Authority,
};

//
//
//
//

No role at all.
Locally simulated proxy of this actor.
Locally autonomous proxy of this actor.
Authoritative control over the actor.

var ENetRole RemoteRole, Role;

Source: Actor.uc.
Bandwidth Optimization: Actor Relevancy
• eight prioritized rules:
•
•
•
•

not relevant, if (RemoteRole == none)
determined by the relevancy of its base, if any
relevant if (bAlwaysRelevant)
only potentially relevant to the client who owns that
Actor if (bOnlyRelevantToOwner)
Bandwidth Optimization: Actor Relevancy
• eight prioritized rules:
• relevant if (Owner==Player)
• not relevant if
• (bHidden) &&
• (!bBlockPlayers) &&
• (AmbientSound == none)

• relevant if visible according to a line-of-sight check
between the actor's Location and the player's

Location
• relevant, if was visible less than 2 to 10 seconds ago
Bandwidth Optimization: Prioritization
• Actor::NetPriority
• regulates share of the bandwidth based on how
important the Actor is to gameplay
• always relative to all other Actors’ NetPriority
Replication
• Actor replication
• only Location, Rotation valid on spawn

• variable replication
•
•
•
•

regulated by condition in Class Replication Statement
server to client only
always reliable
subject to bandwidth optimization
• repnotify keyword
replication
{
// replicate if server
if (Role == ROLE_Authority && (bNetInitial || bNetDirty))
Armor, Range, AttackDamage;
}

Source: HWPawn.uc.
Where‘s Waldo?
simulated event ReplicatedEvent(name VarName)
{
if (VarName == 'TeamIndex')
{
ChangeColor(TeamIndex);
}
}

Source: HWSelectable.uc, before January 11, 2011.
Where‘s Waldo?
simulated event ReplicatedEvent(name VarName)
{
if (VarName == 'TeamIndex')
{
ChangeColor(TeamIndex);
}
else
{
super.ReplicatedEvent(VarName);
}
}

Source: HWSelectable.uc.
Gotcha!

Never forget super calls when
overloading engine class functions!

60 / 58
Replication
• function call replication
• keywords:
• server, client
• reliable, unreliable

• server -> client: only to client who owns that Actor
• client -> server: only on owned Actor
• immediately sent, disregarding bandwidth

reliable server function ServerIssueAbilityOrder(HWAIController C, HWAbility Ability, HWSelectable Target)

Source: HWPlayerController.uc.
Go ahead, …

… make something
Unreal!
References
• Epic Games. UDK Unreal Developer’s Kit.
http://www.unrealengine.com/udk/, October 2013.
• Epic Games. UDN Technical Home.
http://udn.epicgames.com/Three/TechnicalHome.html, October 2013.
• Epic Games. UDN UnrealScript Language Reference.
http://udn.epicgames.com/Three/UnrealScriptReference.html, October
2013.
• Epic Games. UDN AI & Navigation.
http://udn.epicgames.com/Three/ReplicationHome.html, October 2013.
• Epic Games. UDN Networking & Replication.
http://udn.epicgames.com/Three/ReplicationHome.html, October 2013.
• Epic Games. Epic Games Community Forum.
http://forums.epicgames.com/forums/366-UDK, October 2013.

63 / 58
Thank you for your attention!
Contact
Mail
dev@npruehs.de
Blog
http://www.npruehs.de
Twitter

@npruehs
Github
https://github.com/npruehs

64 / 58

Weitere ähnliche Inhalte

Was ist angesagt?

Technical Deep Dive into the New Prefab System
Technical Deep Dive into the New Prefab SystemTechnical Deep Dive into the New Prefab System
Technical Deep Dive into the New Prefab SystemUnity Technologies
 
GPUs in Big Data - StampedeCon 2014
GPUs in Big Data - StampedeCon 2014GPUs in Big Data - StampedeCon 2014
GPUs in Big Data - StampedeCon 2014StampedeCon
 
We Love Performance! How Tic Toc Games Uses ECS in Mobile Puzzle Games
We Love Performance! How Tic Toc Games Uses ECS in Mobile Puzzle GamesWe Love Performance! How Tic Toc Games Uses ECS in Mobile Puzzle Games
We Love Performance! How Tic Toc Games Uses ECS in Mobile Puzzle GamesUnity Technologies
 
Finding New Sub-Atomic Particles on the AWS Cloud (BDT402) | AWS re:Invent 2013
Finding New Sub-Atomic Particles on the AWS Cloud (BDT402) | AWS re:Invent 2013Finding New Sub-Atomic Particles on the AWS Cloud (BDT402) | AWS re:Invent 2013
Finding New Sub-Atomic Particles on the AWS Cloud (BDT402) | AWS re:Invent 2013Amazon Web Services
 
【Unite 2017 Tokyo】パフォーマンス向上のためのスクリプトのベストプラクティス(note付き)
【Unite 2017 Tokyo】パフォーマンス向上のためのスクリプトのベストプラクティス(note付き)【Unite 2017 Tokyo】パフォーマンス向上のためのスクリプトのベストプラクティス(note付き)
【Unite 2017 Tokyo】パフォーマンス向上のためのスクリプトのベストプラクティス(note付き)Unity Technologies Japan K.K.
 
Solving Visibility and Streaming in the The Witcher 3: Wild Hunt with Umbra 3
Solving Visibility and Streaming in the The Witcher 3: Wild Hunt with Umbra 3Solving Visibility and Streaming in the The Witcher 3: Wild Hunt with Umbra 3
Solving Visibility and Streaming in the The Witcher 3: Wild Hunt with Umbra 3Umbra
 
Building a turn-based game prototype using ECS - Unite Copenhagen 2019
Building a turn-based game prototype using ECS - Unite Copenhagen 2019Building a turn-based game prototype using ECS - Unite Copenhagen 2019
Building a turn-based game prototype using ECS - Unite Copenhagen 2019Unity Technologies
 
【Unite 2017 Tokyo】C#ジョブシステムによるモバイルゲームのパフォーマンス向上テクニック(note付き)
【Unite 2017 Tokyo】C#ジョブシステムによるモバイルゲームのパフォーマンス向上テクニック(note付き)【Unite 2017 Tokyo】C#ジョブシステムによるモバイルゲームのパフォーマンス向上テクニック(note付き)
【Unite 2017 Tokyo】C#ジョブシステムによるモバイルゲームのパフォーマンス向上テクニック(note付き)Unity Technologies Japan K.K.
 
Converting Scene Data to DOTS – Unite Copenhagen 2019
Converting Scene Data to DOTS – Unite Copenhagen 2019Converting Scene Data to DOTS – Unite Copenhagen 2019
Converting Scene Data to DOTS – Unite Copenhagen 2019Unity Technologies
 
Divolte Collector - meetup presentation
Divolte Collector - meetup presentationDivolte Collector - meetup presentation
Divolte Collector - meetup presentationfvanvollenhoven
 
Divolte collector overview
Divolte collector overviewDivolte collector overview
Divolte collector overviewGoDataDriven
 
Systems Bioinformatics Workshop Keynote
Systems Bioinformatics Workshop KeynoteSystems Bioinformatics Workshop Keynote
Systems Bioinformatics Workshop KeynoteDeepak Singh
 
Prototyping online ML with Divolte Collector
Prototyping online ML with Divolte CollectorPrototyping online ML with Divolte Collector
Prototyping online ML with Divolte Collectorfvanvollenhoven
 
Using Docker for GPU Accelerated Applications
Using Docker for GPU Accelerated ApplicationsUsing Docker for GPU Accelerated Applications
Using Docker for GPU Accelerated ApplicationsNVIDIA
 
Using the Kinect for Fun and Profit by Tam Hanna
Using the Kinect for Fun and Profit by Tam HannaUsing the Kinect for Fun and Profit by Tam Hanna
Using the Kinect for Fun and Profit by Tam HannaCodemotion
 
Decima Engine: Visibility in Horizon Zero Dawn
Decima Engine: Visibility in Horizon Zero DawnDecima Engine: Visibility in Horizon Zero Dawn
Decima Engine: Visibility in Horizon Zero DawnGuerrilla
 

Was ist angesagt? (19)

Technical Deep Dive into the New Prefab System
Technical Deep Dive into the New Prefab SystemTechnical Deep Dive into the New Prefab System
Technical Deep Dive into the New Prefab System
 
GPUs in Big Data - StampedeCon 2014
GPUs in Big Data - StampedeCon 2014GPUs in Big Data - StampedeCon 2014
GPUs in Big Data - StampedeCon 2014
 
We Love Performance! How Tic Toc Games Uses ECS in Mobile Puzzle Games
We Love Performance! How Tic Toc Games Uses ECS in Mobile Puzzle GamesWe Love Performance! How Tic Toc Games Uses ECS in Mobile Puzzle Games
We Love Performance! How Tic Toc Games Uses ECS in Mobile Puzzle Games
 
Finding New Sub-Atomic Particles on the AWS Cloud (BDT402) | AWS re:Invent 2013
Finding New Sub-Atomic Particles on the AWS Cloud (BDT402) | AWS re:Invent 2013Finding New Sub-Atomic Particles on the AWS Cloud (BDT402) | AWS re:Invent 2013
Finding New Sub-Atomic Particles on the AWS Cloud (BDT402) | AWS re:Invent 2013
 
【Unite 2017 Tokyo】パフォーマンス向上のためのスクリプトのベストプラクティス(note付き)
【Unite 2017 Tokyo】パフォーマンス向上のためのスクリプトのベストプラクティス(note付き)【Unite 2017 Tokyo】パフォーマンス向上のためのスクリプトのベストプラクティス(note付き)
【Unite 2017 Tokyo】パフォーマンス向上のためのスクリプトのベストプラクティス(note付き)
 
Solving Visibility and Streaming in the The Witcher 3: Wild Hunt with Umbra 3
Solving Visibility and Streaming in the The Witcher 3: Wild Hunt with Umbra 3Solving Visibility and Streaming in the The Witcher 3: Wild Hunt with Umbra 3
Solving Visibility and Streaming in the The Witcher 3: Wild Hunt with Umbra 3
 
Building a turn-based game prototype using ECS - Unite Copenhagen 2019
Building a turn-based game prototype using ECS - Unite Copenhagen 2019Building a turn-based game prototype using ECS - Unite Copenhagen 2019
Building a turn-based game prototype using ECS - Unite Copenhagen 2019
 
【Unite 2017 Tokyo】C#ジョブシステムによるモバイルゲームのパフォーマンス向上テクニック(note付き)
【Unite 2017 Tokyo】C#ジョブシステムによるモバイルゲームのパフォーマンス向上テクニック(note付き)【Unite 2017 Tokyo】C#ジョブシステムによるモバイルゲームのパフォーマンス向上テクニック(note付き)
【Unite 2017 Tokyo】C#ジョブシステムによるモバイルゲームのパフォーマンス向上テクニック(note付き)
 
Converting Scene Data to DOTS – Unite Copenhagen 2019
Converting Scene Data to DOTS – Unite Copenhagen 2019Converting Scene Data to DOTS – Unite Copenhagen 2019
Converting Scene Data to DOTS – Unite Copenhagen 2019
 
Divolte Collector - meetup presentation
Divolte Collector - meetup presentationDivolte Collector - meetup presentation
Divolte Collector - meetup presentation
 
Divolte collector overview
Divolte collector overviewDivolte collector overview
Divolte collector overview
 
Systems Bioinformatics Workshop Keynote
Systems Bioinformatics Workshop KeynoteSystems Bioinformatics Workshop Keynote
Systems Bioinformatics Workshop Keynote
 
Prototyping online ML with Divolte Collector
Prototyping online ML with Divolte CollectorPrototyping online ML with Divolte Collector
Prototyping online ML with Divolte Collector
 
Deep Dive on Amazon EC2
Deep Dive on Amazon EC2Deep Dive on Amazon EC2
Deep Dive on Amazon EC2
 
Using Docker for GPU Accelerated Applications
Using Docker for GPU Accelerated ApplicationsUsing Docker for GPU Accelerated Applications
Using Docker for GPU Accelerated Applications
 
Using the Kinect for Fun and Profit by Tam Hanna
Using the Kinect for Fun and Profit by Tam HannaUsing the Kinect for Fun and Profit by Tam Hanna
Using the Kinect for Fun and Profit by Tam Hanna
 
Decima Engine: Visibility in Horizon Zero Dawn
Decima Engine: Visibility in Horizon Zero DawnDecima Engine: Visibility in Horizon Zero Dawn
Decima Engine: Visibility in Horizon Zero Dawn
 
JRubyConf 2009
JRubyConf 2009JRubyConf 2009
JRubyConf 2009
 
A funtro to real-time ray-tracing
A funtro to real-time ray-tracingA funtro to real-time ray-tracing
A funtro to real-time ray-tracing
 

Ähnlich wie Introduction to the Unreal Development Kit

Developing a Multiplayer RTS with the Unreal Engine 3
Developing a Multiplayer RTS with the Unreal Engine 3Developing a Multiplayer RTS with the Unreal Engine 3
Developing a Multiplayer RTS with the Unreal Engine 3Nick Pruehs
 
Intro To webOS
Intro To webOSIntro To webOS
Intro To webOSfpatton
 
Visibility Optimization for Games
Visibility Optimization for GamesVisibility Optimization for Games
Visibility Optimization for GamesUmbra
 
Visibility Optimization for Games
Visibility Optimization for GamesVisibility Optimization for Games
Visibility Optimization for GamesSampo Lappalainen
 
GDC 2010 - A Dynamic Component Architecture for High Performance Gameplay
GDC 2010 - A Dynamic Component Architecture for High Performance GameplayGDC 2010 - A Dynamic Component Architecture for High Performance Gameplay
GDC 2010 - A Dynamic Component Architecture for High Performance GameplayTerrance Cohen
 
OW2con'14 - XLcoud, 3D rendering in the cloud, Marius Preda, Institut Mines T...
OW2con'14 - XLcoud, 3D rendering in the cloud, Marius Preda, Institut Mines T...OW2con'14 - XLcoud, 3D rendering in the cloud, Marius Preda, Institut Mines T...
OW2con'14 - XLcoud, 3D rendering in the cloud, Marius Preda, Institut Mines T...xlcloud
 
Sephy engine development document
Sephy engine development documentSephy engine development document
Sephy engine development documentJaejun Kim
 
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 GameNick Pruehs
 
RenderMan*: The Role of Open Shading Language (OSL) with Intel® Advanced Vect...
RenderMan*: The Role of Open Shading Language (OSL) with Intel® Advanced Vect...RenderMan*: The Role of Open Shading Language (OSL) with Intel® Advanced Vect...
RenderMan*: The Role of Open Shading Language (OSL) with Intel® Advanced Vect...Intel® Software
 
Unreal Engine Basics 02 - Unreal Editor
Unreal Engine Basics 02 - Unreal EditorUnreal Engine Basics 02 - Unreal Editor
Unreal Engine Basics 02 - Unreal EditorNick Pruehs
 
DevOps Enabling Your Team
DevOps Enabling Your TeamDevOps Enabling Your Team
DevOps Enabling Your TeamGR8Conf
 
Optimizing unity games (Google IO 2014)
Optimizing unity games (Google IO 2014)Optimizing unity games (Google IO 2014)
Optimizing unity games (Google IO 2014)Alexander Dolbilov
 
"Walk in a distributed systems park with Orleans" Евгений Бобров
"Walk in a distributed systems park with Orleans" Евгений Бобров"Walk in a distributed systems park with Orleans" Евгений Бобров
"Walk in a distributed systems park with Orleans" Евгений БобровFwdays
 
Silverlight as a Gaming Platform
Silverlight as a Gaming PlatformSilverlight as a Gaming Platform
Silverlight as a Gaming Platformgoodfriday
 
Gdc09 Minigames
Gdc09 MinigamesGdc09 Minigames
Gdc09 MinigamesSusan Gold
 
Exploring the Final Frontier of Data Center Orchestration: Network Elements -...
Exploring the Final Frontier of Data Center Orchestration: Network Elements -...Exploring the Final Frontier of Data Center Orchestration: Network Elements -...
Exploring the Final Frontier of Data Center Orchestration: Network Elements -...Puppet
 
The next generation of GPU APIs for Game Engines
The next generation of GPU APIs for Game EnginesThe next generation of GPU APIs for Game Engines
The next generation of GPU APIs for Game EnginesPooya Eimandar
 
GDC 2010 - A Dynamic Component Architecture for High Performance Gameplay - M...
GDC 2010 - A Dynamic Component Architecture for High Performance Gameplay - M...GDC 2010 - A Dynamic Component Architecture for High Performance Gameplay - M...
GDC 2010 - A Dynamic Component Architecture for High Performance Gameplay - M...Terrance Cohen
 
Enabling Worm and Malware Investigation Using Virtualization
Enabling Worm and Malware Investigation Using VirtualizationEnabling Worm and Malware Investigation Using Virtualization
Enabling Worm and Malware Investigation Using Virtualizationamiable_indian
 

Ähnlich wie Introduction to the Unreal Development Kit (20)

Developing a Multiplayer RTS with the Unreal Engine 3
Developing a Multiplayer RTS with the Unreal Engine 3Developing a Multiplayer RTS with the Unreal Engine 3
Developing a Multiplayer RTS with the Unreal Engine 3
 
Intro To webOS
Intro To webOSIntro To webOS
Intro To webOS
 
Visibility Optimization for Games
Visibility Optimization for GamesVisibility Optimization for Games
Visibility Optimization for Games
 
Visibility Optimization for Games
Visibility Optimization for GamesVisibility Optimization for Games
Visibility Optimization for Games
 
GDC 2010 - A Dynamic Component Architecture for High Performance Gameplay
GDC 2010 - A Dynamic Component Architecture for High Performance GameplayGDC 2010 - A Dynamic Component Architecture for High Performance Gameplay
GDC 2010 - A Dynamic Component Architecture for High Performance Gameplay
 
OW2con'14 - XLcoud, 3D rendering in the cloud, Marius Preda, Institut Mines T...
OW2con'14 - XLcoud, 3D rendering in the cloud, Marius Preda, Institut Mines T...OW2con'14 - XLcoud, 3D rendering in the cloud, Marius Preda, Institut Mines T...
OW2con'14 - XLcoud, 3D rendering in the cloud, Marius Preda, Institut Mines T...
 
Sephy engine development document
Sephy engine development documentSephy engine development document
Sephy engine development document
 
Faults inside System Software
Faults inside System SoftwareFaults inside System Software
Faults inside System Software
 
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
 
RenderMan*: The Role of Open Shading Language (OSL) with Intel® Advanced Vect...
RenderMan*: The Role of Open Shading Language (OSL) with Intel® Advanced Vect...RenderMan*: The Role of Open Shading Language (OSL) with Intel® Advanced Vect...
RenderMan*: The Role of Open Shading Language (OSL) with Intel® Advanced Vect...
 
Unreal Engine Basics 02 - Unreal Editor
Unreal Engine Basics 02 - Unreal EditorUnreal Engine Basics 02 - Unreal Editor
Unreal Engine Basics 02 - Unreal Editor
 
DevOps Enabling Your Team
DevOps Enabling Your TeamDevOps Enabling Your Team
DevOps Enabling Your Team
 
Optimizing unity games (Google IO 2014)
Optimizing unity games (Google IO 2014)Optimizing unity games (Google IO 2014)
Optimizing unity games (Google IO 2014)
 
"Walk in a distributed systems park with Orleans" Евгений Бобров
"Walk in a distributed systems park with Orleans" Евгений Бобров"Walk in a distributed systems park with Orleans" Евгений Бобров
"Walk in a distributed systems park with Orleans" Евгений Бобров
 
Silverlight as a Gaming Platform
Silverlight as a Gaming PlatformSilverlight as a Gaming Platform
Silverlight as a Gaming Platform
 
Gdc09 Minigames
Gdc09 MinigamesGdc09 Minigames
Gdc09 Minigames
 
Exploring the Final Frontier of Data Center Orchestration: Network Elements -...
Exploring the Final Frontier of Data Center Orchestration: Network Elements -...Exploring the Final Frontier of Data Center Orchestration: Network Elements -...
Exploring the Final Frontier of Data Center Orchestration: Network Elements -...
 
The next generation of GPU APIs for Game Engines
The next generation of GPU APIs for Game EnginesThe next generation of GPU APIs for Game Engines
The next generation of GPU APIs for Game Engines
 
GDC 2010 - A Dynamic Component Architecture for High Performance Gameplay - M...
GDC 2010 - A Dynamic Component Architecture for High Performance Gameplay - M...GDC 2010 - A Dynamic Component Architecture for High Performance Gameplay - M...
GDC 2010 - A Dynamic Component Architecture for High Performance Gameplay - M...
 
Enabling Worm and Malware Investigation Using Virtualization
Enabling Worm and Malware Investigation Using VirtualizationEnabling Worm and Malware Investigation Using Virtualization
Enabling Worm and Malware Investigation Using Virtualization
 

Mehr von Nick Pruehs

Unreal Engine Basics 05 - User Interface
Unreal Engine Basics 05 - User InterfaceUnreal Engine Basics 05 - User Interface
Unreal Engine Basics 05 - User InterfaceNick Pruehs
 
Unreal Engine Basics 03 - Gameplay
Unreal Engine Basics 03 - GameplayUnreal Engine Basics 03 - Gameplay
Unreal Engine Basics 03 - GameplayNick Pruehs
 
Unreal Engine Basics 01 - Game Framework
Unreal Engine Basics 01 - Game FrameworkUnreal Engine Basics 01 - Game Framework
Unreal Engine Basics 01 - Game FrameworkNick Pruehs
 
Game Programming - Cloud Development
Game Programming - Cloud DevelopmentGame Programming - Cloud Development
Game Programming - Cloud DevelopmentNick Pruehs
 
Game Programming - Git
Game Programming - GitGame Programming - Git
Game Programming - GitNick 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 PonyNick Pruehs
 
Game Programming 13 - Debugging & Performance Optimization
Game Programming 13 - Debugging & Performance OptimizationGame Programming 13 - Debugging & Performance Optimization
Game Programming 13 - Debugging & Performance OptimizationNick 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 TeamsNick 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 DoNick 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 BasicsNick Pruehs
 
Tool Development A - Git
Tool Development A - GitTool Development A - Git
Tool Development A - GitNick Pruehs
 
Game Programming 12 - Shaders
Game Programming 12 - ShadersGame Programming 12 - Shaders
Game Programming 12 - ShadersNick Pruehs
 
Game Programming 11 - Game Physics
Game Programming 11 - Game PhysicsGame Programming 11 - Game Physics
Game Programming 11 - Game PhysicsNick Pruehs
 
Game Programming 10 - Localization
Game Programming 10 - LocalizationGame Programming 10 - Localization
Game Programming 10 - LocalizationNick Pruehs
 
Game Programming 09 - AI
Game Programming 09 - AIGame Programming 09 - AI
Game Programming 09 - AINick Pruehs
 
Game Development Challenges
Game Development ChallengesGame Development Challenges
Game Development ChallengesNick Pruehs
 
Game Programming 08 - Tool Development
Game Programming 08 - Tool DevelopmentGame Programming 08 - Tool Development
Game Programming 08 - Tool DevelopmentNick Pruehs
 
Game Programming 07 - Procedural Content Generation
Game Programming 07 - Procedural Content GenerationGame Programming 07 - Procedural Content Generation
Game Programming 07 - Procedural Content GenerationNick Pruehs
 
Game Programming 06 - Automated Testing
Game Programming 06 - Automated TestingGame Programming 06 - Automated Testing
Game Programming 06 - Automated TestingNick Pruehs
 

Mehr von Nick Pruehs (20)

Unreal Engine Basics 05 - User Interface
Unreal Engine Basics 05 - User InterfaceUnreal Engine Basics 05 - User Interface
Unreal Engine Basics 05 - User Interface
 
Unreal Engine Basics 03 - Gameplay
Unreal Engine Basics 03 - GameplayUnreal Engine Basics 03 - Gameplay
Unreal Engine Basics 03 - Gameplay
 
Unreal Engine Basics 01 - Game Framework
Unreal Engine Basics 01 - Game FrameworkUnreal Engine Basics 01 - Game Framework
Unreal Engine Basics 01 - Game Framework
 
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
 
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
 

Kürzlich hochgeladen

A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Paola De la Torre
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 

Kürzlich hochgeladen (20)

A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101Salesforce Community Group Quito, Salesforce 101
Salesforce Community Group Quito, Salesforce 101
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 

Introduction to the Unreal Development Kit

  • 1. Introduction to the Unreal Development Kit (UDK) Nick Prühs October 23, 2013
  • 2. About Me “Best Bachelor“ Computer Science Kiel University, 2009 Master Games Hamburg University of Applied Sciences, 2011 Lead Programmer Daedalic Entertainment, 2011-2012 Co-Founder slash games, 2013 2 / 58
  • 3. Features • complete editing environment • pure rendering power (Gemini) • state-of-the-art animation (Mantinee) • powerful scripting (Kismet) • real worlds physics • eye-popping lighting and shadows (Lightmass)
  • 4. Features (Cont.) • gorgeous cinematics (Mantinee) • terrain • built-in networking • real-time shaders • broad audio support • particle effects (Cascade)
  • 5. Features (Cont.) • artificial intelligence • distributed computing (Swarm) • descructible environments • Bink video codec • SpeedTree foliage editor • FaceFX facial animation • Scaleform 4.0 UI
  • 10. Licensing • non-commercial use: • free! • commercial use: • USD 99 up-front • 0% royalty on first USD 50,000 in UDK related revenue • 25% royalty on UDK related revenue above USD 50,000
  • 11. Useful Stuff • UT Source Code • UDK Forums • Showcases • UDK Programming Home • UDK Gems • UnrealScript Language Reference
  • 12. Working With The UDK • UDK vs. Licensees • monthly releases • Feb 12: Recast • May 12: RealD 3D • Feb 13: Substance • Visual Studio 2010 & nFringe • UnrealEd & UnrealFrontend • Content Packages
  • 13. Unreal Engine Basics • Core • C++ • Rendering, Sound, GameLoop, Collision, Physics, Threading, Low Level Network • Virtual Machine • runs in core • executes UnrealScript
  • 14. Unreal Engine Basics (Cont.) • UnrealScript • similar to C++ and Java • high-level object-oriented language • pointerless environment with automatic garbage collection • simple single-inheritance class graph • strong compile-time type checking • safe client-side execution "sandbox"
  • 16. UnrealScript Features • instantiation • Actor.Spawn(class<Actor>) vs. new • timers • Actor.SetTimer(float, bool, name) • iterators • Actor.AllActors • Actor.DynamicActors • Actor.CollidingActors
  • 17. UnrealScript Features (Cont.) • states state Dead { ignores SeePlayer, HearNoise, KilledBy, NextWeapon, PrevWeapon; function bool IsDead() { return true; } // ... } Source: PlayerController.uc
  • 18. UnrealScript Features (Cont.) • exec functions .Bindings=(Name="MouseScrollDown",Command="GBA_NextWeapon") Source: DefaultInput.ini
  • 19. UnrealScript Features (Cont.) • exec functions .Bindings=(Name="MouseScrollDown",Command="GBA_NextWeapon") Source: DefaultInput.ini exec function NextWeapon() { if ( WorldInfo.Pauser!=None ) return; if ( Pawn.Weapon == None ) { SwitchToBestWeapon(); return; } if ( Pawn.InvManager != None ) Pawn.InvManager.NextWeapon(); } Source: PlayerController.uc
  • 20. UnrealScript Features (Cont.) • config files class HWPawn extends HWSelectable config(HostileWorldsUnitData) abstract; /** The value the damage of all attacks is reduces by before being applied. */ var config int Armor; /** The ground movement speed of this unit, in UU/s. */ var config int MovementSpeed; Source: HWPawn.uc
  • 21. UnrealScript Features (Cont.) • config files class HWPawn extends HWSelectable config(HostileWorldsUnitData) abstract; /** The value the damage of all attacks is reduces by before being applied. */ var config int Armor; /** The ground movement speed of this unit, in UU/s. */ var config int MovementSpeed; Source: HWPawn.uc [HostileWorlds.HWSM_Commander] Armor=0 MovementSpeed=160 Source: UDKHostileWorldsUnitData.ini
  • 22. UnrealScript Features (Cont.) • localization files class HWAbility extends Actor config(HostileWorldsAbilityData) abstract; /** The name of this ability. */ var localized string AbilityName; Source: HWAbility.uc
  • 23. UnrealScript Features (Cont.) • localization files class HWAbility extends Actor config(HostileWorldsAbilityData) abstract; /** The name of this ability. */ var localized string AbilityName; Source: HWAbility.uc [HWAb_Cloak] AbilityName=Cloak Source: HostileWorlds.int
  • 24. UnrealScript Features (Cont.) • meta data /** Enable or disable spawning. */ Var() bool bEnableSpawning; /** Set the rate at which AIs are spawned. */ Var() float RespawnsPerSecond<EditCondition=bEnableSpawning>; Source: http://udn.epicgames.com/Three/UnrealScriptMetadata.html
  • 25. Navigation Meshes • connected graph of convex polygons • at each node we know that an AI can get from any point in that node, to any other point in that node due to its convexity • thus the task of pathfinding through the graph simplifies into pathfinding along a connected graph of nodes • much more natural looking movement
  • 26. Navigation Meshes (Cont.) Source: http://udn.epicgames.com/Three/NavigationMeshReference.html
  • 27. Navigation Meshes (Cont.) Source: http://udn.epicgames.com/Three/NavigationMeshReference.html
  • 28. Navigation Meshes (Cont.) Source: http://udn.epicgames.com/Three/NavigationMeshReference.html
  • 29. Obstacle Meshes • represent obstacles in the world • allow low-fidelity raycasts (against this obstacle mesh only) when an AI needs to know whether it can walk from one point to another directly • allows us to skip doing a path search in wide open areas even if there are many polygons between the start and the goal
  • 31. Benefits of Navigation Meshes • can represent a large area with a single polygon • overall graph density goes down • memory footprint reduced • pathfinding time goes down • less time fixing up cross-level pathing information • better pathing behavior • automatic generation
  • 32. Benefits of Navigation Meshes (Cont.) • handling of dynamic objects Source: http://udn.epicgames.com/Three/NavigationMeshReference.html
  • 33. Benefits of Navigation Meshes (Cont.) • handling of dynamic objects Source: http://udn.epicgames.com/Three/NavigationMeshReference.html
  • 34. Weapons & Inventory /** Holds the list of link guns linked to this weapon */ var array<UTWeap_LinkGun> LinkedList; Source: UTWeap_LinkGun.uc // I made a funny Hahahahah :)
  • 47. Network “Unreal views the general problem of coordinating a reasonable approximation of a shared reality between the server and clients as a problem of replication. That is, a problem of determining a set of data and commands that flow between the client and server in order to achieve that approximate shared reality.“ - Tim Sweeney, Epic Games Inc.
  • 48. Network • generalized client-server model • authoritative server (dedicated, listen) • predicting and simulating clients • “hybrid” code • client and server execute same code on approximately the same data • minimizes traffic
  • 49. Network (Cont.) • generalized client-server model • decoupling of network and game logic facilitates extensibility • network code can coordinate any game which can be described by the language • network is controlled on language level through keywords & variables • low level network (serialization, reliable UDP) done by core
  • 50. Network - Basic Terminology • Actor • object that can move and interact with other actors • Level • object which contains a set of actors • Game State • the complete set of all actors that exist in a level • the current values of all actor variables
  • 51. Network – Update Loop 1. if (server) Send(Gamestate) to all clients 2. if (client) Send(RequestedMovement) to server Receive(Gamestate) from server Render(ApproximateWorldView) to screen 3. if (server || client) Tick(DeltaTime) to update Gamestate Update(Actors) Execute(Physics) Receive(GameEvents) Execute(ScriptCode)
  • 52. Actor Roles • describes how much control the machine (server or client) has over an actor • controls the actors function call permissions // Net variables. enum ENetRole { ROLE_None, ROLE_SimulatedProxy, ROLE_AutonomousProxy, ROLE_Authority, }; // // // // No role at all. Locally simulated proxy of this actor. Locally autonomous proxy of this actor. Authoritative control over the actor. var ENetRole RemoteRole, Role; Source: Actor.uc.
  • 53. Bandwidth Optimization: Actor Relevancy • eight prioritized rules: • • • • not relevant, if (RemoteRole == none) determined by the relevancy of its base, if any relevant if (bAlwaysRelevant) only potentially relevant to the client who owns that Actor if (bOnlyRelevantToOwner)
  • 54. Bandwidth Optimization: Actor Relevancy • eight prioritized rules: • relevant if (Owner==Player) • not relevant if • (bHidden) && • (!bBlockPlayers) && • (AmbientSound == none) • relevant if visible according to a line-of-sight check between the actor's Location and the player's Location • relevant, if was visible less than 2 to 10 seconds ago
  • 55. Bandwidth Optimization: Prioritization • Actor::NetPriority • regulates share of the bandwidth based on how important the Actor is to gameplay • always relative to all other Actors’ NetPriority
  • 56. Replication • Actor replication • only Location, Rotation valid on spawn • variable replication • • • • regulated by condition in Class Replication Statement server to client only always reliable subject to bandwidth optimization • repnotify keyword replication { // replicate if server if (Role == ROLE_Authority && (bNetInitial || bNetDirty)) Armor, Range, AttackDamage; } Source: HWPawn.uc.
  • 57. Where‘s Waldo? simulated event ReplicatedEvent(name VarName) { if (VarName == 'TeamIndex') { ChangeColor(TeamIndex); } } Source: HWSelectable.uc, before January 11, 2011.
  • 58. Where‘s Waldo? simulated event ReplicatedEvent(name VarName) { if (VarName == 'TeamIndex') { ChangeColor(TeamIndex); } else { super.ReplicatedEvent(VarName); } } Source: HWSelectable.uc.
  • 59. Gotcha! Never forget super calls when overloading engine class functions! 60 / 58
  • 60. Replication • function call replication • keywords: • server, client • reliable, unreliable • server -> client: only to client who owns that Actor • client -> server: only on owned Actor • immediately sent, disregarding bandwidth reliable server function ServerIssueAbilityOrder(HWAIController C, HWAbility Ability, HWSelectable Target) Source: HWPlayerController.uc.
  • 61. Go ahead, … … make something Unreal!
  • 62. References • Epic Games. UDK Unreal Developer’s Kit. http://www.unrealengine.com/udk/, October 2013. • Epic Games. UDN Technical Home. http://udn.epicgames.com/Three/TechnicalHome.html, October 2013. • Epic Games. UDN UnrealScript Language Reference. http://udn.epicgames.com/Three/UnrealScriptReference.html, October 2013. • Epic Games. UDN AI & Navigation. http://udn.epicgames.com/Three/ReplicationHome.html, October 2013. • Epic Games. UDN Networking & Replication. http://udn.epicgames.com/Three/ReplicationHome.html, October 2013. • Epic Games. Epic Games Community Forum. http://forums.epicgames.com/forums/366-UDK, October 2013. 63 / 58
  • 63. Thank you for your attention! Contact Mail dev@npruehs.de Blog http://www.npruehs.de Twitter @npruehs Github https://github.com/npruehs 64 / 58