인디 개발자와 아들의 우당탕탕 게임 개발 이야기
"아빠, 저 게임 하나 만들어 보고 싶어요!"
아들이 건넨 노트 한 권에서 모든 것이 시작되었습니다. 삐뚤빼뚤하지만 정성스럽게 적어 내려간 아이디어 노트. 제목은 <두 번째 생존자 (Second Survivor)>.
아이디어는 최근 가장 재밌게 하고 있던 게임에서 큰 영감을 받은 것이 느껴지고, 후에 커서 직접 개발자로서의 커리어를 만들고 싶다는 아들에게 좋은 프로젝트가 될 것 같았습니다.
최근 인디 개발자로 일하며 혼자 이런저런 프로젝트를 거쳤지만, 이번 프로젝트만큼 가슴 뛰고 동시에 어깨가 무거운 적은 없었던 것 같습니다. 이 글은 아들의 상상력을 현실로 구현하기 위해 고군분투했던, 그리고 지금도 현재진행형인 우리 부자의 현재 진행 중인 2D RPG 게임 개발 기록일지입니다.
처음 개발을 결심했을 때 가장 먼저 떠올린 도구는 Python이었습니다. 아이에게 코딩의 과정을 보여주기에 문법이 직관적이고, pygame이라는 훌륭한 라이브러리가 있었기 때문입니다.
우리는 윈도우 환경에서 파이썬을 설치하고, 검은색 화면에 하얀 점 하나를 띄우는 것부터 시작했습니다. 아들은 화면에 무언가 나타났다는 사실만으로도 눈을 반짝였습니다.
"아빠, 이제 캐릭터가 움직여야지?"
키보드 방향키를 누를 때마다 좌표가 바뀌고, 이미지가 이동하는 기본적인 로직을 구현했습니다. 하지만 개발이 진행될수록 욕심이 생겼습니다. 아들은 더 부드러운 움직임과 모바일(아이폰)에서도 돌아가는 게임을 원했고, 저는 점차 Python 환경에서의 배포나 성능 최적화에 대한 고민이 깊어졌습니다.
"우리 맥으로 개발하니까 macOS나 아이폰에서 바로 실행되게 만드는 건 어떨까?"
결국 우리는 개발 노선을 전면 수정하기로 했습니다. 맥북(macOS) 환경의 장점을 살려 Xcode를 열었고, UI 구성에 강력한 SwiftUI와 게임 엔진인 SpriteKit을 도입하기로 했습니다.
Pygame이 '날것의 코딩'을 배우는 과정이었다면, SwiftUI로의 전환은 '진짜 앱'을 만드는 과정이었습니다. 기존의 파이썬 코드를 Swift 문법으로 번역하는 것은 단순한 작업이 아니었습니다. 게임의 루프(Loop)를 다시 설계하고, 뷰(View)와 데이터 모델을 분리하는 구조적인 고민이 필요했습니다.
아들이 가장 기대했던 건 역시 캐릭터였습니다. 우리는 고전 게임의 향수를 불러일으키는 '링크(Link)' 스타일의 캐릭터 스프라이트 시트를 준비했습니다.
한 장의 이미지에 걷는 모습, 공격하는 모습이 모두 들어있는 시트를 잘게 쪼개어(Slicing), 코드로 순서대로 보여주는 작업. 이 과정은 마치 플립북(Flipbook) 만화를 그리는 것과 같았습니다.
가만히 있을 때: 숨 쉬는 듯한 미세한 움직임
걸을 때: 발을 교차하며 나아가는 역동성
이 찰나의 프레임을 맞추기 위해 아들과 수십 번씩 테스트 플레이를 반복했습니다. "아빠, 걷는 게 좀 어색해."라는 피드백이 오면 0.1초 단위로 프레임 속도를 조절했습니다.
게임의 긴장감을 위해 우리는 두 가지 핵심 수치를 설계했습니다. 바로 체력(Health)과 스태미나(Stamina)입니다.
단순히 수치만 띄우는 게 아니라, 플레이어의 행동에 따라 유기적으로 반응하도록 로직을 짰습니다.
스태미나 시스템: 기본 20으로 시작. 달릴 때는 초당 2.0씩 소모 (지치면 못 뛰어요!). 걷거나 쉴 때는 초당 1.5씩 회복. 개발 팁: 스태미나가 바닥나면 강제로 걷게 만들고, 완전히 회복되기 전까진 다시 달릴 수 없도록 '페널티' 로직을 추가했습니다.
체력 시스템: 총 100의 체력, 하트 5개로 시각화. 몬스터와 충돌하면 하트가 깎이고, 잠시 무적 시간이 주어짐.
이 로직을 구현하면서 아들에게 '변수'와 '조건문'이 게임 속에서 어떻게 '규칙'이 되는지를 설명해 줄 수 있었습니다.
아직 <두 번째 생존자>는 현재 진행형입니다. 맵에는 여전히 지나갈 수 없는 나무와 바위 같은 장애물을 더 배치해야 하고, 몬스터의 AI도 더 똑똑하게 만들어야 합니다.
하지만 완성보다 중요한 건, 매일 밤 아들과 머리를 맞대고 "다음엔 뭐 넣을까?"를 고민하는 그 시간들입니다. Python에서 Swift로 언어는 바뀌었지만, 우리가 함께 만드는 세상은 변함없이 확장되고 있습니다.
오늘도 늦은 밤, 저는 맥북을 엽니다. 나의 작은 기획자이자, 가장 든든한 파트너인 아들을 위해서 말이죠.