SlideShare a Scribd company logo
Going Off the Rails:
The Making of Bullet Train
Ryan Vance
Senior Rendering Programmer, Epic Games
HOW DID WE GET HERE?
Elemental VR
Released at E3 2013
Our first foray into getting UE4 to
render stereoscopic images and VR
hardware support. We ported the
“Elemental” tech demo which debuted
at GDC that year.
Strategy VR
Released at CES 2014
Using the Crystal Cove prototype, we
explored scale and positional
movement in VR by adapting existing
game content.
Couch Knights
Released at GDC 2014
Using the DK2, we explored social
spaces in VR, as well as simple
gameplay.
Showdown
Released at Oculus Connect 2014
Designed to max out the new Nvidia
980 hardware, while running at 90Hz
on the new Crescent Bay hardware.
Content was adapted from the
“Samaritan” and “Infiltrator” demos.
Thief in the Shadows
Released at GDC 2015
Collaboration with Weta Digital’s
R&D team to understand how film
content could be adapted to real time
VR experiences.
What do all of our previous
efforts have in common?
What do all of our previous
efforts have in common?
Adapted Content.
We have something new in the
Oculus Touch, so we should create
something new on the content side.
Bullet Train
Released at Oculus Connect 2015
Our first foray into serious, only-
possible-in-VR gameplay using motion
controllers.
Design Considerations for Bullet Train:
● Raise the visual bar over “Showdown”
● …while running on the Oculus recommended
spec hardware.
● Interesting environment / architecture
● Motion Controls
● Test the engine, rendering improvements
So, what should we do?
Airports (RDU in Raleigh, NC)
Airports (RDU in Raleigh, NC)
European Train Stations
European Train Stations
Early Versions of the Environment
Early Versions of the Environment
Mix and Match!
While the majority of the assets were
custom-built for Bullet Train, we did buy
some assets, and cleaned them up for use
in the level
● Train Exterior
● Weapon Pack
● Character reskinned from “Infiltrator”
Looks good, now what should we
do here?
Option 1: Hogan’s Alley
A standard “shooting gallery” style gameplay
Fun, supports multiplayer easily, but staying in one place is
boring!
Option 2: Action Film!
Move through the world, taking out enemies.
Inspired by action movie “one-shots” like Oldboy and Hard
Boiled
Hard Boiled (1992) Oldboy (2003)
Option 2: Action Film!
The moving “one-shot” is a classic technique for action
sequences
For us, it solves the “movement problem,” because the camera is
moving through the action continuously.
Oldboy (2003)
Anatomy of a Chain
1. Player has two enemies to engage
Anatomy of a Chain
2. Player tosses weapon at enemy
Anatomy of a Chain
3. Player teleports to the downed
enemy, grabs gun out of the air
Anatomy of a Chain
4. Player uses the same gun to shoot
the next enemy
Anatomy of a Chain
Option 2: Action Film!
Advantages:
• Movement through the environment keeps
things interesting
• Constrained in terms of content, animation,
and AI scripting needs
• “Chaining” gameplay
What happened in practice?
When you’re stationary and
interacting with objects in front
of you in the virtual world, the
two trackers have line-of-sight
to your HMD and both
controllers. No problems!
Option 2: Action Film!
When the player is moving
past their targets, it’s easy to
over-rotate!
This causes occlusion of the
hands, and breaks tracking.
Option 2: Action Film!
Option 2: Action Film!
No good! But what did we learn?
• Movement keeps things fun!
• Like in “Showdown,” careful non-player
controlled movement is fun
– Start them moving right away, but fade in!
• We need to control both angle and engagement
distance
Well, at least we learned
something. What now?
Option 3: Magic!
Let’s take the best parts of the previous methods:
• Stationary Shooter: controlled distance, always
facing the action
• Action Film: movement around the environment,
exciting action
Option 3: Magic!
Since you’re already a disembodied set of hands,
why not let you teleport?
Gives us control where the player goes:
– Limits the content needed
– Controls the direction they’re facing
– Less overwhelming to players
Option 3: Magic!
Place teleporters so that the player always face the action.
Option 3: Magic!
It works!
We use trickery to keep the action in the center of the
map, so the player is always facing what’s most
important.
But, there were a few tricks we needed to add to make it
feel right…
Option 3: Magic!
“Teleport Blink”
• A brief fade to white cues the player
• Sound helps immensely!
• We left a trail behind to show you where you’ve
come from
Option 3: Magic!
Teleporter Selection
• Originally, players looked at what they wanted to
teleport to, but that doesn’t work in frantic combat
• Moved teleporter control to the hand, with snapping,
which lets players point at targets
But…how do we get that awesome
action movie feel? Teleporters aren’t
close to the enemies…
Option 3: Magic!
In order to preserve the
hand-to-hand engagement
distances, we added the
“stealth teleport.”
Allows you to “reach out and
punch someone,” as well as
some cool combos.
The Raid: Redemption(2011)
Option 3: Magic!
Teleporters were a nice solution, but they’re not without
their own issues.
• Re-orientation can still confuse players
• People still want to move around their “local space”
• Action doesn’t always keep in the center
• People simply forget they can do it.
So, now we know how we’re going to
get around, but what about gameplay?
We have guns, grenades, and rockets
stubbed in, so how do we make it awesome?
In short, we need to make you feel like a badass.
The Matrix (1999)
Failure is not an option!
Very few have used VR, and even less have
used motion controls.
● No death, only more badass
● Lots of invisible helpers
Anatomy of a Throw
Not many people are great at throwing
things in real life.
However, throwing something and
hitting your mark is really satisfying!
Anatomy of a Throw
● Take the view, and trace
the plausible targets
● Compute path based on
the player’s hand velocity
and angle
● Try a few different arcs to
get it to the destination
● Don’t make it obvious!
Rocket Throwing
The original idea was for players to grab the
rockets, aim them, and then let them fly.
Some people got this, other failed spectacularly.
This worked great when designers played the game!
This worked great when designers played the game!
But when other people played…
Most often, when players failed, they were
trying to throw the rocket overhand.
Solution: Let them throw rockets!
The Mechanics of Rocket Throwing
● Player grabs the rocket
● Average the velocity of the rocket for the
past few frames to get the “intent”
● Hysteresis is your friend (and a great word)
● Add visual flourishes to make it feel less
controlled
This got most of the people most of the way
there…
But some people still had some trouble hitting the
target. What do we do?
(Assist Delay)
“The longer you suck, the less you suck!”
IT LOOKS GOOD, BUT HOW DOES
IT ALL RUN?
Faked Reflections
With our highly reflective
environment, you need
reflections to make objects
feel grounded.
Faked Reflections
Let’s leverage an old trick!
Use underground proxy
geometry (in this case, a quad),
so it skews the same way as the
actual object.
Texture it with a capture of the
object, and then modify the
reflection using the surface
data from the Gbuffer.
Faked Reflections
While we pay a higher base cost for the GBuffer, it lets us
leverage all that information for tricks such as this.
The same technique works for characters, too!
Faked Reflections
In this case, we use two static
meshes attached to the feet as
our proxies.
In the vertex shader, we use
proxy position compared with
the actor position to line up the
proxy geometry to the view, to
allow for cheap “animation”
Faked Reflections
We then blended between two
captures of the leg, one
forward and one to the side, in
the vertex shader, based on the
angle between the leg and the
camera
Faked Reflections
Flattening Materials
Reflections on the enemy
character were now cheap, but
his material was most certainly
not!
Adapting a trick from mobile,
we “flattened” the materials by
baking multiple materials
down to just two.
Flattening Materials
Before: 5 materials, ~270 inst. / mat After: 2 materials, 77 inst. / mat
Flattening Materials
Flattening Materials
Technical Improvements and
Optimizations
WHAT HAPPENS WHEN CONTENT
OPTIMIZATION IS NOT ENOUGH?
Because we had ambitious visual goals, mere
content optimization wasn’t enough.
Time to implement some general optimizations
at the engine level.
• Hidden (and Visible!) Area Meshes
• Instanced Stereo Rendering
Hidden and Visible Area Meshes
There’s a lot of wasted space that you can’t see!
Hidden and Visible Area Meshes
Hidden area meshes were
already covered by Valve’s
Alex Vlachos at GDC
2015.
Here’s how it works…
Hidden and Visible Area Meshes
Draw the hidden area mesh at the near plane before the depth pre-
pass and the base pass
Hidden and Visible Area Meshes
Next, draw the scene as normal. The GPU will reject pixels
already masked out by the mesh, because they depth fail.
Unfortunately, we weren’t
seeing the 10 – 14% gains
that others have seen by
doing that.
But, we pay a lot in post-
processing time!
Hidden and Visible Area Meshes
Use the inverse of the hidden area mesh, and use that for post
processing, instead of a quad.
Hidden and Visible Area Meshes
Much better! With the
two techniques combined,
we were seeing:
Oculus ~0.25 - 0.3 ms
Vive ~0.3 - 0.4 ms
PSVR ~1.0 ms
Hidden and Visible Area Meshes
Instanced Stereo Rendering
In our old way of stereo rendering, we’d duplicate every draw call,
which is easy to implement, but really taxes the CPU
Timothy Wilson proposed a
better technique at SVVR in
2015. Instead of duplicating
everything, let the hardware do
the instancing for us. Each
draw call draws both eyes at
the same time. We save CPU
time!
Instanced Stereo Rendering
By using instancing, we make one draw call draw two times, using
the left and right eye transforms.
Instanced Stereo Rendering
To see how this works step-by-step, let’s draw this simple test scene
using instancing.
Instanced Stereo Rendering
Draw geometry twice using instancing. One instance gets the left eye
uniforms, while the other gets the right eye uniforms.
Instanced Stereo Rendering
Next, since we’re drawing to half the view port, scale things by half
horizontally.
Instanced Stereo Rendering
Then, translate each eye so that they’re in the proper left and right eye
positions.
Instanced Stereo Rendering
Finally, clip the left and right eyes at the center border using user
clipping planes.
Instanced Stereo Rendering
This was a huge win! On Bullet Train, this saved
about 1.5 ms on the CPU, and 0.75 ms on the GPU!
Showdown had about 500 unique draw calls, where
Bullet Train had ~2300!
Instanced Stereo Rendering
Special Thanks:
Nick Whiting, Nick Donaldson, Chad Taylor,
Ryan Brucks, Jerome Platteaux, Tommy
Jacob, Artem Bolgar, and the rest of the
Bullet Train team!
Thanks!

