#WWDC15 Graphics and Games

Graphics and Games
What’s New in SpriteKit
Session 604
Tim Oriol
Norman Wang
Tyler Casella
© 2015 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple.
#WWDC15
What is SpriteKit?
What is SpriteKit?
2D graphics framework for games
Super easy to use
Lets you design your game in the most
natural way possible
Automatic access to the latest and greatest
What is SpriteKit?
Supported across iOS and OS X
What is SpriteKit?
Xcode integrated live editor
New Additions
Viewport
Viewport
SKCameraNode
Represents the center of the viewport
SKScene property
Move the camera not the world
Static elements can be moved with
the camera
SKCameraNode
SKCameraNode is a SKNode
• Actions
• Constraints
• Rotation
• Scale
SKCameraNode
SKCameraNode is a SKNode
• Actions
• Constraints
• Rotation
• Scale
SKCameraNode
SKCameraNode is a SKNode
• Actions
• Constraints
• Rotation
• Scale
SKCameraNode
SKCameraNode is a SKNode
• Actions
• Constraints
• Rotation
• Scale
SKCameraNode
SKCameraNode is a SKNode
• Actions
• Constraints
• Rotation
• Scale
SKAudioNode
Positional audio
Leveraging AVAudioEngine
Position calculated via node position
SKAudioNode
SKAudioNode
Listener node property on SKScene
Create with filename or URL
Full control via avAudioNode property
Listener
SKAudioNode
SKAudioNode
Listener
SKAudioNode
SKAudioNode
Listener
SKAudioNode
SKAudioNode
References and Instancing
Leverage the NSCoding capability
Instances of SKAction and SKNode
Reusable components
Share across multiple projects
SKReferenceNode
Place reference nodes
Bundle based filename or any URL
SKReferenceNode
Editor supported
SKReferenceNode
SKReferenceNode
Serialized SpriteKit File
Named SKActions
Create in Xcode
Share and reuse action files
[SKAction actionNamed:]
[SKAction actionNamed:duration:]
SpriteKit Action Files
New SKActions
Playback control actions
play, pause
changePlaybackRateTo: duration:
changeVolumeTo: duration:
Normal texture animation
animateWithNormalTextures:
New SKActions
Playback control actions
play, pause
changePlaybackRateTo: duration:
changeVolumeTo: duration:
Normal texture animation
animateWithNormalTextures:
New SKActions
Playback control actions
play, pause
changePlaybackRateTo: duration:
changeVolumeTo: duration:
Normal texture animation
animateWithNormalTextures:
System Integration
Metal Backed
iOS and Mac
Metal backed on devices that support it
OpenGL on systems that don't
Zero action required for developers
All SpriteKit apps automatically upgraded
SKShaders automatically upgraded
We Speak Swift and Objective-C
Nullability enhancements
Objective-C generics
Enhanced type safety
SceneKit
SKTransitions
Use SKTransitions in SceneKit
SceneKit Metal support
Automatic context matching
GameplayKit
Step up your game
Entity/Component systems
State machines
Agents and behaviors
Pathfinding
AI strategists
Random sources
Rule systems
GameplayKit
Pathfinding
Pathfinding operates on a navigation graph
Graphs are collections of nodes
A
B
Nodes are joined by connections
Each connection has an associated cost
C
D
GameplayKit
Pathfinding
GameplayKit
Pathfinding
GameplayKit
Pathfinding
GameplayKit
Pathfinding
GameplayKit
Pathfinding
GameplayKit
Pathfinding
GameplayKit
Pathfinding
GameplayKit
Automatic graph generation
If you’re using SpriteKit, we have provided a
set of functions to automatically generate
these from existing SKNodes.
PhysicsBody, texture, or bounds.
[SKNode obstaclesFromNodeBounds: nodes]
[SKNode obstaclesFromNodePhysicsBodies: nodes]
[SKNode obstaclesFromSpriteTextures: nodes accuracy: accuracy]
GameplayKit
Automatic graph generation
If you’re using SpriteKit, we have provided a
set of functions to automatically generate
these from existing SKNodes.
PhysicsBody, texture, or bounds.
[SKNode obstaclesFromNodeBounds: nodes]
[SKNode obstaclesFromNodePhysicsBodies: nodes]
[SKNode obstaclesFromSpriteTextures: nodes accuracy: accuracy]
GameplayKit
Automatic graph generation
If you’re using SpriteKit, we have provided a
set of functions to automatically generate
these from existing SKNodes.
PhysicsBody, texture, or bounds.
[SKNode obstaclesFromNodeBounds: nodes]
[SKNode obstaclesFromNodePhysicsBodies: nodes]
[SKNode obstaclesFromSpriteTextures: nodes accuracy: accuracy]
GameplayKit
Automatic graph generation
If you’re using SpriteKit, we have provided a
set of functions to automatically generate
these from existing SKNodes.
PhysicsBody, texture, or bounds.
[SKNode obstaclesFromNodeBounds: nodes]
[SKNode obstaclesFromNodePhysicsBodies: nodes]
[SKNode obstaclesFromSpriteTextures: nodes accuracy: accuracy]
SpriteKit Tools
Norman Wang
SpriteKit Tools
Introduction
Games rely on tools for iteration and scalability
• Game logic, animation, or art assets
Improve work flow and build game faster
Focus on building the gameplay
+
SpriteKit Tools
Texture atlas
cave_destroyed.png
big_tree_middle.png
big_tree_base.png
cave_top.png
cave_base.png
minionSplort.png
big_tree_top.png
SpriteKit Tools
Texture atlas
SpriteKit Tools
Texture atlas
SpriteKit Tools
Texture atlas in Asset Catalog
SpriteKit Tools
Texture atlas with On Demand Resources
SpriteKit Tools
Texture atlas with On Demand Resources
SpriteKit Tools
Particle editor
SpriteKit Tools
Particle editor
SpriteKit Tools
Xcode Quicklook
SpriteKit Tools
Xcode Quicklook
SpriteKit Tools
2D editor
Full visual editor for 2D games
No more compile and check
No code required
Visual layout
Live physics simulation
Live shader editing
SpriteKit Tools
2D editor
Full visual editor for 2D games
No more compile and check
No code required
Visual layout
Live physics simulation
Live shader editing
SpriteKit Tools
New features
More editor features this year
• Custom classes
• Camera
• Audio node
• Reference node
Increased collaboration and reusability
SpriteKit Tools
New features
More editor features this year
• Custom classes
• Camera
• Audio node
• Reference node
Increased collaboration and reusability
SpriteKit Tools
New features
More editor features this year
• Custom classes
• Camera
• Audio node
• Reference node
Increased collaboration and reusability
SpriteKit Tools
New features
More editor features this year
• Custom classes
• Camera
• Audio node
• Reference node
Increased collaboration and reusability
SpriteKit Tools
Action editor
All new action editor
Timeline based
Realtime preview
2D and 3D support
Cinematic and Interactive animations
SpriteKit Tools
Action editor
All new action editor
Timeline based
Realtime preview
2D and 3D support
Cinematic and Interactive animations
SpriteKit Tools
References and instancing
Instances of SKAction and SKNode
Reusable components
Data-driven model
Share across multiple projects
Separate resource files
No code required
SpriteKit Tools
Referenced actions
Create once, reuse on multiple nodes, projects
Reference via editor or code
Leveraging the new SKAction actionNamed:
Build a custom library of actions
Build very complex actions
SpriteKit Tools
Referenced nodes
Create once, reuse on multiple nodes, projects
Reference via editor or code
Leveraging the new SKReferenceNode API
Build a custom library of nodes
Share between multiple scenes, and projects
SpriteKit Tools
Referenced nodes
Create once, reuse on multiple nodes, projects
Reference via editor or code
Leveraging the new SKReferenceNode API
Build a custom library of nodes
Share between multiple scenes, and projects
Demo
Building a SpriteKit game
Tyler Casella
Summary
Exciting year for SpriteKit developers
• Audio node, Camera node, Reference node, Reference action
• All new timeline based action editor
• Asset Catalog integration
• App Thinning
• On Demand Resources
• Metal integration
• GameplayKit integration
More Information
SpriteKit Documentation and Videos
http://developer.apple.com/spritekit
Apple Developer Forums
http://developer.apple.com/forums
Developer Technical Support
http://developer.apple.com/support/technical
General Inquiries
Allan Schaffer, Game Technologies Evangelist
aschaff[email protected]
Related Sessions
Going Social with ReplayKit and Game Center
Mission
Wednesday 1:30PM
Enhancements to SceneKit
Mission
Wednesday 2:30PM
Introducing GameplayKit
Mission
Thursday 11:00AM
Deeper into GameplayKit with DemoBots
Mission
Thursday 1:30PM
Related Labs
SpriteKit Lab
Graphics B
Wednesday 11:00AM
Game Controllers Lab
Graphics D
Thursday 2:30PM
GameplayKit Lab
Graphics B
Thursday 2:30PM
SpriteKit Lab
Graphics C
Friday 10:00AM