Going Social with ReplayKit and Game Center



Similar documents
Game Center Programming Guide

Optimize Your Earning Power with iad

Advanced Testing and Continuous Integration

Mobile Application Development

Managing Apple Devices

How To Develop An App For Ios (Windows)

Connect for iphone. Aug, 2012 Ver 5.3b AWest. 1 P age

CinePlay User Manual

Mobile App Design and Development

Continuous Integration and Code Coverage in Xcode

Continuous Integration with Xcode 6

Using Safari to Deliver and Debug a Responsive Web Design

Livestream Studio. Release Notes & New Features!!! For use with Livestream Studio version Published on April 13, 2015

Q-Cam Professional V 1.1 User Manual

MA-WA1920: Enterprise iphone and ipad Programming

CRESTRON-APP/CRESTRON-APP-PAD Control App for Apple ios

ios 9 Accessibility Switch Control - The Missing User Guide Updated 09/15/15

Introducing Cisco Voice and Unified Communications Administration Volume 1

App Distribution Guide

Quick Guide for Using Beltone MFi Hearing Aids with your iphone

Customize Mobile Apps with MicroStrategy SDK: Custom Security, Plugins, and Extensions

About Parallels Desktop 7 for Mac

Citrix Worx App SDK Overview

Using WebEx Player. Playing a recording. Installing WebEx Player. System requirements for listening to audio in a recording

The In-Stream LogoKit is an In-Stream linear and non-linear ad format that plays in VPAID-compliant video players. The ad displays icons in the

VISUAL QUICK START GUIDE ADOBE CONNECT PRO 8

My Stuff Everywhere Your Content On Any Screen

Lync 2013 User Instructions

Axxon Monitor. User Manual

Building Applications with ArcGIS Runtime SDK for ios Part II. Eric Ito and Scott Sirowy

ios Application Development &

OfficeSuite HD Meeting User Manual

You can learn more about Stick around by visiting stickaround.info and by finding Stick Around on social media.

Welcome to icue! Version 4

Dacorum U3A Apple Mac Users Group Agenda TUESDAY 7th July 2015 Time Machine Backups for your MAC & ipad?

Lync 2013 Quick Reference Lync Meetings. Join a Lync Meeting. Schedule a Lync Meeting. Do I need a PIN, work number or extension? Set meeting options

Can the app be installed on the device? Does the app behave as designed/desired if there is an incoming call?

Avaya Speech Analytics Desktop Client 2.0

Adobe Connect Mobile 2.0 Getting Started for participants using mobile phones Adobe Systems Incorporated. All Rights Reserved.

Video Conferencing by Avaya

NAS 136 Controlling ASUSTOR Portal

VIA COLLAGE Deployment Guide

GUIDE. Give PowerPoint a Voice: Developing. Narrated Presentations on a Windows PC. Donna Carnduff. dcarnduf@utk.edu.

Wowza Streaming Cloud TM Overview

INTERMEDIATE ANDROID DEVELOPMENT Course Syllabus

RCN BUSINESS OFFICE MOBILITY FOR DESKTOP

Improving Your App with Instruments

Echo360 Personal Capture

Welcome to a bigger, faster, more powerful world.

8x8 Virtual Office Mobile User Guide for ios

NHL App FAQ For ios / ipad, iphone, and ipod

Technical Specifications for Advertising

Camtasia Recording Settings

ADOBE FLASH PLAYER Local Settings Manager

ADOBE ACROBAT CONNECT PRO MOBILE VISUAL QUICK START GUIDE

Using Avaya Aura Messaging Web Access

Lync 2010 June 2012 Document S700

itelecenter Virtual PBX Extension User Guide

ALIBI Witness and ALIBI Witness HD Apps for Android - Quick Start Guide

Installation and Administration Guide

CRESTRON-APP/CRESTRON-APP-PAD

Developing apps for Android Auto

VIA CONNECT PRO Deployment Guide

Contents. About AirPlay 5. Preparing Your Media and Server for AirPlay 8. Opting Into or Out of AirPlay 11

