SpriteKit으로 게임 개발한 후기

Jaemin Kim·2024년 10월 23일
0

iOS

목록 보기
8/8

POLLETTE - 랜덤 당첨자 뽑기

1. 개요 (Introduction)

  • 폴렛(Poll + roulette), 시뮬레이터, iOS
  • 점심 식사 후 커피내기로 가위바위보를 하다가 도파민을 더 충족시킬 수 있는 방법을 생각하다가 만들게 됨
  • 2-8명이 참여하고 행성에 따른 중력에 의해 별이 장애물을 통과해 가장 먼저 도착 지점에 들어가고 남은 한 명이 당첨되는 게임

2. 개발 과정 (Development Process)

언어

  • Swift & SpriteKit
    • SpriteKit이 Unity와 같은 게임 개발 툴과 비교했을 때 보편화된 SDK는 아니지만 개인 맥북에서 Unity를 돌리는 것이 부담스러웠음
    • C#으로 개발 경험이 없음
    • 애플이 개발한 툴이기에 한번을 써보고 싶었음

개발 과정
우주의 공허함을 표현하기 위해서 디자인을 최소화 하고 기획 과정없이 코드부터 작성함.

직면한 문제

  • 게임 개발 SDK로 UI를 그리는 건 생각보다 더 오래 걸리고 불편함
    • Label을 만들고 속성을 지정하고 Constraint를 지정하는 과정을 라이브러리를 사용하지 않았기 때문일 수도 있음
    • 레이아웃을 SwiftUI로 그려도 됐지만 이상한 고집을 부린것도 있음

해결방법: 게임의 방법과 밸런스에 대한 힌트를 최소화함. 사용자에게 불친절 할 수 있지만 익숙해지면 오히려 예측할 수 없는 결과를 기대하게 할 수 있다고 생각함

  • 실제 플레이하는 부분의 구현보다 밸런스를 더 오래 생각하게 됨
    • 외부의 영향을 받지 않는 가상의 환경이기 때문에 매번 똑같은 결과가 나올 수 있음
    • 장애물이 지나치게 많을 경우 사용자가 지루하게 느낄 수 있음. 반대로 장애물이 부족할 경우 상황의 변수가 많지 않음

해결방법: 장애물이 초기 회전된 정도를 랜덤으로 하고 시작 전 사용자가 행성을 선택해 중력을 선택할 수 있도록 함

  • 맵 만들기
    • 아이콘을 제외한 디자인 리소스가 없었기 때문에 표현할 방법이 제한적임
    • 카메라가 객체들을 따라가며 더 박진감 있게 만들고 싶었으나 어떤 객체를 따라갈지 정하지 못함

해결방법: Bézier curve를 활요하여 최소한의 맵 테두리를 그리고 당첨자가 확정되었을 때 해당 객체를 따라감. 당첨차 확정시 중력 영향을 받지 않도록 하여 슬로우모션처럼 보이게 함.

3. 핵심 기능 및 특징 (Key Features)

  • 게임의 주요 기능과 특징 설명
  • 랜덤으로 당첨자를 뽑는 게임의 특성상 게임 진행 중 사용자가 관여할 수 있는 부분이 없음.
  • 지구, 달, 천왕성 그리고 무스타파 행성 각각의 중력을 사용자가 선택할 수 있음
    • 게임상 별의 무게는 1kg
  • 맵 상단에 선택된 행성을 상징하는 문구로 개인적인 애정을 표시함.
  • UI/UX 디자인
  • 별의 색깔을 애플에서 기본 제공하는 색깔을 사용함.
    • 애플보다 더 나은 색깔을 찾을 자신이 아직은 없음
  • 별을 제외한 객체는 테두리만 표시하여 별이 더 잘보이게 하고 2D 공간의 표현을 직관적으로 하기위해 선만 사용함

4. 개발 후기 (Post-Mortem)

  • 처음으로 게임을 만들어 봄
    • 흔히 얘기하는 게임 엔진, 물리 엔진이 무엇이고 어떻게 작동하는지 아주 간접적이지만 알게되었고 오랜 궁금증이 해소됨
  • 범용성을 생각하며 언젠가 Unity로 개발해야할 듯
  • 게임에 따라 다르겠지만 디자인이 8할일지도 모른다는 생각을 하게됨
  • 밸런스 패치를 지속적으로 하는 이유와 1인 게임 개발자의 위엄을 알게됨

5. 향후 계획 (Future Plans)

향후 업데이트 계획

  • 별이 충돌할 때 햅틱 추가
  • 맵이 확장되고 화려한 카메라 무빙 추가

6. 마무리 (Conclusion)

게임을 만든다는 건 가상의 공간과 객체를 제작하는 것이기 때문에 아무리 작고 사소한 게임이라고 해도 만드는 과정동안 신이되는 기분을 느낄 수 있고, 나는 신이 아니라는 것도 알게됨

7. 첨부 자료 (Additional Materials)

0x0ss
0x0ss-1
0x0ss-2
0x0ss-3

profile
야구, 좋아하세요?

0개의 댓글