More Related Content

What's hot

Making High Quality Interactive VR with Unreal Engine Luis Cataldi
Making High Quality Interactive VR with Unreal Engine Luis CataldiMaking High Quality Interactive VR with Unreal Engine Luis Cataldi
Making High Quality Interactive VR with Unreal Engine Luis Cataldi
Luis Cataldi
 
Making VR with Unreal Engine Luis Cataldi
Making VR with Unreal Engine  Luis CataldiMaking VR with Unreal Engine  Luis Cataldi
Making VR with Unreal Engine Luis Cataldi
Unreal Engine
 
Virtual Reality gaming: analysis of Yon Paradox development - Fabio Mosca - C...
Virtual Reality gaming: analysis of Yon Paradox development - Fabio Mosca - C...Virtual Reality gaming: analysis of Yon Paradox development - Fabio Mosca - C...
Virtual Reality gaming: analysis of Yon Paradox development - Fabio Mosca - C...
Codemotion
 
Dynamic Wounds on Animated Characters in UE4
Dynamic Wounds on Animated Characters in UE4Dynamic Wounds on Animated Characters in UE4
Dynamic Wounds on Animated Characters in UE4
Michał Kłoś
 
Technology Pipedream -- Ivan Beram
Technology Pipedream --  Ivan BeramTechnology Pipedream --  Ivan Beram
Technology Pipedream -- Ivan Beram
Ivan Beram
 
Vision Summit 16 - Tips and Tricks for VR Game Development
Vision Summit 16 - Tips and Tricks for VR Game DevelopmentVision Summit 16 - Tips and Tricks for VR Game Development
Vision Summit 16 - Tips and Tricks for VR Game Development
Rafael Ferrari
 
IEEE VR-SEARIS 2014 Keynote - MiddleVR - Philosophy and architecture
IEEE VR-SEARIS 2014 Keynote - MiddleVR - Philosophy and architectureIEEE VR-SEARIS 2014 Keynote - MiddleVR - Philosophy and architecture
IEEE VR-SEARIS 2014 Keynote - MiddleVR - Philosophy and architecture
Sebastien Kuntz
 
Alexey Savchenko, Unreal Engine
Alexey Savchenko, Unreal EngineAlexey Savchenko, Unreal Engine
Alexey Savchenko, Unreal Engine
White Nights Conference
 
Art and design for VR
Art and design for VRArt and design for VR
Art and design for VR
Chandan Singh
 
BYOD: Build Your First VR Experience with Unreal Engine
BYOD: Build Your First VR Experience with Unreal EngineBYOD: Build Your First VR Experience with Unreal Engine
BYOD: Build Your First VR Experience with Unreal Engine
Michael Sheyahshe
 
Finding Monsters Adventure VR Experience
Finding Monsters Adventure VR ExperienceFinding Monsters Adventure VR Experience
Finding Monsters Adventure VR Experience
Rafael Ferrari
 