OS X Yosemite - Features

PhoneView Product Manual

Messaging App UI Guidelines GOOGLE INC.

Cloud Voice Service Cloud Communicator User Guide. (Version 1.0)

Asterisk Voic User Reference

itunes Basics Website:

Cloudvue Remote Desktop Client GUI User Guide

Transition to Compressor 4.1. White Paper December 2013

How To Balance Workload On Vantage

MS-20485: Advanced Windows Store App Development Using C#

RESPONSEWARE FOR IOS USER GUIDE

Publishing with Adobe Presenter 10 (Detailed)

Managing Session Recordings from the SAS Quick Reference Guide

Apple Deployment Programs Apple ID for Students: Parent Guide

2. About iphone ios 5 Development Essentials. 5. Joining the Apple ios Developer Program

Dell Mobile Management. Apple Device Enrollment Program

Setting up Digital Cable on an S1Digital Media Center

ProFiler Client Software User s Guide

MOBILITY FOR iphone USER GUIDE

Under each section, information is listed first for those using computers and laptops followed by mobile device information highlighted in red text.

Sending images from a camera to an iphone. PowerShot G1X MarkII, PowerShot SX600 HS, PowerShot N100, PowerShot SX700 HS, PowerShot ELPH 340 HS

Contents. About Testing with Xcode 4. Quick Start 7. Testing Basics 23. Writing Test Classes and Methods 28. At a Glance 5 Prerequisites 6 See Also 6

CHAPTER 2: USING THE CAMERA WITH THE APP

Welcome to Corel VideoStudio Pro X5

Call Recorder for Skype Product Manual

ios Development: Getting Started Min Tsai March 1, 2011 terntek.com v1.0

Cisco Unified Workforce Optimization

INTELLECT TM Software Package

10 Magni Tablet User Guide

8x8 Virtual Office Mobile User Guide for ios

ECHO360 PERSONAL CAPTURE

Cisco Unity Connection WAV File Issues

Transcription:

Graphics and Games #WWDC15 Going Social with ReplayKit and Game Center What s new in social gaming Session 605 Edwin Iskandar Software Engineer Megan Gardner Software Engineer 2015 Apple Inc. All rights reserved. Redistribution or public display not permitted without written permission from Apple.

Agenda What s new in Game Center

Agenda What s new in Game Center Guest players

Agenda What s new in Game Center Guest players Unified server environment

Agenda What s new in Game Center Guest players Unified server environment Introducing ReplayKit

Agenda What s new in Game Center Guest players Unified server environment Introducing ReplayKit New way to add social to your games

Agenda What s new in Game Center Guest players Unified server environment Introducing ReplayKit New way to add social to your games Share game experiences

What s New in Game Center

Game Center Social gaming Friends Leaderboards Achievements Real time multiplayer Turn based multiplayer Challenges

What s New? Guest players Unified environment

Guest Players Adding more to your multiplayer

Players Current usage GKLocalPlayer Only one per device Must be an authenticated Game Center user

Players Current usage GKLocalPlayer Only one per device Must be an authenticated Game Center user GKPlayer Friend of the GKLocalPlayer Participant in a match

Players Current usage GKLocalPlayer Only one per device Must be an authenticated Game Center user GKPlayer Friend of the GKLocalPlayer Participant in a match Multiplayer Real time Turn based

Guest Players What are they? GKPlayer instances Do not require authentication First class participants in multiplayer games Can fill up all the slots in a game Up to three for real time Up to fifteen for turn based

Guest Players What you need to know Great for pass and play and handling AI players You define the identifier needs to be unique across the game Cannot earn achievements or post scores Sessions with guest players only compatible with other players running ios 9 Game still compatible with players on older systems

Game Center Sandbox Environment Unification with production

Sandbox Original purpose Environment for pre-release testing with Game Center Duplicated production Game Center functionality Same itunes Connect metadata Different servers Different accounts

Production Sandbox Released Unreleased Leaderboards Leaderboards Achievements Achievements Accounts Accounts

