[ios-Swift] Sprite Kit

Apple의 SpriteKit과 GameplayKit 프레임워크를 이용해서 2D 게임을 만드는 법에 대해 학습하는 강의입니다.

📚 0
📅 2023-12-12

SpriteKit?

SKScene는 SpriteKit 프레임워크의 일부로서, Apple이 제공하는 것입니다. 제 정보의 기준은 2022년 1월이므로 그 이후의 정확한 발표 연도는 알 수 없습니다. 그러나 SpriteKit은 iOS 7에서 처음 소개되었으며, SKScene는 그 일부로 iOS 7에서 사용할 수 있게 되었습니다. 그 후로도 SpriteKit 및 SKScene에 대한 업데이트가 계속되었을 것으로 예상됩니다. 최신 정보를 얻으려면 Apple의 공식 문서나 관련 개발자 자료를 확인하는 것이 좋습니다.

 

 

SpriteKit은 물리 엔진, 애니메이션 시스템, 오디오 지원 등 다양한 기능을 제공하여 게임 개발자가 효과적으로 게임을 디자인하고 개발할 수 있도록 돕습니다. SKScene은 이러한 기능들을 구현하고 관리하는 데 중요한 역할을 합니다.예를 들어, SKScene을 사용하여 게임 화면을 만들고, 게임 객체들을 배치하고, 애니메이션을 적용하며, 사용자 입력을 처리하는 등의 작업을 할 수 있습니다. 이를 통해 개발자는 게임의 렌더링 및 상호 작용에 대한 세부적인 제어를 얻을 수 있습니다.

 

자세한 내용 및 사용법은 Apple의 공식 문서나 SpriteKit 프레임워크 관련 자료에서 찾아볼 수 있습니다.

ios에 최적화, Metal API를 지원하여 빠른 속도

ios의 라이브러리를 자유롭게 가져다 쓸 수 있다.

고수준 언어인 Swift로 코딩가능

간단한 2d게임을 빠르게 개발

swift에 대한 학습도 수행가능

Apple 생태계 밖에서는 사용불가

 

SpriteKit 구조

일반 앱과는 달리 단 하나의 뷰컨트롤러만 사용

씬 위에 노드를 올린 뒤 노드를 움직여줌

뷰컨트롤러 위에서 미리 준비 되어 있는 씬을 바꿈으로써 화면 전환

 

SpriteKit 구성요소

SpriteKit의 주요 플레이어는 다음의 세 종류가 있다.

SKView : Sprite Kit의 기본 뷰이다. 이 뷰는 각 장면 컨텐츠를 렌더링하여 표시하는 일을 한다. 이는 UIView를 서브클래싱하여 만들어진다.

SKScene : 뷰는 장면들을 전환하여 보여줄 수 있다. SKScene은 각 장면에 해당하는 클래스이다. 장면은 화면에 등장하는 컨텐츠 구성요소인 Node들을 관리하게 된다. 또한 사용자 터치 이벤트를 이곳에서도 처리할 수 있다.

SKNode : 장면 내의 배경, 캐릭터, UI요소 등은 모두 SKNode로 표현된다. SKNode는 노드트리를 구성하며, 각각의 노드는 액션(SKAction)을 실행하여 애니메이팅 된다고 보면 된다.

그리고 장면 내 각 노드들이 물리적인 상호작용 (충돌, 중력의 적용, 힘을 받아 움직이거나 회전)을 하는 경우라면 노드의 physicsBody 속성을 정의하고, 그 속성들을 조정할 수 있다.

 

SpriteKit 노드 종류 (SKNode)

모든 노드는 SKNode의 하위 클래스!

SKLabelNode : 텍스트 label을 표시하는 노드. 글자색, 글자체도 지정 가능

SKSpriteNode : 이미지를 표시하는 노드. 직접 포토샾 같은 걸로 그림을 그려서 만들수 있음.

SKShapeNode : 도형을 표시하는 노드. 직접 코어 그래픽스를 이용해서 만들수 있음.

SKEmitterNode : 특수효과를 표시하는 노드. 파티클 이미터를 추가할 수 있음.

SKEffectNode : 특수효과를 표시하는 노드. 코어 이미지 필터를 자식노드에 적용.

SKVideoNode : 비디오를 재생해주는 노드.

이 글과 함께 연습해보세요

읽은 내용을 Play Lab에서 바로 실행해볼 수 있어요.

Coding Quest · 빈칸

곶감 건조대 회전 점검

N×N 곶감 건조대(N은 항상 홀수)가 있습니다. 건조대 각 칸에는 곶감의 무게가 적혀 있습니다. 건조대에서 실제로 곶감을 걸 수 있는 자리는 '세로 모래시계' 모양입니다 — 맨 윗줄과 맨 아랫줄은 폭이 전체(N칸)이고, 가운데 줄로 갈수록 폭이 점점 좁아져 정중앙 줄에서는 정확히 1칸만 남습니다(위아래로 대칭인 모래시계 모양). 건조대를 시계방향으로 90도 돌리면, 원래는 곶감이 없던 자리

바로 연습하기
Coding Quest · 알고리즘

곶감 건조대 회전 점검 (전체 구현)

N×N 곶감 건조대(N은 항상 홀수)가 있습니다. 건조대 각 칸에는 곶감의 무게가 적혀 있습니다. 건조대에서 실제로 곶감을 걸 수 있는 자리는 '세로 모래시계' 모양입니다 — 맨 윗줄과 맨 아랫줄은 폭이 전체(N칸)이고, 가운데 줄로 갈수록 폭이 점점 좁아져 정중앙 줄에서는 정확히 1칸만 남습니다(위아래로 대칭인 모래시계 모양). 건조대를 시계방향으로 90도 돌리면, 원래는 곶감이 없던 자리

바로 연습하기
Coding Quest · 알고리즘

곶감 건조대 회전 점검 (전체 구현)

N×N 곶감 건조대(N은 항상 홀수)가 있습니다. 건조대 각 칸에는 곶감의 무게가 적혀 있습니다. 건조대에서 실제로 곶감을 걸 수 있는 자리는 '세로 모래시계' 모양입니다 — 맨 윗줄과 맨 아랫줄은 폭이 전체(N칸)이고, 가운데 줄로 갈수록 폭이 점점 좁아져 정중앙 줄에서는 정확히 1칸만 남습니다(위아래로 대칭인 모래시계 모양). 건조대를 시계방향으로 90도 돌리면, 원래는 곶감이 없던 자리

바로 연습하기
Coding Quest · 알고리즘

구조물 블록 쌓기 (다중조건 정렬 DP)

가로(w), 세로(d), 높이(h)가 주어진 블록 N개가 있습니다. 회전은 허용하지 않으며, 어떤 블록 위에 다른 블록을 올리려면 위에 놓일 블록의 가로와 세로가 모두 아래 블록보다 작아야 합니다. 각 블록은 최대 한 번만 사용할 수 있을 때, 쌓을 수 있는 탑의 최대 높이(사용한 블록들의 높이 합)를 구하세요.

바로 연습하기
Coding Quest · 알고리즘

구조물 블록 쌓기 (다중조건 정렬 DP)

가로(w), 세로(d), 높이(h)가 주어진 블록 N개가 있습니다. 회전은 허용하지 않으며, 어떤 블록 위에 다른 블록을 올리려면 위에 놓일 블록의 가로와 세로가 모두 아래 블록보다 작아야 합니다. 각 블록은 최대 한 번만 사용할 수 있을 때, 쌓을 수 있는 탑의 최대 높이(사용한 블록들의 높이 합)를 구하세요.

바로 연습하기