nyancoder

WWDC 2021 - Tap into virtual and physical game controllers 본문

WWDC/WWDC 2021

WWDC 2021 - Tap into virtual and physical game controllers

nyancoder 2021. 8. 5. 00:18

원본 영상: https://developer.apple.com/videos/play/wwdc2021/10081/

 

Game controller recap

  • 게임 컨트롤러 프레임워크의 목표는 대기 시간이 짧은 입력에 대한 지원을 쉽게 추가할 수 있도록 하는 것입니다.
  • 공통 API를 통해 입력 하드웨어를 추상화함으로써 여러 Apple 기기에서 장치 간의 차이점에 대해 걱정할 필요 없는 코드를 작성할 수 있습니다.
  • 시스템 전체 및 애플리케이션별 게임 컨트롤러 입력 리매핑을 사용할 수 있습니다.
  • 모든 플랫폼에서 플레이어가 들고 있는 특정 컨트롤러의 기호와 기능을 반영하도록 UI를 구축할 수 있습니다.

  • 게임 컨트롤러의 연결 상태 변경이나 입력 상태 이벤트를 받기 위해서 값을 폴링 하거나 valueChangedHandler를 등록할 수 있습니다.
  • 컨트롤러가 시스템에 연결되거나 해제되면 GCController 개체가 생성 및 제거되고 GCControllerDidConnect 및 GCControllerDidDisconnect 알림 이 전송됩니다.

  • 키보드가 연결되거나 해제될 때는 GCKeyboard 개체가 동일하게 처리됩니다.

  • 포인팅 장치가 연결되거나 해제될 때는 GCMouse 개체가 동일하게 처리됩니다.

  • 위의 코드와 같이 Observer를 등록하여 GCController 객체가 연결되거나 해제되는 시점을 알 수 있습니다.
  • 이 시점에 특정 버튼의 입력 상태가 변경될 때 알림을 받도록 handler를 등록할 수 있습니다.

  • 또는 다른 곳에서 컨트롤러의 상태를 풀링 할 수 있습니다.

  • 게임 컨트롤러를 지원하는 게임에는 컨트롤러 지원 배지를 App Store에 표시합니다.

  • 또는 게임 컨트롤러와 잘 어울리는 앱에 대한 섹션에 추가해줍니다.

  • Xcode에서 게임 컨트롤러 기능을 추가하면 Info.plist에 태그가 자동으로 지정됩니다.

  • 게임에서 게임 컨트롤러를 지원하는 경우 게임 컨트롤러 설정에 사용자 지정 키맵핑이 추가됩니다.

  • 게임 컨트롤러를 지원하면 플레이어는 컨트롤러의 공유 버튼을 빠르게 두 번 터치하여 스크린숏을 캡처하거나 공유 버튼을 길게 눌러 비디오 클립 녹화를 시작 및 중지할 수 있습니다.
  • 스크린숏은 iOS의 경우 카메라 롤, macOS의 경우 데스크톱, AppleTV의 경우 휴대폰으로 AirDrops 됩니다.

  • 컨트롤러 지원을 위해서는 각 컨트롤러에 알맞은 버튼 모양이 표시되어야 합니다.

  • A 버튼의 sfSymbolsName을 얻어와서 UIImage로 버튼을 표시하면 자동으로 알맞은 이미지를 표시할 수 있습니다.
  • 버튼이 리 매핑된 경우에도 올바르게 동작합니다.

 

New Virtual controller

  • 새로운 iPhone 및 iPad용 온스크린 컨트롤은 애플리케이션에 쉽게 추가할 수 있고 게임 컨트롤러처럼 작동합니다.

  • 또한 버튼을 원하는 기호로 사용자 정의할 수 있습니다.

  • 왼쪽과 오른쪽 영역은 독립적으로 구성되며, 각 구성에 맞춰 레이아웃이 결정됩니다.
  • 한쪽 면은 0~4개의 버튼, 엄지 스틱, 방향 패드, 터치패드 중 하나로 구성할 수 있습니다.
  • 버튼과 스틱에는 햅틱 반응이 있습니다.
  • 각 구성 요소는 생성될 때 결정되기 때문에, 숨길수는 있지만 추가하거나 삭제할 수는 없습니다.

  • 이를 사용하기 위해서는 GCControllerConfiguration를 만들어 버튼과 조이스틱 등을 추가할 수 있도록 합니다.
  • 이후 GCVirtualController를 만들고 사용자 정의 요소를 추가하거나 일부 요소를 숨기는 등의 설정을 합니다.
  • 생성된 컨트롤러를 connect() 함수를 통해 시스템에 연결합니다.
  • 그러면 GCGameControllerDidConnect 알림이 발생하고 GCController가 제공됩니다.

  • 위의 예제에서는 왼쪽에 썸 스틱, 오른쪽에 썸 스틱과 A 및 B 버튼이 있습니다.

  • 위의 경우 GCVirtualControllerConfiguration개체를 만들고 원하는 구성 요소인 2개의 썸 스틱과 2개의 버튼을 추가합니다.
  • 이후 이 설정을 이용하여 GCVirtualController를 생성하고 connect()를 호출하면 GCControllerDidConnectNotification을 받을 수 있습니다.

  • 이 예제에서는 임의의 문자열로 버튼을 표시하고 있습니다.

  • 이러한 경우에는 각 버튼을 수정하여 BezierPath를 추가하면 됩니다.

 

New Controllers and features

  • DualSense 적응형 트리거를 사용하면 물리적인 피드백을 사용하여 게임 몰입도를 높일 수 있습니다.
  • 게임에서의 동작에 따라 다양한 저항을 적용하여 활줄이나 새총을 당기는 느낌과 같은 감각을 모방할 수 있습니다.

  • DualSense지원을 위해서는 플레이어 컨트롤러의 물리적 입력이 DualSense인지 확인해야 합니다.
  • GCAdaptiveTrigger에 트리거 효과를 설정할 수 있습니다.
  • 필요하다면 적응형 트리거와 게임의 상태를 지속적으로 읽으면서 적절히 효과를 조절할 수 있습니다.
  • 이러한 작업이 다 끝나면 적응형 트리거 효과를 꺼야 합니다.

  • 위의 예제에서는 새총에 DualSense효과를 적용하려고 합니다.
  • 연결된 기기가 DualSense인지를 우선 확인한 다음 적절한 트리거를 얻어옵니다.
  • 새총의 방아쇠를 당긴 거리에 따라 저항의 강도를 동적으로 계산하여 적용합니다.
  • 새총을 쏘면 적응형 트리거를 끕니다.

  • 작년에 공유 버튼을 통해서 미디어 캡처 제스처를 도입했습니다.

  • 공유 버튼은 일반적으로 컨트롤러의 가장 왼쪽 상단 시스템 버튼에 매핑되지만, Xbox Series X와 같은 일부 컨트롤러 에는 공유라는 버튼이 있습니다.

  • 올해에는 15초 하이라이트를 미디어 캡처가 추가되었습니다.
  • 이제 녹화를 시작하고 중지할 필요 없이, 자동 백그라운드 버퍼링을 켜기만 하면 길게 누를 때마다 마지막 15초를 저장할 수 있습니다.
  • 게임에서도 하이라이트 지점에서 API를 통해 15초 스냅숏을 트리거할 수 있습니다.

 

목차: https://nyancoder.tistory.com/2

 

Comments