이 자료는 2013년 11월 스마트 앱 개발자 포럼 세미나 발표자료 입니다.
애플사에서 iOS 7용 API로 추가한 Sprite Kit은 주로 게임 개발을 위하여 사용되는 스프라이트 API로 단순한 코딩으로 애니메이션을 쉽게 구현할 수 있습니다.
단 iOS에서 주로 사용되는 UIView 객체에는 적용할 수 없습니다. UIView 객체란 iOS의 UIImage, UIButton 등과 같은 기본 UI 객체입니다. Sprite Kit을 사용하게 되면 파티클 효과, 물리 효과, 스프라이트의 애니메이션 효과를 매우 쉽게 구현할 수 있습니다.
이 자료는 Sprite Kit의 특징과 간단한 샘플 코드를 통해 Sprite Kit을 이해할 수 있도록 하였습니다.
1. iOS7 Sprite Kit을 이용한
스마트폰 게임 개발
창원대학교 정보통신공학과 박동규
dongupak@gmail.com
http://ivis.cwnu.ac.kr/tc/dongupak
스마트 앱 개발자 포럼 세미나
2013. 11.
2. 내용
• 정의와 특징
• Cocos2d와의 장,단점 비교
• 장면 그래프 구조 알아보기
• 텍스쳐 아트라스, 액션, 사운드 기능 알아보기
• 물리 시뮬레이션, 파티클
• 3-4 가지의 실습 과정으로 구성됨
3. Sprite Kit란?
•
•
•
애플사에서 개발한 스프라이트 API
•
OS X Mavericks, iOS 7에서 사용가능한 새 API
2D 게임 개발도구로 Cocos2d와 매우 유사한 구
조임
스마트 폰 기반 게임 시장의 성장과 Mac 운영체제
의 확산으로 인하여 효율적인 게임 개발도구의 필
요성이 제기됨
4. iOS 7 게임 컨트롤러 API
• iPhone 5 이상의 기기에서 사용가능함
http://www.macrumors.com/2013/11/19/first-ios-7-game-controller-moga-ace-power-now-available/
5. 특징
•
•
•
•
고성능 2D 렌더링 프레임워크
내장 물리 시뮬레이션, 파티클 시스템 지원
OS X, iOS 지원(크로스 플랫폼 개발도구)
실행 환경, 개발을 위한 패키지
•
•
•
스프라이트, 텍스쳐 아트라스 지원
비선형 애니메이션 지원
오디오, 비디오를 비롯한 비주얼 효과를 지원함
6. 장점
•
•
iOS 게임개발을 위한 추가 라이브러리가 필요없다
•
이미지 효과나 마스크와 같은 복잡한 작업을 제공
되는 기능으로 쉽게 할 수 있다
•
iOS에서 처음 게임을 개발하려는 개발자라면 좋은
시도가 될 수 있다
텍스쳐 아트라스, 파티클, 물리 시뮬레이션을
xcode가 자체적으로 제공한다
7. 단점
• Cocos2d나 Unity와는 달리 iOS 생태계에서
만 사용할 수 있다.
• 안드로이드 포팅을 위해서는 별도의 작업이
요구된다
• Cocos2d와 같은 폭넓은 사용자 커뮤니티가
“아직” 형성되어 있지 않다.
9. 장면 그래프
•
•
•
화면에 나타나는 객체들을 어떻게 구조화 할 것인가?
•
트리구조를 이용하여 부모-자식관계를 형성하여 구조화
시키자
트리구조의 장점
•
객체들을 계층적으로 구성할 수 있어서 객체의 삽입과 제
거, 이동등을 손쉽게 할 수 있다.
예전부터 3D, 2D객체를 구조화하는데 이용되던 방법
•
Maya, AutoCAD,VRML, Open Inventor, X3D,
OpenSG,..
10. 장면 그래프
•
•
현재 활성화된 Sprite Kit의 모든 노드의 계층적인
구조
•
•
모든 노드는 하나의 부모 노드를 가진다.
자식 노드는 여러개의 하위노드를 가질 수 있다.
장면 그래프는 고수준 그래픽스 시스템이나 게임
프로그래밍에서 널리 사용되던 방법
•
Cocos2d, Cocos2d-x등
17. 뷰 컨트롤러 살펴보기
•
•
SKView의 FPS, nodeCount를 보여줄 것인가 아닌가를 결정
•
•
이 부분은 디버깅시에 유효하다.
애니메이션과 렌더링은 SKView 객체가 수행한다
SKScene을 생성하여 이 Scene을 SKView에서 present 한
다.
•
•
게임 콘텐츠 구성은 SKScene이 담당한다
게임 개발자는 Scene위에 스프라이트와 레이블, 메뉴등을
담을 수 있다
40. 노드 클래스
•
SKScene, SKSpriteNode, SKLabelNode, 등은 모두
SKNode의 하위 클래스이다.
•
노드 클래스 자체는 화면에 나타나는 기능이 없으
나, 장면 그래프를 구조적으로 만드는데 필요한 기능
을 가지고 있다
•
•
자식 노드의 추가, 삭제, 읽기등의 기능을 할 수 있다.
장면 그래프 내에서 자식 노드는 부모 노드의 위치,
액션등이 변할 경우 영향을 받는다
85. 액션 추가하기
• 정적인 스프라이트 보다는 스프라이트를 움직
이거나 회전시키는 것과 같은 액션을 통해 게
임을 동적으로 만들 수 있다
• SKAction을 이용한다
86. SKAction
• 노드의 위치와 방향을 변화시킨다
• 노드의 크기와 스케일 속성을 변화시킨다
• 노드의 보여짐, 투명도를 변화시킨다
• 스프라이트 노드의 콘텐츠를 변화시키는 방법
으로 애니메이션을 만들 수 있다
• 스프라이트 노드의 색상을 변화시킨다
87. SKAction
• 간단한 사운드를 재생시킨다
• 노드트리에서 노드를 제거시킨다
• 오브젝트의 selector나 block을 만들어서 자
체적인 액션을 만들 수 있다
• 하나이상의 액션들을 조합하여 연속적인 액션
을 만들거나, 반복액션을 수행할 수 있다
88. 장면 사이의 이동
• 장면(Scene)은 게임을 만드는 기본적인 틀을
제공하고 있다.
• 예) 게임시작 장면, 메뉴 장면, 사용설명, 게
임, 게임종료, 랭킹장면,...
• 게임을 위한 여러 장면을 만든 후 이 장면들
사이의 이동이 필요하다.
• Sprite Kit은 장면 전환기능을 지원한다
89. 장면전환
• 다른 콘텐츠가 로딩되는 동안의 로딩화면 표
시기능
• 메인 메뉴 장면
• 사용자가 선택가능한 게임의 종류(mode)
• 게임 플레이
• 게임 종료등의 장면이 있을 수 있다
90. SKTransition
•
장면전환시에 필요한 다양한 효과를 생성할 수 있다.
•
•
•
•
•
•
crossFace
doorsCloseHorizontal/Vertical
doorsOpenHorizontal/Vertical
doorway
fade/faceWithColor
....
92. 물리 시뮬레이션
• Cocos2d의 물리 시뮬레이션
• Box2d, Chipmunk 등의 3rd party 프레임
워크를 이용함
• Sprite Kit의 경우 물리시뮬레이션 키트를 포
함
• 장면에 물리시뮬레이션이 필요할 경우
Physics body를 넣어야 한다.
93. 물리 시뮬레이션
•
•
3D 물리 시뮬레이션은 불가능
•
2D 물리시뮬레이션
물리 시뮬레이션을 위한 physics world가 필요함
•
•
•
중력을 적용
물리적 객체에 필요한 제동력(damping)을 적용
마찰력(friction) 계수를 적용함
94. 파티클
• 불꽃, 연기, 안개, 구름등과 같은 비정형 물리객
체
• Sprite Kit에는 파티클 시뮬레이션 기능을
내장하고 있다.
• SKEmitterNode를 이용함