deep dive: amazon lumberyard & amazon gamelift
TRANSCRIPT
Chris Brunning, Solutions Architect, Lumberyard
AWS Summit, London. 7th July 2016
Deep Dive: Lumberyard and GameLift
Lumberyard: Origins
Lumberyard is a fusion of technology
• Double Helix Game Engine
• Amazon Web Services
• CryEngine 3.8
• Twitch
• 3+ million lines of code!
We’re making things better
• Developing new, better workflows
• Bringing in proven, high-performance systems
• Adding cloud-connected, community, and commerce features
Lumberyard Stack
• Cloud, Community Commerce
• Game uses services through APIs
exposed by the Engine
• Services used by the Editor, Engine,
and Game
CLOUD
COMMUNITY
COMMERCE
GAME
ENGINE
PC
CO
NS
OLE
MO
BIL
E
EDITOR
VS
2013
MA
X /
MA
YA
PH
OT
OS
HO
P
Lumberyard Stack
• Client
• Editor used by developers to build a
Game on the Engine systems
• Engine technology abstracts
platforms from developers
CLOUD
COMMUNITY
COMMERCE
GAME
ENGINE
PC
CO
NS
OLE
MO
BIL
E
Runtime
EDITOR
VS
2013
MA
X /
MA
YA
PH
OT
OS
HO
P
Development
Build, visualize, and customize UI elements
• Artist-friendly tools
• Large collection of customizable UI components
• Key-frame animation and tweening system
• Resolution-independent & mobile-optimized
2D & User Interfaces
• Visual scripting and C++ support
• Layout support
• Animate any property
• Localization Support
Game Scripting
The right tool for the job
Native C++• When control and performance are required
• Most familiar debugging and profiling environment
• Look for live reloading in a future version of Lumberyard
1
Lua scripting• A middle ground suited for technical designers and gameplay programmers
• Deployed in many games and game engines for its execution speed, ease of use, and customizability
• Abstracted to support Lua 5.1, 5.2, and 5.3. Lua JIT can be dropped in with little effort
• Build entity components directly in Lua
• Tools for editing and debugging
2
Flow Graph visual scripting• The best choice for rapid prototyping and level design
• Visual, node-based scripting solution
• Foundation for Cloud Canvas, improving iteration time for features with cloud requirements
• Integrated visual debugging
3
4
A Flexible way to Configure and Manage Entities
• Build complex game entities by composing small modules
• Manage their components and their properties visually
• Write new components in C++, Lua, and -in the future, FlowGraph
• Lua and FlowGraph scripting components exist
• Reflection, automatic serialization, and message-passing
• Support for nested prefabs and components!
Component/Entity Framework
Asset Processor & Virtual File System
Improved iteration time across platforms
Asset Processor
• Runs as a background service
• Edit a level immediately as assets stream in
• See your changes to source assets in the Editor immediately with no action required
Virtual File System
• Map assets on a development PC to a game running on target hardware
• Lays the groundwork for hot reloading on all platforms
• Faster iteration on target platform –no more deploy/copy step
• Interface enables data mining and analytics on file access
• Transparent, part of the Asset Processor -no additional setup needed
Brighter Whites, Deeper Blacks
• Physically-based rendering workflows are already set up for HDR content
• Display a larger contrast ratio and wider color gamut than ever before
• Deliver a richer and more vibrant experience than last-gen display tech
HDR Display Support
All you need is an HDR display. Download Lumberyard, enable an option in the
tone-mapper, and you’re done! Our tone-mapping step supports Dolby Vision, and
will support HDR10 when the standard is ready.
Particle System Editor
Create and simulate explosions, fire, sparks, and other VFX
• Visual construction of emitters
• Gradient editor
• Spline playback
• Integration with Component system
• Interact with emitters through native code, or scripting
• GPU-accelerated playback with collision support
Get up and Running Faster
Full Source Download & Installer
Lumberyard Launcher
• Lumberyard is a free and comes with full source
• No subscription fees, no royalties, no special “source code license”
• Binaries and source for Editor, Engine, and tools are included in the installer
Get up and Running Faster
Lumberyard Launcher ensures you have the necessary
runtime software and SDKs installed to build and run
Lumberyard. The Lumberyard Launcher detects
missing components and helps you to install those and
other software required for your role on a game team.
• Customize for your project’s dependencies
• Dependencies calculated based on workflow requirements
• No developer attention required to set up new workstations
Project Configurator
• Create and switch between Lumberyard projects
• Specify which Gems (extensions) apply to each project
Share and Reuse Modules
Gems
Lumberyard includes 18 functional components that you can add or
remove easily, such as weather effects, an ambient creature system, a
camera framework, and more. It’s straightforward to build your own
Gems, and middleware providers have already begun to do that for
Lumberyard.
Exporter Workflow
Lumberyard provides new exporter toolsets for Autodesk Maya and Autodesk 3D
Studio Max 2014, 2015, and 2016. These toolsets allow the export of static and
skinned geometry, skeletons, materials, and animation. Number of steps to export
content to Lumberyard have been reduced from 29 to 2.
From Modeling Package to Editor
FBX Importer Workflow
Customers told us that they wanted support for more modeling packages, and we
listened. We’ve added support for importing the industry-neutral FBX format from
directly within Lumberyard. Better yet –external modifications to the source asset
will appear immediately inside of the Editor.
Mannequin
The Mannequin interactive animation tool organizes and sequences animation clips
into logical states (called fragments). Mannequin then executes complex logic to
determine which fragment is context-appropriate and synchronizes the animation
with gameplay systems, FX, and sounds.
Bring your Characters to Life
Geppetto
Lumberyard’s character tool, Geppetto, combines animation, attachments, and
physics simulations along with blendspace and animation layering. You can use
Geppetto to assemble characters, easily swap out meshes on your characters by
using attachments, and create realistic secondary animation with physics
simulations
Trackview
Lumberyard’s Trackview tool enables animators to build non-linear content for
games, movies, and television. Animate camera cuts, camera movement, character
animation and movement, sound effects, and soon: any component property.
Linear Content tools for games, movies, and television
What are Examples of a “Cloud Connected
Feature”?
Leaderboards & Achievements
Cloud Save
Storing Character Stats & Inventory
Message of the Day & Daily Challenges
Downloadable Content
Newsticker
User-Generated Content (“UGC”)
Server-Authenticated Transactions
What Problems are Game Developers Facing?
Difficult to Iterate on Connected Features
Design
Backlog
Implement
Test
Cloud Canvas Core Concepts
Amazon Simple Storage Service
(S3)
• Cloud storage location for files.
• Create a folder hierarchy similar to what’s on your local drive.
• Uses a resource called a bucket.2
Cloud Canvas Core Concepts
Amazon DynamoDB
• Database for storing arbitrary data.
• Associate data with a key, like a player ID.
• Uses a resource called a table.
2
Cloud Canvas Core Concepts
AWS Lambda
• Execute cloud-based code. Without a server!
• Write code using Python, Node.JS, or Java.
• Uses a resource called a function.
Cloud Canvas Core Concepts
Amazon Cognito
• Authenticate players, either anonymously or via Login with Amazon,
Facebook or Google.
• Provides unique identifier to track them across sessions, devices.
• Uses a resource called an identity pool.
2
Cloud Canvas Core Concepts
Cloud Canvas acts like the glue between Lumberyard and the Cloud:
• Define and manage your cloud resources.
• Game communicates with resources through Flow Graph & C++.
• Team collaboration and iteration.
• Not a black box service.
Client – Engine Platforms
PC
• Windows 7 and above
PlayStation 4, Xbox One
• Request access as a verified developer
Android, iOS
• High end device support in preview
Virtual Reality
• Oculus VR & Vive
Best-in-class Mobile Rendering
• Real-time light and shadow –including self-shadows
• Caustics
• Reflections
• Deferred decals
• Bilinear up-scaling
• Z Pre-pass enabled
• Portal/occlusion system
• Procedural vegetation
Features to build the next Top Grossing Mobile Game
Cloud Canvas
Use Cloud Canvas to visually script common features like user authentication, daily
gifts, leaderboards, inventory, currency, experience, quest progress, gachapon, and
other common mobile game features.
VR and Amazon Games
A holistic approach to VR content
Hardware SupportLumberyard supports the latest VR hardware and SDKs –Oculus Rift and HTC Vive as of GDC.1
Editor SupportLumberyard makes it easy to quickly do VR out of the box without modifying the engine. You can build anything from demos to full
AAA VR experiences with the Flow Graph nodes we’ve provided for common VR tasks. We’ll be adding support for 3D content
acquisition and manipulation directly in-editor in a future Lumberyard version.
2
Engine SupportLumberyard systems are being optimized and re-written with high-performance VR front of mind. 3
Content SupportAmazon Games has big plans for VR and 3D content in general. Stay tuned!4
Allegorithmic Substance Integration
Editor Support
Import Substance files published from Allegorithmic products like
Substance Designer into Lumberyard. These become procedural
materials inside Lumberyard and can be used on objects and terrains,
and modified using the integrated Substance Editor.
Runtime Support
Substance materials can be controlled via Flow Graph, allowing for
runtime changes to these procedurally generated materials. Make game
worlds visually dynamic with minimal runtime requirements. Allowing you
to do more with less.
Build It Yourself
Hire 4+ expert engineers
Give them thousands of hours to:
Design & architect
Build a prototype
Build (again) for production
Build a UI dashboard
Launch
Provide 24/7 post-launch coverage
$Debug and fix nasty scaling issues Optimize for cost$
Game A
Player slot 1
Player slot 2
Player slot 3
Player slot 4
Active
Active
Game B
Player slot 1
Player slot 2
Player slot 3
Player slot 4
Active
Active
Active
Active
Game C
Player slot 1
Player slot 2
Player slot 3
Player slot 4
Reserved
Game A Game B Game C
EC2 Instance EC2 Instance EC2 Instance
Build
Developer Players
Session Management
Infrastructure Management
Nomenclature: Fleet
Deployed state of a single
Build
Players connect
to these
Fleet
1 or many EC2
instances
Automatic Scaling
Automatic, rule-based, scaling
Tell GameLift when to:scale up
scale down
Balance between player experience and $
Nomenclature: Alias
Alias
Controls player flow to Fleets
Specify which Fleet an Alias “resolves” to
Game clients contact GameLift using Alias uuid