6월의 빛을 모으는 iOS 아케이드 게임 'June Jubilee'
June Solstice Game Jam 출품작으로, SwiftUI와 SpriteKit을 활용한 iOS 아케이드 게임 'June Jubilee' 개발
게임 메카닉에 6월의 다양한 축제와 기념일(June Celebrations)을 통합하여 독특한 경험 제공
솔스티스 밸런스 미터(Solstice Balance Meter)를 중심으로 낮과 밤의 균형을 맞추며 높은 점수 획득 목표
앨런 튜링(Alan Turing)을 기리는 바이너리 코드 브레이킹 챌린지 등 의미 있는 테마 통합 시도
SwiftUI와 SpriteKit의 통합 아키텍처
본 게임은 SwiftUI를 UI 계층으로, SpriteKit을 게임플레이 로직으로 분리하는 하이브리드 아키텍처를 채택했다.
SwiftUI는 앱 생명주기 관리, HUD(Heads-Up Display), 시작/종료 화면, 게임 모델 관리를 담당하며, `@MainActor`와 `@Published` 프로퍼티를 통해 실시간 UI 업데이트를 용이하게 함.
SpriteKit은 토큰 충돌 감지, 물리 효과, 터치 이동, 해저드(Hazard) 처리 등 핵심 게임플레이를 구현하며, 각 토큰의 테마별 점수 및 밸런스 효과를 모델 객체에 직접 반영.
이 구조는 UI와 게임 로직의 명확한 분리를 통해 코드의 가독성과 유지보수성을 높이는 데 기여함.
게임 메카닉에 통합된 6월 테마의 의미
June Jubilee는 6월의 상징성을 단순한 시각적 테마를 넘어 핵심 게임 메카닉으로 구현했다.
솔스티스 밸런스 미터(Solstice Balance Meter)는 6월 하지의 낮과 밤의 균형을 나타내며, 중앙 유지 시 높은 점수를 부여하여 플레이어에게 전략적 선택(Strategic Choice)을 강요함.
프라이드 토큰(Pride Tokens)은 연속 수집 시 보상을 제공하여 진정성과 연속성(Authenticity and Continuity)을 강조하고, 준텐스 토큰(Juneteenth Tokens)은 밸런스 미터를 중앙으로 재설정하여 회복과 해방(Restoration and Liberation)의 의미를 부여함.
앨런 튜링 토큰(Alan Turing Tokens)은 이진 논리(Binary Logic) 기반의 코드 브레이킹 챌린지를 통해 그의 지적 유산을 인터랙티브하게 체험하게 함.
이처럼 각 기념일은 게임 플레이 규칙에 직접적인 영향을 미쳐, 테마와 메카닉의 깊은 연관성을 만들어냄.
SpriteKit 기반의 터치 인터페이스 및 물리 엔진 활용
게임의 터치 드래그(Touch-drag) 이동 방식은 모바일 환경에서의 빠른 반응성을 위해 SpriteKit의 물리 엔진을 활용하여 구현되었다.
플레이어는 화면 어디든 드래그하여 빛의 수호자(Keeper of Light)를 조작하며, 이는 직관적인 조작 경험(Intuitive Control Experience)을 제공함.
충돌 감지(Collision Detection)는 토큰 수집, 그림자 오브(Shadow Orb) 회피, 그리고 앨런 튜링 토큰 수집 시 발생하는 이진 코드 타일(Binary Code Tile)과의 상호작용에 필수적임.
SpriteKit의 액션(Actions) 및 파티클 시스템(Particle System)은 떨어지는 축하 토큰, 별똥별 효과, 그리고 게임 종료 시의 애니메이션을 구현하여 시각적 풍부함을 더함.
데이터 영속성(Persistence)을 위한 UserDefaults 활용
게임의 최고 점수(Best Score)는 UserDefaults를 사용하여 로컬에 영속화된다.
이는 별도의 데이터베이스 설정 없이도 간단하게 사용자 데이터(User Data)를 저장할 수 있게 해주며, 게임 재실행 시에도 이전 최고 기록을 유지함.
@Published 변수와 연동하여 SwiftUI HUD에 실시간 최고 점수 표시가 가능하며, 게임 종료 시 업데이트된 점수를 즉시 저장하는 방식으로 구현됨.
다만, UserDefaults는 민감 정보 저장에는 부적합하며, 복잡한 데이터 구조나 대용량 데이터 저장에는 Core Data나 Realm 같은 솔루션이 더 적합할 수 있음.
iOS 네이티브 기술 스택의 장점과 고려사항
SwiftUI와 SpriteKit을 사용한 iOS 네이티브 개발은 최신 iOS 기능 활용 및 최적화된 성능을 제공한다.
SwiftUI는 선언형 UI 프레임워크로, 코드 가독성 및 생산성 향상에 기여하며, iOS 13부터 지원되어 비교적 최신 기기에서 실행됨.
SpriteKit은 Apple의 2D 게임 개발 프레임워크로, 하드웨어 가속 그래픽을 활용하여 부드러운 애니메이션과 복잡한 물리 효과를 구현하는 데 효율적임.
단점으로는 크로스 플랫폼 지원 불가가 있으며, 특정 iOS 버전 이상이 요구될 수 있다는 점을 고려해야 함. 또한, 앨런 튜링 챌린지와 같은 복잡한 로직은 SpriteKit 씬 내에서 효율적으로 관리해야 함.