SAE AR/VR - The challenges of creating a VR application with Unity
SAE AR/VR - The challenges of creating a VR application with UnitySAE AR/VR - The challenges of creating a VR application with Unity
SAE AR/VR - The challenges of creating a VR application with Unity
Sebastien Kuntz
 
SEARIS 2014 Keynote - MiddleVR - Philosophy and architecture
SEARIS 2014 Keynote - MiddleVR - Philosophy and architectureSEARIS 2014 Keynote - MiddleVR - Philosophy and architecture
SEARIS 2014 Keynote - MiddleVR - Philosophy and architecture
Sebastien Kuntz
 
VR - Creating the ultimate reality
VR - Creating the ultimate realityVR - Creating the ultimate reality
VR - Creating the ultimate reality
Sebastien Kuntz
 
Unreal Open Day 2017 UE4 for Mobile: The Future of High Quality Mobile Games
Unreal Open Day 2017 UE4 for Mobile: The Future of High Quality Mobile GamesUnreal Open Day 2017 UE4 for Mobile: The Future of High Quality Mobile Games
Unreal Open Day 2017 UE4 for Mobile: The Future of High Quality Mobile Games
Epic Games China
 
Developing Games For VR - Lessons Learned
Developing Games For VR - Lessons LearnedDeveloping Games For VR - Lessons Learned
Developing Games For VR - Lessons LearnedMartin Climatiano
 
Magictap overview
Magictap overviewMagictap overview
Magictap overview
MagicTap Solutions Pvt. Ltd
 
[1C7] Developing with Oculus
[1C7] Developing with Oculus[1C7] Developing with Oculus
[1C7] Developing with Oculus
NAVER D2
 
Improving the VR experience - VRST 2012
Improving the VR experience - VRST 2012Improving the VR experience - VRST 2012
Improving the VR experience - VRST 2012
Sebastien Kuntz
 
Dreaming of Superman: Designing Games for Virtual Reality
Dreaming of Superman: Designing Games for Virtual RealityDreaming of Superman: Designing Games for Virtual Reality
Dreaming of Superman: Designing Games for Virtual Reality
Keith Makse, PMP
 

What's hot (20)

Making High Quality Interactive VR with Unreal Engine Luis Cataldi
Making High Quality Interactive VR with Unreal Engine Luis CataldiMaking High Quality Interactive VR with Unreal Engine Luis Cataldi
Making High Quality Interactive VR with Unreal Engine Luis Cataldi
 
Making VR with Unreal Engine Luis Cataldi
Making VR with Unreal Engine  Luis CataldiMaking VR with Unreal Engine  Luis Cataldi
Making VR with Unreal Engine Luis Cataldi
 
Virtual Reality gaming: analysis of Yon Paradox development - Fabio Mosca - C...
Virtual Reality gaming: analysis of Yon Paradox development - Fabio Mosca - C...Virtual Reality gaming: analysis of Yon Paradox development - Fabio Mosca - C...
Virtual Reality gaming: analysis of Yon Paradox development - Fabio Mosca - C...
 
Dynamic Wounds on Animated Characters in UE4
Dynamic Wounds on Animated Characters in UE4Dynamic Wounds on Animated Characters in UE4
Dynamic Wounds on Animated Characters in UE4
 
Technology Pipedream -- Ivan Beram
Technology Pipedream --  Ivan BeramTechnology Pipedream --  Ivan Beram
Technology Pipedream -- Ivan Beram
 
Vision Summit 16 - Tips and Tricks for VR Game Development
Vision Summit 16 - Tips and Tricks for VR Game DevelopmentVision Summit 16 - Tips and Tricks for VR Game Development
Vision Summit 16 - Tips and Tricks for VR Game Development
 
IEEE VR-SEARIS 2014 Keynote - MiddleVR - Philosophy and architecture
IEEE VR-SEARIS 2014 Keynote - MiddleVR - Philosophy and architectureIEEE VR-SEARIS 2014 Keynote - MiddleVR - Philosophy and architecture
IEEE VR-SEARIS 2014 Keynote - MiddleVR - Philosophy and architecture
 
Alexey Savchenko, Unreal Engine
Alexey Savchenko, Unreal EngineAlexey Savchenko, Unreal Engine
Alexey Savchenko, Unreal Engine
 
Art and design for VR
Art and design for VRArt and design for VR
Art and design for VR
 
BYOD: Build Your First VR Experience with Unreal Engine
BYOD: Build Your First VR Experience with Unreal EngineBYOD: Build Your First VR Experience with Unreal Engine
BYOD: Build Your First VR Experience with Unreal Engine
 
Finding Monsters Adventure VR Experience
Finding Monsters Adventure VR ExperienceFinding Monsters Adventure VR Experience
Finding Monsters Adventure VR Experience
 
SAE AR/VR - The challenges of creating a VR application with Unity
SAE AR/VR - The challenges of creating a VR application with UnitySAE AR/VR - The challenges of creating a VR application with Unity
SAE AR/VR - The challenges of creating a VR application with Unity
 
SEARIS 2014 Keynote - MiddleVR - Philosophy and architecture
SEARIS 2014 Keynote - MiddleVR - Philosophy and architectureSEARIS 2014 Keynote - MiddleVR - Philosophy and architecture
SEARIS 2014 Keynote - MiddleVR - Philosophy and architecture
 
VR - Creating the ultimate reality
VR - Creating the ultimate realityVR - Creating the ultimate reality
VR - Creating the ultimate reality
 
Unreal Open Day 2017 UE4 for Mobile: The Future of High Quality Mobile Games
Unreal Open Day 2017 UE4 for Mobile: The Future of High Quality Mobile GamesUnreal Open Day 2017 UE4 for Mobile: The Future of High Quality Mobile Games
Unreal Open Day 2017 UE4 for Mobile: The Future of High Quality Mobile Games
 
Developing Games For VR - Lessons Learned
Developing Games For VR - Lessons LearnedDeveloping Games For VR - Lessons Learned
Developing Games For VR - Lessons Learned
 
Magictap overview
Magictap overviewMagictap overview
Magictap overview
 
[1C7] Developing with Oculus
[1C7] Developing with Oculus[1C7] Developing with Oculus
[1C7] Developing with Oculus
 
Improving the VR experience - VRST 2012
Improving the VR experience - VRST 2012Improving the VR experience - VRST 2012
Improving the VR experience - VRST 2012
 
Dreaming of Superman: Designing Games for Virtual Reality
Dreaming of Superman: Designing Games for Virtual RealityDreaming of Superman: Designing Games for Virtual Reality
Dreaming of Superman: Designing Games for Virtual Reality
 

