은하계 인맥 커뮤니티를 만든 이야기 · 4편 — 슬롯 모델과 콜드 스타트
새 서비스에 가입한 첫날을 떠올려보자. 대개 텅 빈 화면이 뜬다. "뭘 해야 하지?" 싶은 그 막막함. 개발자들은 이걸 콜드 스타트(cold start) 문제라고 부른다. 은하계 서비스에서 이건 더 치명적이다. 빈 우주만큼 쓸쓸한 것도 없으니까.
초기엔 이랬다. "관심사를 N개 고르면, 별이 N개 생긴다." 관심사 = 별. 단순하고 직관적이었다.
그런데 두 계정으로 직접 써보며 눈으로 검증하다가, 내가 진짜 원했던 그림이 다르다는 걸 알았다. 나는 별자리가 먼저 빈 슬롯을 내어주고, 관심사가 그 슬롯을 채우는 모델을 그리고 있었다. 별을 흩뿌리는 게 아니라, 정해진 자리에 별을 하나씩 켜는 느낌.
즉, 가입하자마자 내 별자리 모양이 은하계 중심에 이미 떠 있다. 텅 빈 화면이 아니라, "여기 이 자리들을 채워보세요" 하고 손짓하는 화면. 콜드 스타트가 입구 그 자체로 바뀌었다.
시각적 규칙도 정했다.
회색 별을 누르면 관심사 지정 시트가 뜨고, 채우면 황금으로 전환된다. 별자리 하나가 시간에 따라 점점 밝아지는 걸 보는 재미가 여기서 나온다.
한 별자리 슬롯을 다 채웠는데 관심사가 더 있다면 → 별자리를 추가한다.
단, 별자리 총 한도는 12개. 임의의 제한이 아니라, PC에서 "내 은하계를 한눈에 조망하는 뷰"를 위한 설계였다. 12개면 큰 화면에 지도처럼 담기 딱 좋다.
이미지 불러오는 중…
작은 자부심 하나. 12궁 별자리의 슬롯 좌표를 대충 찍지 않고, 검수 도구를 따로 만들어 실제 별자리 사진 위에 얹어가며 실측했다. 전갈자리는 12개, 궁수자리는 16개, 사자자리는 13개… 실루엣을 배경으로 토글하면서 좌표를 맞췄다. 하늘의 그 모양이 화면에 최대한 그대로 뜨길 바랐다.
밤하늘을 보다가 시작한 프로젝트이니(1편), 그 별자리만큼은 진짜여야 했다.
여기까지가 무엇을 만들 것인가의 이야기였다. 개인 소유 별, 별-대-별 연결, 생일 슬롯.
다음은 어떻게 보이게 만들 것인가다. 이 모든 걸 손안의 화면에서 진짜 은하처럼 움직이게 하는 일 — three.js와 모바일의 이야기.
5편 예고: 「은하를 그리다 — 손안의 우주를 만들다」