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)
- 랜덤으로 당첨자를 뽑는 게임의 특성상 게임 진행 중 사용자가 관여할 수 있는 부분이 없음.
- 지구, 달, 천왕성 그리고 무스타파 행성 각각의 중력을 사용자가 선택할 수 있음
- 맵 상단에 선택된 행성을 상징하는 문구로 개인적인 애정을 표시함.
- 별의 색깔을 애플에서 기본 제공하는 색깔을 사용함.
- 애플보다 더 나은 색깔을 찾을 자신이 아직은 없음
- 별을 제외한 객체는 테두리만 표시하여 별이 더 잘보이게 하고 2D 공간의 표현을 직관적으로 하기위해 선만 사용함
4. 개발 후기 (Post-Mortem)
- 처음으로 게임을 만들어 봄
- 흔히 얘기하는 게임 엔진, 물리 엔진이 무엇이고 어떻게 작동하는지 아주 간접적이지만 알게되었고 오랜 궁금증이 해소됨
- 범용성을 생각하며 언젠가 Unity로 개발해야할 듯
- 게임에 따라 다르겠지만 디자인이 8할일지도 모른다는 생각을 하게됨
- 밸런스 패치를 지속적으로 하는 이유와 1인 게임 개발자의 위엄을 알게됨
5. 향후 계획 (Future Plans)
향후 업데이트 계획
- 별이 충돌할 때 햅틱 추가
- 맵이 확장되고 화려한 카메라 무빙 추가
6. 마무리 (Conclusion)
게임을 만든다는 건 가상의 공간과 객체를 제작하는 것이기 때문에 아무리 작고 사소한 게임이라고 해도 만드는 과정동안 신이되는 기분을 느낄 수 있고, 나는 신이 아니라는 것도 알게됨
7. 첨부 자료 (Additional Materials)