Viewers also liked

将桌面级 VR 通过 Vulkan 和 UE4 移植到移动平台
将桌面级 VR 通过 Vulkan 和 UE4 移植到移动平台将桌面级 VR 通过 Vulkan 和 UE4 移植到移动平台
将桌面级 VR 通过 Vulkan 和 UE4 移植到移动平台
Ning Hu
 
Ue4灯光应用最佳实践
Ue4灯光应用最佳实践Ue4灯光应用最佳实践
Ue4灯光应用最佳实践
Ning Hu
 
CGDC 2016 Building paragon in UE4
CGDC 2016 Building paragon in UE4CGDC 2016 Building paragon in UE4
CGDC 2016 Building paragon in UE4
Ning Hu
 
A Real-Time Rendered Future
A Real-Time Rendered FutureA Real-Time Rendered Future
A Real-Time Rendered Future
Ning Hu
 
Future of unreal
Future of unreal Future of unreal
Future of unreal
Ning Hu
 
ProtoStar:“次世代”的移动端渲染
ProtoStar:“次世代”的移动端渲染ProtoStar:“次世代”的移动端渲染
ProtoStar:“次世代”的移动端渲染
Ning Hu
 
Kim libreri-siggraph 2015
Kim libreri-siggraph 2015Kim libreri-siggraph 2015
Kim libreri-siggraph 2015
Luis Cataldi
 
HUB:BLE-2 06 Day 2 Plenary
HUB:BLE-2 06  Day 2 PlenaryHUB:BLE-2 06  Day 2 Plenary
HUB:BLE-2 06 Day 2 Plenary
Space IDEAS Hub
 
Surviving in the Social Era
 Surviving in the Social Era Surviving in the Social Era
Surviving in the Social EraOscar Gonzales
 
Skytran jerry sanders
Skytran jerry sandersSkytran jerry sanders
Skytran jerry sanders
Véronique SEEL (Michaut)
 
The need for speed bloodhound presentation
The need for speed bloodhound presentationThe need for speed bloodhound presentation
The need for speed bloodhound presentation
Association for Project Management
 
The Bloodhound Supersonic Car: Innovation at 1,000 mph
The Bloodhound Supersonic Car: Innovation at 1,000 mphThe Bloodhound Supersonic Car: Innovation at 1,000 mph
The Bloodhound Supersonic Car: Innovation at 1,000 mph
Atkins
 
Water transport and_coastline
Water transport and_coastlineWater transport and_coastline
Water transport and_coastline
ewagobis
 
Unreal Engine (For Creating Games) Presentation
Unreal Engine (For Creating Games) PresentationUnreal Engine (For Creating Games) Presentation
Unreal Engine (For Creating Games) Presentation
Nitin Sharma
 
Presentation of Cambodian Railway Development & on Costing and Pricing of Rai...
Presentation of Cambodian Railway Development & on Costing and Pricing of Rai...Presentation of Cambodian Railway Development & on Costing and Pricing of Rai...
Presentation of Cambodian Railway Development & on Costing and Pricing of Rai...
Sok-Tharath CHREUNG
 
European Transport Networks
European Transport NetworksEuropean Transport Networks
European Transport Networkscaglarozpinar
 
Maglev - (bullet train)
Maglev - (bullet train)Maglev - (bullet train)
Maglev - (bullet train)
Arabindo Panda
 
Game development using monogame
Game development using monogameGame development using monogame
Game development using monogame
Power Wu
 
New Paper Patch Approach by Ed Wosika
New Paper Patch Approach by Ed WosikaNew Paper Patch Approach by Ed Wosika
New Paper Patch Approach by Ed Wosika
mtngun
 
Коварный Tracer Bullet Development
Коварный Tracer Bullet DevelopmentКоварный Tracer Bullet Development
Коварный Tracer Bullet Development
Mikalai Alimenkou
 

Viewers also liked (20)

将桌面级 VR 通过 Vulkan 和 UE4 移植到移动平台
将桌面级 VR 通过 Vulkan 和 UE4 移植到移动平台将桌面级 VR 通过 Vulkan 和 UE4 移植到移动平台
将桌面级 VR 通过 Vulkan 和 UE4 移植到移动平台
 
Ue4灯光应用最佳实践
Ue4灯光应用最佳实践Ue4灯光应用最佳实践
Ue4灯光应用最佳实践
 
CGDC 2016 Building paragon in UE4
CGDC 2016 Building paragon in UE4CGDC 2016 Building paragon in UE4
CGDC 2016 Building paragon in UE4
 
A Real-Time Rendered Future
A Real-Time Rendered FutureA Real-Time Rendered Future
A Real-Time Rendered Future
 
Future of unreal
Future of unreal Future of unreal
Future of unreal
 
ProtoStar:“次世代”的移动端渲染
ProtoStar:“次世代”的移动端渲染ProtoStar:“次世代”的移动端渲染
ProtoStar:“次世代”的移动端渲染
 
Kim libreri-siggraph 2015
Kim libreri-siggraph 2015Kim libreri-siggraph 2015
Kim libreri-siggraph 2015
 
HUB:BLE-2 06 Day 2 Plenary
HUB:BLE-2 06  Day 2 PlenaryHUB:BLE-2 06  Day 2 Plenary
HUB:BLE-2 06 Day 2 Plenary
 
Surviving in the Social Era
 Surviving in the Social Era Surviving in the Social Era
Surviving in the Social Era
 
Skytran jerry sanders
Skytran jerry sandersSkytran jerry sanders
Skytran jerry sanders
 
The need for speed bloodhound presentation
The need for speed bloodhound presentationThe need for speed bloodhound presentation
The need for speed bloodhound presentation
 
The Bloodhound Supersonic Car: Innovation at 1,000 mph
The Bloodhound Supersonic Car: Innovation at 1,000 mphThe Bloodhound Supersonic Car: Innovation at 1,000 mph
The Bloodhound Supersonic Car: Innovation at 1,000 mph
 
Water transport and_coastline
Water transport and_coastlineWater transport and_coastline
Water transport and_coastline
 
Unreal Engine (For Creating Games) Presentation
Unreal Engine (For Creating Games) PresentationUnreal Engine (For Creating Games) Presentation
Unreal Engine (For Creating Games) Presentation
 
Presentation of Cambodian Railway Development & on Costing and Pricing of Rai...
Presentation of Cambodian Railway Development & on Costing and Pricing of Rai...Presentation of Cambodian Railway Development & on Costing and Pricing of Rai...
Presentation of Cambodian Railway Development & on Costing and Pricing of Rai...
 
European Transport Networks
European Transport NetworksEuropean Transport Networks
European Transport Networks
 
