본글은 원문 번역을 중심으로 작성한 글입니다. 출처는 아래에서 확인할 수 있습니다.
오역이나 잘못된 정보에 대한 수정은 언제든지 환영합니다 :)
모바일 환경에서 게임을 개발할때 OpenGL이나 Apple의 Metal 과 같은 그래픽 API들은 표준으로 자리매김 해왔다. 이러한 API들은 GPU와 같은 모바일 하드웨어를 소프트웨어와 연결시킨다. 하지만 full graphics 소프트웨어 스택(결과를 만들어내기 위해 또는 공동의 목표를 달성하기 위해 협력하여 작동하는 프로그램들의 모음)에는 더 많은 것들이 있다.
API의 강점을 최대한으로 이용하기 위해 개발자들은 API와 application framework 사이의 graphics rendering engine을 필요로 했는데, 이에 애플은 애플의 하드웨어와 더 좋은 통합 기능을 가지는 내장된 graphic rendering infrastructures 를 제공하길 원했고, 이것이 SpriteKit 과 SceneKit 의 등장 이유이다. 이 프레임워크는 앞서 등장한, Core Animation framework, QuartzCore, GLKit와 함께 iOS 앱에 애니메이션을 더하는데 사용된다.
SCENEKIT: 3D 장면 & 게임 애니메이션
SceneKit 은 Core Animation framework을 기반으로, SpriteKit 에 비해 고성능옵션을 제공하며, 사용시 상당한 수학과 기하학을 요구한다.
SceneKit은 high-level 3D graphics framework로서, rendering engine 과 descriptive API로 움직이는 장면을 만들기 위해 사용된다. Metal 과 같은 lower-level API보다는 복잡하다. (Fruit Ninja 처럼 다양한 카메라 구도를 가지고 있는 3D 게임을 생각해보자)
SceneKit은 Loin OS 에서 배포되었으며, 장면의 내용(scene’s contents)과 원하는 애니메이션만 기술(descriptions)하면 되는 방식으로 개발자들이 보다 쉽게 복잡한 3D 장면을 만들수 있도록 디자인 되었다. 이것의 “scene graph” 계층은 기기의 GPU에 의해 렌더링되기 전에 애니메이션을 수행하도록 하여 성능을 높인다.
- Objective-C , Swift 에서 사용
- Swift Playground 에서 접근 가능
- Quartz, Core Animation,GL Kitworks 과 같은 기술과 함께 작동하고 다양한 결과들을 얻기 위해 다른 그래픽 기술들과 통합됨
- 숙련된 그래픽 프로그래밍 스킬을 요구하지 않음
SceneKit 더 알아보기
Apple’s guide to getting started and SceneKit best practices.
SPRITEKIT: 간단한 2D 애니메이션
SpriteKit은 단순 규모에서 2D 애니메이션을 위해 디자인 되었다. (Candy Crush나 Angry Birds와 같은 배터리를 많이 소모하지 않는 lower-level 2D 애니메이션을 생각해보자)
SpriteKit은 SceneKit 이후에 등장했는데(iOS 7에서 배포됨), 개발자들에게 2D 애니메이션을 위한 모든 툴을 제공했고 sprite 기반 게임들은 OpenGL과 같은 graphics API를 필요로 하지 않는다.
비개발자들에게 sprites는 전체 웹페이지나 게임의 모든 그래픽들을 포함한 하나의 파일(개별 그래픽들은 뺄 수 있는)이다. sprite 는 한번 다운로드 된 후 작은 그래픽들은 화면 좌표에 따라 위치하는데, 이는 본질적으로 앱이 서버에 이미지나 애니메이션을 요청하면서 시간과 지원을 사용하는 막대한 요청들을 할 필요가 없음을 의미한다. 그저 sprite 에 접근하면 이어서 SpriteKit 이 기존의 렌더링 루프에 따라 렌더링을 처리한다.
- SpriteKit은 기본 사운드 재생 지원이나, 물리적 시뮬레이션 등의 기능을 게임에 제공. 이는 단지 게임 앱에만 제한되지 않지만 사로잡는 동작이나 효과들을 제공할때 효과적.
- Xcode 는 SpriteKit 을 위한 내장된 지원을 통해, 게임이나 앱에 복잡하고 특별한 효과를 만드는데 강력한 플랫폼으로 작용.
- Swift 사용
- 처음 사용하기에 쉬움
- Metal,OpenGL 등의 graphics API 제공
- iOS와 OS X 모두 사용 가능. 이 둘 사이에서 비교적 코드를 포팅하기 쉬움
요점 : SpriteKit은 개발자들이 그리기 명령을 API에 제출하는것과 같은 lower-level의 작업보다, 고수준의 디자인이나 게임 측면에 집중 가능하도록 한다.
SpriteKit 더 알아보기
Apple’s guide to getting started and SpriteKit best practices.
SpriteKit & SceneKit Together
두가지 framework 를 같이 사용하는 것도 가능하다. 2D SpriteKit 장면은 3D SceneKit의 장면에 레이어 될 수 있고, 배경이나 전경의 오버레이로 활용될수도 있다. 애니메이션을 위해 어떤 프레임워크를 사용하던지간에, Apple’s Visual Design animation standards을 잘알고 지키도록 한다.