Production Sandbox Released Unreleased Leaderboards Leaderboards Achievements Achievements Accounts

Unified Environment Benefits Simplifies accounts Compatible with TestFlight Multiplayer works across versions (if enabled) Automatic

Unified Environment Considerations New games appear in friend s games list Including unreleased Scores post to existing leaderboards ios 8 users still need to flip the switch

Leaderboards All versions will post to the same leaderboards New leaderboard only visible to those who have that version Remove test scores via itunes Connect

Multiplayer Play against any other version, specified in the compatibility matrix Release versions can match against unreleased versions

itunes Connect Up to two sets of metadata will be maintained Currently released version Unreleased version

itunes Connect Up to two sets of metadata will be maintained Currently released version Unreleased version Which data you are vended as a user will depend on your CFBundleVersion CFBundleVersion > Released Bundle Version unreleased data CFBundleVersion <= Released Bundle Version currently released data

Post-Sandbox Compatibility and visibility CFBundleVersion Who Can See? Who Can Play? Where Will I Post? 0.9 Beta Game Center Friends Other beta versions Beta leaderboards 1.0 Released Game Center Friends All versions, including future updates, if specified Released leaderboards 2.0 Update Game Center Friends All specified versions Released leaderboards and update leaderboards, not viewable by Game Center friends

Recap What s new Guest players Expands multiplayer opportunity

Recap What s new Guest players Expands multiplayer opportunity Unified environment Fulfills developers requests Simple and automatic Works great with TestFlight

ReplayKit Sharing game experiences Edwin Iskandar Software Engineer

ReplayKit

ReplayKit

ReplayKit Record your running app

ReplayKit Record your running app Add voice commentary

ReplayKit Record your running app Add voice commentary Playback, scrub, and trim

ReplayKit Record your running app Add voice commentary Playback, scrub, and trim Share Social networks Video destination sites

ReplayKit

ReplayKit HD quality Low performance impact Minimal power usage

ReplayKit HD quality Low performance impact Minimal power usage Privacy safeguards

ReplayKit HD quality Low performance impact Minimal power usage Privacy safeguards Available in ios 9

ReplayKit HD quality Low performance impact Minimal power usage Privacy safeguards Available in ios 9 A7 and A8 based devices

Privacy Safeguards

Privacy Safeguards Permission required User consent prompt Parental controls

Privacy Safeguards Permission required User consent prompt Parental controls Recording excludes system UI Notifications Keyboard entry

Privacy Safeguards Permission required User consent prompt Parental controls Recording excludes system UI Notifications Keyboard entry No direct access to recordings Share sheet only

Architecture

Application Application

Application Application RPScreenRecorder RPPreviewViewController

Application Application RPScreenRecorder RPPreviewViewController Replay Daemon System

Application Application RPScreenRecorder RPPreviewViewController Replay Daemon System Video and Audio Services Hardware

Application Application RPScreenRecorder RPPreviewViewController Replay Daemon Movie System Video and Audio Services Hardware

Application Application RPScreenRecorder RPPreviewViewController Replay Daemon Movie Preview and Share Extension System Video and Audio Services Hardware

Application RPScreenRecorder RPPreviewViewController

Using ReplayKit Getting started

Classes and Protocols

Classes and Protocols RPScreenRecorder Start, stop, discard recording Check ability to record Enable microphone for commentary

Classes and Protocols RPScreenRecorder Start, stop, discard recording Check ability to record Enable microphone for commentary RPScreenRecorderDelegate If availability changes If recording stops (due to error)

Classes and Protocols RPScreenRecorder Start, stop, discard recording Check ability to record Enable microphone for commentary RPPreviewViewController Preview the recording Edit and trim Share RPScreenRecorderDelegate If availability changes If recording stops (due to error)

Classes and Protocols RPScreenRecorder Start, stop, discard recording Check ability to record Enable microphone for commentary RPPreviewViewController Preview the recording Edit and trim Share RPScreenRecorderDelegate If availability changes RPPreviewViewControllerDelegate After view controller dismissal If recording stops (due to error)