Maglev - (bullet train)
Maglev - (bullet train)Maglev - (bullet train)
Maglev - (bullet train)
 
Game development using monogame
Game development using monogameGame development using monogame
Game development using monogame
 
New Paper Patch Approach by Ed Wosika
New Paper Patch Approach by Ed WosikaNew Paper Patch Approach by Ed Wosika
New Paper Patch Approach by Ed Wosika
 
Коварный Tracer Bullet Development
Коварный Tracer Bullet DevelopmentКоварный Tracer Bullet Development
Коварный Tracer Bullet Development
 

Similar to Going off the rails

Unreal Open Day 2017 The Art of Robo Recall
Unreal Open Day 2017 The Art of Robo RecallUnreal Open Day 2017 The Art of Robo Recall
Unreal Open Day 2017 The Art of Robo Recall
Epic Games China
 
Aesthetec at MEIC5, augmenting the world
Aesthetec at MEIC5, augmenting the worldAesthetec at MEIC5, augmenting the world
Aesthetec at MEIC5, augmenting the world
Aesthetec Studio
 
Virtual Reality for Training, Learning, Education and Visualisation
Virtual Reality for Training, Learning, Education and VisualisationVirtual Reality for Training, Learning, Education and Visualisation
Virtual Reality for Training, Learning, Education and Visualisation
Daden Limited
 
CES 2018 VRAR
CES 2018 VRARCES 2018 VRAR
CES 2018 VRAR
James D.B. Wang, PhD
 
Kalan Ray (Magnopus): Bringing the Land of the Dead to Life: The Making of Co...
Kalan Ray (Magnopus): Bringing the Land of the Dead to Life: The Making of Co...Kalan Ray (Magnopus): Bringing the Land of the Dead to Life: The Making of Co...
Kalan Ray (Magnopus): Bringing the Land of the Dead to Life: The Making of Co...
AugmentedWorldExpo
 
Make believe - Droidcon UK 2015
Make believe - Droidcon UK 2015Make believe - Droidcon UK 2015
Make believe - Droidcon UK 2015
Shanee Nishry
 
2 d gameplaytutorial
2 d gameplaytutorial2 d gameplaytutorial
2 d gameplaytutorialunityshare
 
VR bestpractices
VR bestpracticesVR bestpractices
VR bestpractices
Jaroslav Stehlík
 
Interactive Scene
Interactive SceneInteractive Scene
Interactive Scene
Apurva Gupta
 
Web Animations
Web AnimationsWeb Animations
Web Animations
bsuresh2
 
Learning The Rules to Break Them: Designing for the Future of VR
Learning The Rules to Break Them: Designing for the Future of VRLearning The Rules to Break Them: Designing for the Future of VR
Learning The Rules to Break Them: Designing for the Future of VR
Michael Harris
 
TalkUX - UX in VR - UNIT9
TalkUX - UX in VR - UNIT9TalkUX - UX in VR - UNIT9
TalkUX - UX in VR - UNIT9
Laura Cortes
 
VR and google Cardboard
VR and google CardboardVR and google Cardboard
VR and google Cardboard
Houssem Eddine LASSOUED
 
Sleepy Hollow & Narrative In VR
Sleepy Hollow & Narrative In VRSleepy Hollow & Narrative In VR
Sleepy Hollow & Narrative In VR
FITC
 
Steve Dann (Amplified Robot): Escape Room VR
Steve Dann (Amplified Robot): Escape Room VRSteve Dann (Amplified Robot): Escape Room VR
Steve Dann (Amplified Robot): Escape Room VR
AugmentedWorldExpo
 
Virtual arts presentation - Casual Connect Berlin 2017 - Getting your VR game...
Virtual arts presentation - Casual Connect Berlin 2017 - Getting your VR game...Virtual arts presentation - Casual Connect Berlin 2017 - Getting your VR game...
Virtual arts presentation - Casual Connect Berlin 2017 - Getting your VR game...
Nizar Romdan
 
Unity introduction for programmers
Unity introduction for programmersUnity introduction for programmers
Unity introduction for programmers
Noam Gat
 
Unit vi
Unit viUnit vi
Unit vi
swapnasalil
 
eng.pptx
eng.pptxeng.pptx
eng.pptx
Zuine
 

Similar to Going off the rails (20)

Unreal Open Day 2017 The Art of Robo Recall
Unreal Open Day 2017 The Art of Robo RecallUnreal Open Day 2017 The Art of Robo Recall
Unreal Open Day 2017 The Art of Robo Recall
 
Aesthetec at MEIC5, augmenting the world
Aesthetec at MEIC5, augmenting the worldAesthetec at MEIC5, augmenting the world
Aesthetec at MEIC5, augmenting the world
 
Virtual Reality for Training, Learning, Education and Visualisation
Virtual Reality for Training, Learning, Education and VisualisationVirtual Reality for Training, Learning, Education and Visualisation
Virtual Reality for Training, Learning, Education and Visualisation
 
CES 2018 VRAR
CES 2018 VRARCES 2018 VRAR
CES 2018 VRAR
 
Kalan Ray (Magnopus): Bringing the Land of the Dead to Life: The Making of Co...
Kalan Ray (Magnopus): Bringing the Land of the Dead to Life: The Making of Co...Kalan Ray (Magnopus): Bringing the Land of the Dead to Life: The Making of Co...
Kalan Ray (Magnopus): Bringing the Land of the Dead to Life: The Making of Co...
 
Make believe - Droidcon UK 2015
Make believe - Droidcon UK 2015Make believe - Droidcon UK 2015
Make believe - Droidcon UK 2015
 
2 d gameplaytutorial
2 d gameplaytutorial2 d gameplaytutorial
2 d gameplaytutorial
 
VR bestpractices
VR bestpracticesVR bestpractices
VR bestpractices
 
Interactive Scene
Interactive SceneInteractive Scene
Interactive Scene
 
Web Animations
Web AnimationsWeb Animations
Web Animations
 
Learning The Rules to Break Them: Designing for the Future of VR
Learning The Rules to Break Them: Designing for the Future of VRLearning The Rules to Break Them: Designing for the Future of VR
Learning The Rules to Break Them: Designing for the Future of VR
 
TalkUX - UX in VR - UNIT9
TalkUX - UX in VR - UNIT9TalkUX - UX in VR - UNIT9
TalkUX - UX in VR - UNIT9
 
VR and google Cardboard
VR and google CardboardVR and google Cardboard
VR and google Cardboard
 
Animation
AnimationAnimation
Animation
 
Sleepy Hollow & Narrative In VR
Sleepy Hollow & Narrative In VRSleepy Hollow & Narrative In VR
Sleepy Hollow & Narrative In VR
 
