메인 메뉴: 절차적 우주 테마게임 플레이: 가상 조이스틱, 흡수 반경형태 분기 선택게임 오버: 순위표·부활
배경
셋이서 만드는 모바일 게임입니다. 규칙은 하나, 나보다 작으면 먹이, 나보다 크면 죽음. 가상 조이스틱 하나로 병든 우주를 누비며 먹고 성장하고, 커질수록 시야가 넓어지고 더 큰 것을 먹을 수 있지만 어둠 속에는 더 큰 오염 천체가 떠돕니다. 2026년 4월 23일 시작했고, 9월 20일 Google Play 출시를 목표로 비공개 테스트를 돌리고 있습니다.
팀은 세 명입니다. 저(SJ)는 플레이어·흡수/성장·형태 분기·세이브·백엔드·수익화, HJ는 카메라·씬/메뉴·로비·배경 연출, WJ는 오브젝트/스폰·위협·난이도·특성·게임필을 맡았습니다.
내가 만든 것
플레이어와 흡수·성장: Rigidbody 이동, 접촉 시 크기 비교 후 자동 흡수, 부피 보존 성장(V = s³를 합산해 세제곱근). 흡수의 손맛은 ScalePunch로 따로 두어 성장 경로가 바뀌어도 피드백은 남게 했습니다. 6단계 성장 자동 전환과 단계별 흡수 필터, 단계 전환 줌 아웃 연출.
형태 분기: 성장 도중 흡인형(넓은 반경)·응축형(강한 인력)·표류형(빠른 기동) 갈림길. 데이터·컨트롤러·선택 UI를 만들고, 뷰를 IFormSelectionView로 분리해 HJ가 UI를 갈아끼울 수 있게 했습니다.
입력·세이브: 자동 부트되는 가상 조이스틱 오버레이, JSON 단일 파일 세이브와 자동 저장/로드 바인더.
백엔드(UGS): 익명 로그인, 클라우드 세이브(런 세이브와 메타 진행을 다른 키로 분리해 사망 시 세이브 삭제가 영구 진행을 지우지 않게), 리더보드(검증 스크립트가 통과시킨 점수만, 실패는 보류 후 재시도·반려는 폐기). 원칙은 “실패해도 게임은 로컬로 완전 동작”.
Google Play Games: 익명 계정을 GPGS로 승격(Link)해 PlayerId를 유지, 기기 변경 복귀, 네이티브 리더보드 UI와 폴백, 게이머 태그 동기화.
출시 실무·수익화: Play Console 앱 설정, keystore 비밀번호 환경변수 자동화, 개인정보처리방침·계정 삭제 요청 페이지(공개 레포로 Pages), 회원 탈퇴, 앱 아이콘·스플래시, 광고 시청 부활 버튼.
팀이 같이 일하는 방식
인터페이스 계약으로 나눠 만들기: 흡수는 IAbsorbable { float Size; void OnAbsorbed(GameObject) } 계약을 먼저 정하고 제가 감지·판정·성장을, WJ가 구현체와 스폰을 맡았습니다.
feature 브랜치 → PR → main, 씬 충돌 방지 규칙을 첫 주에 문서화했습니다.
Claude Code를 팀 도구로: 레포의 CLAUDE.md에 “작업 전 팀원 작업 동기화, 작업 후 백로그 기록, 설계 결정은 이유와 대안까지 DECISIONS.md”를 규칙으로 두고, /spec/decide/issue/done/sync 같은 슬래시 명령을 만들었습니다. 결정 기록이 140건 넘게 쌓였고, 새 팀원은 setup.ps1 하나로 명령어와 codegraph 훅을 받습니다.