Example DemoBots

DemoBots Taskbots keep the circuit board running Bots are buggy, debug them Bite size 2 3 minute levels Source available at developer.apple.com

Main Menu

Main Menu Game Level

Main Menu Game Level Level End

Main Menu Game Level Level End

Main Menu Start Recording Game Level Stop Recording Level End

Main Menu Start Recording Game Level Stop Recording Preview Edit Share Level End

Shared Recorder class RPScreenRecorder : NSObject { class func sharedrecorder() -> RPScreenRecorder let sharedrecorder = RPScreenRecorder.sharedRecorder()

Shared Recorder class RPScreenRecorder : NSObject { class func sharedrecorder() -> RPScreenRecorder let sharedrecorder = RPScreenRecorder.sharedRecorder()

Start Recording class RPScreenRecorder : NSObject { func startrecordingwithmicrophoneenabled(microphoneenabled: Bool, handler: ((NSError?) -> Void)?) func leveldidstart() { sharedrecorder.startrecordingwithmicrophoneenabled(true) { (error:) in if error!= nil { // pause game and show error } } }

Start Recording class RPScreenRecorder : NSObject { func startrecordingwithmicrophoneenabled(microphoneenabled: Bool, handler: ((NSError?) -> Void)?) func leveldidstart() { sharedrecorder.startrecordingwithmicrophoneenabled(true) { (error:) in if error!= nil { // pause game and show error } } }

Stop Recording class RPScreenRecorder : NSObject { func stoprecordingwithhandler( handler: ((RPPreviewViewController?, NSError?) -> Void)?) func levelwillend() { sharedrecorder.stoprecordingwithhandler { (previewviewcontroller, error) -> Void in // Handle error if previewviewcontroller!= nil { // Keep a reference for later use self.previewviewcontroller = previewviewcontroller } }

Stop Recording class RPScreenRecorder : NSObject { func stoprecordingwithhandler( handler: ((RPPreviewViewController?, NSError?) -> Void)?) func levelwillend() { sharedrecorder.stoprecordingwithhandler { (previewviewcontroller, error) -> Void in // Handle error if previewviewcontroller!= nil { // Keep a reference for later use self.previewviewcontroller = previewviewcontroller } }

Present Preview UI class UIViewController : { func presentviewcontroller(viewcontrollertopresent: UIViewController, animated flag: Bool, completion: (() -> Void)?) @IBAction func didpressviewrecordingbutton() { // Present the preview view controller we made a reference to before self.presentviewcontroller(previewviewcontroller, animated: true, completion:nil) }

Present Preview UI class UIViewController : { func presentviewcontroller(viewcontrollertopresent: UIViewController, animated flag: Bool, completion: (() -> Void)?) @IBAction func didpressviewrecordingbutton() { // Present the preview view controller we made a reference to before self.presentviewcontroller(previewviewcontroller, animated: true, completion:nil) }

Dismissing Preview UI protocol RPPreviewViewControllerDelegate : NSObjectProtocol { optional func previewcontrollerdidfinish( previewcontroller: RPPreviewViewController) @IBAction func didpressviewrecordingbutton() { } previewviewcontroller.previewviewcontrollerdelegate = self func previewcontrollerdidfinish(previewcontroller: RPPreviewViewController) { previewviewcontroller.dismissviewcontrolleranimated(true, completion: nil)

Dismissing Preview UI protocol RPPreviewViewControllerDelegate : NSObjectProtocol { optional func previewcontrollerdidfinish( previewcontroller: RPPreviewViewController) @IBAction func didpressviewrecordingbutton() { } previewviewcontroller.previewviewcontrollerdelegate = self func previewcontrollerdidfinish(previewcontroller: RPPreviewViewController) { previewviewcontroller.dismissviewcontrolleranimated(true, completion: nil)

Using ReplayKit Getting started Getting a shared instance of the recorder Starting and stopping the recorder Presenting and dismissing the Preview UI

Using ReplayKit Fine tuning

Verifying Availability

Verifying Availability Recording may be unavailable AirPlay in use TV-out in use Unsupported device

Verifying Availability Recording may be unavailable AirPlay in use TV-out in use Unsupported device Guidance Use available property to check for availability Disable recording UI if false Use screenrecorderdidchangeavailability to listen for changes

Verifying Availability Example class RPScreenRecorder : NSObject { var available: Bool { get } func updatebuttonui() { } recordingtogglebutton.hidden =!sharedrecorder.available

Verifying Availability Example class RPScreenRecorder : NSObject { var available: Bool { get } func updatebuttonui() { } recordingtogglebutton.hidden =!sharedrecorder.available

Discarding the Recording Automatically discarded when new recording starts Only one recording at a time per app Discard when preview no longer accessible Use discardrecordingwithhandler

Discarding the Recording Automatically discarded when new recording starts Only one recording at a time per app Discard when preview no longer accessible Use discardrecordingwithhandler

Discarding the Recording Example class RPScreenRecorder : NSObject { func discardrecordingwithhandler(handler: () -> Void) func willtransitiontonextlevel() { sharedrecorder.discardrecordingwithhandler { // start next level self.transitiontonextlevel() } }

Discarding the Recording Example class RPScreenRecorder : NSObject { func discardrecordingwithhandler(handler: () -> Void) func willtransitiontonextlevel() { sharedrecorder.discardrecordingwithhandler { // start next level self.transitiontonextlevel() } }

Recording Indicator Indicate that recording is on REC Indicate that microphone is on

Recording Indicator Example class RPScreenRecorder : NSObject { var recording: Bool { get } var microphoneenabled: Bool { get } func recordingdidstart() { recordingindicator.hidden =!sharedrecorder.recording microphoneindicator.hidden =!sharedrecorder.microphoneenabled }

Recording Indicator Example class RPScreenRecorder : NSObject { var recording: Bool { get } var microphoneenabled: Bool { get } func recordingdidstart() { recordingindicator.hidden =!sharedrecorder.recording microphoneindicator.hidden =!sharedrecorder.microphoneenabled }

Excluding UI

Excluding UI Hide elements that are uninteresting to a spectator Recording indicators Virtual controls Pause and menu buttons

Excluding UI Hide elements that are uninteresting to a spectator Recording indicators Virtual controls Pause and menu buttons ReplayKit only records your applications main UIWindow Use a separate UIWindow to hide UI

When to Record Automatic vs. user-initiated

When to Record Automatic vs. user-initiated App controlled (automatic) Short gameplay sessions

When to Record Automatic vs. user-initiated App controlled (automatic) Short gameplay sessions User-initiated Longer gameplay sessions Spread out interesting events

When to Record Automatic vs. user-initiated App controlled (automatic) Short gameplay sessions User-initiated Longer gameplay sessions Spread out interesting events Choose what is appropriate

Using ReplayKit Getting Started Getting a shared instance of the recorder Starting and stopping the recorder Presenting and dismissing the Preview UI Fine Tuning Verifying availability Discarding the recording Showing indicator Excluding UI When to record

Demo Call of Champions Cinco Barnes Chief Vision Officer, Spacetime Studios

What s New in Social Gaming

What s New in Social Gaming New in Game Center Guest players allow for new modes in multiplayer Unified server environment to streamline development and testing

What s New in Social Gaming New in Game Center Guest players allow for new modes in multiplayer Unified server environment to streamline development and testing Introducing ReplayKit Records audio and visuals of running application Efficient with privacy safeguards Compact framework with simple adoption

More Information Documentation and Videos http://developer.apple.com Apple Developer Forums http://developer.apple.com/forums Developer Technical Support http://developer.apple.com/support/technical General Inquiries Allan Schaffer, Game Technologies Evangelist aschaffer@apple.com

Related Labs ReplayKit Lab ReplayKit Lab Graphics, Games, and Media Lab D Graphics, Games, and Media Lab D Wednesday 2:30PM Thursday 9:00AM