Steve Dann (Amplified Robot): Escape Room VR
Steve Dann (Amplified Robot): Escape Room VRSteve Dann (Amplified Robot): Escape Room VR
Steve Dann (Amplified Robot): Escape Room VR
 
Virtual arts presentation - Casual Connect Berlin 2017 - Getting your VR game...
Virtual arts presentation - Casual Connect Berlin 2017 - Getting your VR game...Virtual arts presentation - Casual Connect Berlin 2017 - Getting your VR game...
Virtual arts presentation - Casual Connect Berlin 2017 - Getting your VR game...
 
Unity introduction for programmers
Unity introduction for programmersUnity introduction for programmers
Unity introduction for programmers
 
Unit vi
Unit viUnit vi
Unit vi
 
eng.pptx
eng.pptxeng.pptx
eng.pptx
 

Recently uploaded

CME397 Surface Engineering- Professional Elective
CME397 Surface Engineering- Professional ElectiveCME397 Surface Engineering- Professional Elective
CME397 Surface Engineering- Professional Elective
karthi keyan
 
DESIGN A COTTON SEED SEPARATION MACHINE.docx
DESIGN A COTTON SEED SEPARATION MACHINE.docxDESIGN A COTTON SEED SEPARATION MACHINE.docx
DESIGN A COTTON SEED SEPARATION MACHINE.docx
FluxPrime1
 
Nuclear Power Economics and Structuring 2024
Nuclear Power Economics and Structuring 2024Nuclear Power Economics and Structuring 2024
Nuclear Power Economics and Structuring 2024
Massimo Talia
 
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdfHybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
fxintegritypublishin
 
space technology lecture notes on satellite
space technology lecture notes on satellitespace technology lecture notes on satellite
space technology lecture notes on satellite
ongomchris
 
Architectural Portfolio Sean Lockwood
Architectural Portfolio Sean LockwoodArchitectural Portfolio Sean Lockwood
Architectural Portfolio Sean Lockwood
seandesed
 
AKS UNIVERSITY Satna Final Year Project By OM Hardaha.pdf
AKS UNIVERSITY Satna Final Year Project By OM Hardaha.pdfAKS UNIVERSITY Satna Final Year Project By OM Hardaha.pdf
AKS UNIVERSITY Satna Final Year Project By OM Hardaha.pdf
SamSarthak3
 
WATER CRISIS and its solutions-pptx 1234
WATER CRISIS and its solutions-pptx 1234WATER CRISIS and its solutions-pptx 1234
WATER CRISIS and its solutions-pptx 1234
AafreenAbuthahir2
 
Pile Foundation by Venkatesh Taduvai (Sub Geotechnical Engineering II)-conver...
Pile Foundation by Venkatesh Taduvai (Sub Geotechnical Engineering II)-conver...Pile Foundation by Venkatesh Taduvai (Sub Geotechnical Engineering II)-conver...
Pile Foundation by Venkatesh Taduvai (Sub Geotechnical Engineering II)-conver...
AJAYKUMARPUND1
 
weather web application report.pdf
weather web application report.pdfweather web application report.pdf
weather web application report.pdf
Pratik Pawar
 
Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)
Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)
Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)
MdTanvirMahtab2
 
AP LAB PPT.pdf ap lab ppt no title specific
AP LAB PPT.pdf ap lab ppt no title specificAP LAB PPT.pdf ap lab ppt no title specific
AP LAB PPT.pdf ap lab ppt no title specific
BrazilAccount1
 
Immunizing Image Classifiers Against Localized Adversary Attacks
Immunizing Image Classifiers Against Localized Adversary AttacksImmunizing Image Classifiers Against Localized Adversary Attacks
Immunizing Image Classifiers Against Localized Adversary Attacks
gerogepatton
 
Fundamentals of Electric Drives and its applications.pptx
Fundamentals of Electric Drives and its applications.pptxFundamentals of Electric Drives and its applications.pptx
Fundamentals of Electric Drives and its applications.pptx
manasideore6
 
power quality voltage fluctuation UNIT - I.pptx
power quality voltage fluctuation UNIT - I.pptxpower quality voltage fluctuation UNIT - I.pptx
power quality voltage fluctuation UNIT - I.pptx
ViniHema
 
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
Dr.Costas Sachpazis
 
Student information management system project report ii.pdf
Student information management system project report ii.pdfStudent information management system project report ii.pdf
Student information management system project report ii.pdf
Kamal Acharya
 
English lab ppt no titlespecENG PPTt.pdf
English lab ppt no titlespecENG PPTt.pdfEnglish lab ppt no titlespecENG PPTt.pdf
English lab ppt no titlespecENG PPTt.pdf
BrazilAccount1
 
Planning Of Procurement o different goods and services
Planning Of Procurement o different goods and servicesPlanning Of Procurement o different goods and services
Planning Of Procurement o different goods and services
JoytuBarua2
 
在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
obonagu
 

Recently uploaded (20)

CME397 Surface Engineering- Professional Elective
CME397 Surface Engineering- Professional ElectiveCME397 Surface Engineering- Professional Elective
CME397 Surface Engineering- Professional Elective
 
DESIGN A COTTON SEED SEPARATION MACHINE.docx
DESIGN A COTTON SEED SEPARATION MACHINE.docxDESIGN A COTTON SEED SEPARATION MACHINE.docx
DESIGN A COTTON SEED SEPARATION MACHINE.docx
 
Nuclear Power Economics and Structuring 2024
Nuclear Power Economics and Structuring 2024Nuclear Power Economics and Structuring 2024
Nuclear Power Economics and Structuring 2024
 
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdfHybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
Hybrid optimization of pumped hydro system and solar- Engr. Abdul-Azeez.pdf
 
space technology lecture notes on satellite
space technology lecture notes on satellitespace technology lecture notes on satellite
space technology lecture notes on satellite
 
Architectural Portfolio Sean Lockwood
Architectural Portfolio Sean LockwoodArchitectural Portfolio Sean Lockwood
Architectural Portfolio Sean Lockwood
 
AKS UNIVERSITY Satna Final Year Project By OM Hardaha.pdf
AKS UNIVERSITY Satna Final Year Project By OM Hardaha.pdfAKS UNIVERSITY Satna Final Year Project By OM Hardaha.pdf
AKS UNIVERSITY Satna Final Year Project By OM Hardaha.pdf
 
WATER CRISIS and its solutions-pptx 1234
WATER CRISIS and its solutions-pptx 1234WATER CRISIS and its solutions-pptx 1234
WATER CRISIS and its solutions-pptx 1234
 
Pile Foundation by Venkatesh Taduvai (Sub Geotechnical Engineering II)-conver...
Pile Foundation by Venkatesh Taduvai (Sub Geotechnical Engineering II)-conver...Pile Foundation by Venkatesh Taduvai (Sub Geotechnical Engineering II)-conver...
Pile Foundation by Venkatesh Taduvai (Sub Geotechnical Engineering II)-conver...
 
weather web application report.pdf
weather web application report.pdfweather web application report.pdf
weather web application report.pdf
 
Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)
Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)
Industrial Training at Shahjalal Fertilizer Company Limited (SFCL)
 
AP LAB PPT.pdf ap lab ppt no title specific
AP LAB PPT.pdf ap lab ppt no title specificAP LAB PPT.pdf ap lab ppt no title specific
AP LAB PPT.pdf ap lab ppt no title specific
 
Immunizing Image Classifiers Against Localized Adversary Attacks
Immunizing Image Classifiers Against Localized Adversary AttacksImmunizing Image Classifiers Against Localized Adversary Attacks
Immunizing Image Classifiers Against Localized Adversary Attacks
 
Fundamentals of Electric Drives and its applications.pptx
Fundamentals of Electric Drives and its applications.pptxFundamentals of Electric Drives and its applications.pptx
Fundamentals of Electric Drives and its applications.pptx
 
power quality voltage fluctuation UNIT - I.pptx
power quality voltage fluctuation UNIT - I.pptxpower quality voltage fluctuation UNIT - I.pptx
power quality voltage fluctuation UNIT - I.pptx
 
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
Sachpazis:Terzaghi Bearing Capacity Estimation in simple terms with Calculati...
 
Student information management system project report ii.pdf
Student information management system project report ii.pdfStudent information management system project report ii.pdf
Student information management system project report ii.pdf
 
English lab ppt no titlespecENG PPTt.pdf
English lab ppt no titlespecENG PPTt.pdfEnglish lab ppt no titlespecENG PPTt.pdf
English lab ppt no titlespecENG PPTt.pdf
 
Planning Of Procurement o different goods and services
Planning Of Procurement o different goods and servicesPlanning Of Procurement o different goods and services
Planning Of Procurement o different goods and services
 
在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
在线办理(ANU毕业证书)澳洲国立大学毕业证录取通知书一模一样
 

Going off the rails

  • 1. Going Off the Rails: The Making of Bullet Train Ryan Vance Senior Rendering Programmer, Epic Games
  • 2. HOW DID WE GET HERE?
  • 3. Elemental VR Released at E3 2013 Our first foray into getting UE4 to render stereoscopic images and VR hardware support. We ported the “Elemental” tech demo which debuted at GDC that year.
  • 4. Strategy VR Released at CES 2014 Using the Crystal Cove prototype, we explored scale and positional movement in VR by adapting existing game content.
  • 5. Couch Knights Released at GDC 2014 Using the DK2, we explored social spaces in VR, as well as simple gameplay.
  • 6. Showdown Released at Oculus Connect 2014 Designed to max out the new Nvidia 980 hardware, while running at 90Hz on the new Crescent Bay hardware. Content was adapted from the “Samaritan” and “Infiltrator” demos.
  • 7. Thief in the Shadows Released at GDC 2015 Collaboration with Weta Digital’s R&D team to understand how film content could be adapted to real time VR experiences.
  • 8. What do all of our previous efforts have in common?
  • 9. What do all of our previous efforts have in common? Adapted Content.
  • 10. We have something new in the Oculus Touch, so we should create something new on the content side.
  • 11. Bullet Train Released at Oculus Connect 2015 Our first foray into serious, only- possible-in-VR gameplay using motion controllers.
  • 12.
  • 13. Design Considerations for Bullet Train: ● Raise the visual bar over “Showdown” ● …while running on the Oculus recommended spec hardware. ● Interesting environment / architecture ● Motion Controls ● Test the engine, rendering improvements
  • 14. So, what should we do?
  • 15. Airports (RDU in Raleigh, NC)
  • 16. Airports (RDU in Raleigh, NC)
  • 19. Early Versions of the Environment
  • 20. Early Versions of the Environment
  • 21. Mix and Match! While the majority of the assets were custom-built for Bullet Train, we did buy some assets, and cleaned them up for use in the level ● Train Exterior ● Weapon Pack ● Character reskinned from “Infiltrator”
  • 22. Looks good, now what should we do here?
  • 23. Option 1: Hogan’s Alley A standard “shooting gallery” style gameplay Fun, supports multiplayer easily, but staying in one place is boring!
  • 24. Option 2: Action Film! Move through the world, taking out enemies. Inspired by action movie “one-shots” like Oldboy and Hard Boiled Hard Boiled (1992) Oldboy (2003)
  • 25. Option 2: Action Film! The moving “one-shot” is a classic technique for action sequences For us, it solves the “movement problem,” because the camera is moving through the action continuously. Oldboy (2003)
  • 26. Anatomy of a Chain 1. Player has two enemies to engage
  • 27. Anatomy of a Chain 2. Player tosses weapon at enemy
  • 28. Anatomy of a Chain 3. Player teleports to the downed enemy, grabs gun out of the air
  • 29. Anatomy of a Chain 4. Player uses the same gun to shoot the next enemy
  • 30. Anatomy of a Chain
  • 31. Option 2: Action Film! Advantages: • Movement through the environment keeps things interesting • Constrained in terms of content, animation, and AI scripting needs • “Chaining” gameplay
  • 32. What happened in practice?
  • 33. When you’re stationary and interacting with objects in front of you in the virtual world, the two trackers have line-of-sight to your HMD and both controllers. No problems! Option 2: Action Film!
  • 34. When the player is moving past their targets, it’s easy to over-rotate! This causes occlusion of the hands, and breaks tracking. Option 2: Action Film!
  • 35. Option 2: Action Film! No good! But what did we learn? • Movement keeps things fun! • Like in “Showdown,” careful non-player controlled movement is fun – Start them moving right away, but fade in! • We need to control both angle and engagement distance
  • 36. Well, at least we learned something. What now?
  • 37. Option 3: Magic! Let’s take the best parts of the previous methods: • Stationary Shooter: controlled distance, always facing the action • Action Film: movement around the environment, exciting action
  • 38. Option 3: Magic! Since you’re already a disembodied set of hands, why not let you teleport? Gives us control where the player goes: – Limits the content needed – Controls the direction they’re facing – Less overwhelming to players
  • 39. Option 3: Magic! Place teleporters so that the player always face the action.
  • 40. Option 3: Magic! It works! We use trickery to keep the action in the center of the map, so the player is always facing what’s most important. But, there were a few tricks we needed to add to make it feel right…
  • 41. Option 3: Magic! “Teleport Blink” • A brief fade to white cues the player • Sound helps immensely! • We left a trail behind to show you where you’ve come from
  • 42. Option 3: Magic! Teleporter Selection • Originally, players looked at what they wanted to teleport to, but that doesn’t work in frantic combat • Moved teleporter control to the hand, with snapping, which lets players point at targets
  • 43. But…how do we get that awesome action movie feel? Teleporters aren’t close to the enemies…
  • 44. Option 3: Magic! In order to preserve the hand-to-hand engagement distances, we added the “stealth teleport.” Allows you to “reach out and punch someone,” as well as some cool combos. The Raid: Redemption(2011)
  • 45. Option 3: Magic! Teleporters were a nice solution, but they’re not without their own issues. • Re-orientation can still confuse players • People still want to move around their “local space” • Action doesn’t always keep in the center • People simply forget they can do it.
  • 46. So, now we know how we’re going to get around, but what about gameplay?
  • 47. We have guns, grenades, and rockets stubbed in, so how do we make it awesome?
  • 48. In short, we need to make you feel like a badass. The Matrix (1999)
  • 49. Failure is not an option! Very few have used VR, and even less have used motion controls. ● No death, only more badass ● Lots of invisible helpers
  • 50. Anatomy of a Throw Not many people are great at throwing things in real life. However, throwing something and hitting your mark is really satisfying!
  • 51.
  • 52.
  • 53.
  • 54.
  • 55.
  • 56.
  • 57.
  • 58.
  • 59.
  • 60.
  • 61.
  • 62.
  • 63. Anatomy of a Throw ● Take the view, and trace the plausible targets ● Compute path based on the player’s hand velocity and angle ● Try a few different arcs to get it to the destination ● Don’t make it obvious!
  • 64. Rocket Throwing The original idea was for players to grab the rockets, aim them, and then let them fly. Some people got this, other failed spectacularly.
  • 65.
  • 66.
  • 67.
  • 68.
  • 69.
  • 70. This worked great when designers played the game!
  • 71. This worked great when designers played the game! But when other people played…
  • 72.
  • 73. Most often, when players failed, they were trying to throw the rocket overhand. Solution: Let them throw rockets!
  • 74. The Mechanics of Rocket Throwing ● Player grabs the rocket ● Average the velocity of the rocket for the past few frames to get the “intent” ● Hysteresis is your friend (and a great word) ● Add visual flourishes to make it feel less controlled
  • 75. This got most of the people most of the way there… But some people still had some trouble hitting the target. What do we do?
  • 76.
  • 77.
  • 78.
  • 80. “The longer you suck, the less you suck!”
  • 81. IT LOOKS GOOD, BUT HOW DOES IT ALL RUN?
  • 83. With our highly reflective environment, you need reflections to make objects feel grounded. Faked Reflections
  • 84. Let’s leverage an old trick! Use underground proxy geometry (in this case, a quad), so it skews the same way as the actual object. Texture it with a capture of the object, and then modify the reflection using the surface data from the Gbuffer. Faked Reflections
  • 85. While we pay a higher base cost for the GBuffer, it lets us leverage all that information for tricks such as this.
  • 86. The same technique works for characters, too! Faked Reflections
  • 87. In this case, we use two static meshes attached to the feet as our proxies. In the vertex shader, we use proxy position compared with the actor position to line up the proxy geometry to the view, to allow for cheap “animation” Faked Reflections
  • 88. We then blended between two captures of the leg, one forward and one to the side, in the vertex shader, based on the angle between the leg and the camera Faked Reflections
  • 89. Flattening Materials Reflections on the enemy character were now cheap, but his material was most certainly not! Adapting a trick from mobile, we “flattened” the materials by baking multiple materials down to just two.
  • 91. Before: 5 materials, ~270 inst. / mat After: 2 materials, 77 inst. / mat Flattening Materials
  • 94. WHAT HAPPENS WHEN CONTENT OPTIMIZATION IS NOT ENOUGH?
  • 95. Because we had ambitious visual goals, mere content optimization wasn’t enough. Time to implement some general optimizations at the engine level. • Hidden (and Visible!) Area Meshes • Instanced Stereo Rendering
  • 96. Hidden and Visible Area Meshes There’s a lot of wasted space that you can’t see!
  • 97. Hidden and Visible Area Meshes Hidden area meshes were already covered by Valve’s Alex Vlachos at GDC 2015. Here’s how it works…
  • 98. Hidden and Visible Area Meshes Draw the hidden area mesh at the near plane before the depth pre- pass and the base pass
  • 99. Hidden and Visible Area Meshes Next, draw the scene as normal. The GPU will reject pixels already masked out by the mesh, because they depth fail.
  • 100. Unfortunately, we weren’t seeing the 10 – 14% gains that others have seen by doing that. But, we pay a lot in post- processing time! Hidden and Visible Area Meshes
  • 101. Use the inverse of the hidden area mesh, and use that for post processing, instead of a quad. Hidden and Visible Area Meshes
  • 102. Much better! With the two techniques combined, we were seeing: Oculus ~0.25 - 0.3 ms Vive ~0.3 - 0.4 ms PSVR ~1.0 ms Hidden and Visible Area Meshes
  • 103. Instanced Stereo Rendering In our old way of stereo rendering, we’d duplicate every draw call, which is easy to implement, but really taxes the CPU
  • 104. Timothy Wilson proposed a better technique at SVVR in 2015. Instead of duplicating everything, let the hardware do the instancing for us. Each draw call draws both eyes at the same time. We save CPU time! Instanced Stereo Rendering
  • 105. By using instancing, we make one draw call draw two times, using the left and right eye transforms. Instanced Stereo Rendering
  • 106. To see how this works step-by-step, let’s draw this simple test scene using instancing. Instanced Stereo Rendering
  • 107. Draw geometry twice using instancing. One instance gets the left eye uniforms, while the other gets the right eye uniforms. Instanced Stereo Rendering
  • 108. Next, since we’re drawing to half the view port, scale things by half horizontally. Instanced Stereo Rendering
  • 109. Then, translate each eye so that they’re in the proper left and right eye positions. Instanced Stereo Rendering
  • 110. Finally, clip the left and right eyes at the center border using user clipping planes. Instanced Stereo Rendering
  • 111. This was a huge win! On Bullet Train, this saved about 1.5 ms on the CPU, and 0.75 ms on the GPU! Showdown had about 500 unique draw calls, where Bullet Train had ~2300! Instanced Stereo Rendering
  • 112. Special Thanks: Nick Whiting, Nick Donaldson, Chad Taylor, Ryan Brucks, Jerome Platteaux, Tommy Jacob, Artem Bolgar, and the rest of the Bullet Train team! Thanks!