먼저 하나, 그다음 다섯: 이 게임이 자라는 방법 🪨
버전 목록을 보면 5주 남짓한 기간에 릴리스가 29개나 있어요. 6월 20일의 0.1.0부터 어제의 0.9.0까지요. 어떻게 가능할까요? 완성된 기능을 한 번에 쭉 만들어서는 절대 아니에요. 우리는 단계로 만들어요. 먼저 정말로 작동하는 가장 작은 버전, 그게 안정적이고 재미있으면 다음 단계예요. 지금은 소행성이 그걸 가장 잘 보여 줘요.
1단계: 일단 존재해요. 소행성이 게임에 처음 들어왔을 때 중요한 질문은 하나뿐이었어요. 몇 분이면 한 바퀴 도는 작은 천체에서 착륙, 걷기, 채굴이 되는가? 소행성은 작은 행성이 아니에요. 자기만의 크기 등급, 다른 중력, 다른 지평선이 있어요. 그게 1단계였고, 나머지는 일부러 제쳐 뒀어요. 그래서 종류는 딱 하나였어요. 종류가 코드에 박혀 있었고 가능한 표면 목록이 없어서, 모든 기둥이 수정으로 덮였어요. 은하 전체의 소행성이 전부 똑같아 보였어요. 달라지는 건 둘레와 크레이터의 위치뿐이었어요.
2단계: 이제 달라져도 돼요. 2단계는 어제 끝났고, 다음 업데이트로 게임에 들어와요. 그러면 소행성 계열이 다섯 가지가 되고, 바위마다 가중 확률로 자기 계열을 뽑아요. 암석질은 일꾼이고 철, 규산염, 구리, 주석을 품고 있어요. 금속질은 거의 덩어리 금속이에요. 곳곳에 티타늄이 있고, 더 깊은 곳에 코발트, 텅스텐, 백금이 있어요. 얼음질은 영하 95도이고 금속 대신 휘발성 물질을 품어요. 탄소, 리튬, 황이에요. 탄소질은 그을음처럼 새까맣고 동굴투성이이며, 아주 깊은 곳에 우라늄과 다이아몬드를 숨기고 있어요. 그리고 결정질은 예전에는 모든 소행성이 그랬는데 이제는 드문 발견이에요. 거기에 천체마다 자기만의 크레이터 지형이 생겨요. 밀도, 분지의 너비, 깊이, 가장자리 높이, 그 사이 먼지가 얼마나 굴곡지게 깔렸는지까지요. 전에는 온 우주에 고정된 숫자 다섯 개였고, 그래서 공기 없는 천체가 다 똑같아 보였어요. 참고로 달도 같은 코드 경로를 지나므로 덕을 봐요.
진짜 보상은 그다음에 와요. 2단계를 깔끔하게 만들면 3단계가 좋아져요. 여섯 번째 계열은 더 이상 프로그래밍 작업이 아니라 데이터 파일의 항목 하나예요. 이름, 표면, 광석, 빈도를 적으면 끝이에요. “누가 그걸 넣어야 하는데”가 “어느 저녁에 한번 해 볼 수 있겠다”로 바뀌었어요. 이래서 다시 만든 보람이 있어요.
왜 늘 이렇게 할까요? 이유는 세 가지고, 모두 아프게 배운 거예요. 첫째, 아이디어가 재미있을지는 미리 알 수 없어요. 작은 첫 버전은 저녁 한 번에 유스투스와 해 볼 수 있고, 그러면 확장할 가치가 있는지, 아니면 사실 지루한 아이디어였는지 알게 돼요. 둘째, 작은 단계는 검토하고 테스트하고 필요하면 되돌릴 수 있어요. 오십 군데를 한꺼번에 건드리는 거대한 기능은 그저 기도할 수밖에 없어요. 셋째, 우리에게 가장 중요한 이유예요. 이 게임은 아이들이 해요. 반쯤 만든 거대한 기능보다 확실하게 작동하는 작은 기능이 아이들에게 나아요.
어디서나 같은 패턴이에요. 블록은 처음에 정육면체였어요. 경사로, 계단, 구는 나중에 왔고, 그다음에 색칠, 그리고 아무것도 골판지 상자처럼 보이지 않도록 하는 섬세한 모서리 깎기가 왔어요. 행성은 회색 바위로 시작했어요. 진짜 바다, 동굴 체계, 고도에 따른 기후, 화산은 나중에 왔고, 추운 세계의 얼어붙은 바다가 오고, 이제 소행성이에요. 아이 안전에서는 처음에 채팅의 신고 명령뿐이었고, 그다음 이유가 있는 차단과 일시 정지, 가장 최근에 보이지 않는 관찰자 모드가 왔어요. 그리고 막 나온 도적도 아직 1단계예요. 날아다니는 진짜 발사체가 아니라 근접 효과로 때려요. 빠뜨린 게 아니라 계획에 적혀 있어요. 1단계가 검증되면 2단계예요.
이런 방식의 대가. 솔직히 두 가지예요. 먼저, 기존 세계가 바뀌어요. 천체의 종류는 불러올 때마다 다시 계산되고 저장되지 않기 때문에, 예전 세계의 소행성은 다음 업데이트에서 다른 계열과 다른 지형을 갖게 돼요. 여러분이 지은 블록은 남지만, 갑자기 허공에 떠 있거나 바위 속에 박힐 수 있어요. 그래서 이런 건 늘 릴리스 노트에 적어요. 다음으로, 첫 단계도 두 번째 단계가 가능하도록 지어야 해요. 소행성의 경우 이제 코드에 “이게 소행성인가?”에 답하는 곳이 정확히 한 군데이고, 생성된 모든 계열이 정말로 소행성으로 분류되는지 확인하는 테스트가 있어요. 호출하는 곳을 하나라도 빠뜨리면 고약한 옛 버그가 돌아와요. 블록을 하나도 캘 수 없는 바위요.
이번에도 테스트가 우리를 살렸어요. 새 계열을 만드는 중에 오래된 검사가 울렸어요. 광상이 있는 모든 세계에서 케이블 레시피에 닿을 수 있는지 확인하는 검사예요. 새 계열 다섯 중 셋에 구리가 아예 없었어요. 플레이어가 거기서 진행이 막혔을 거예요. 사람은 아무도 눈치채지 못했고, 몇 주 전에 누군가 써 둔 테스트가 알아챘어요. 이제 모든 계열에 구리와 규산염이 있어요.
다음은 식물, 동물, 도적 사이 어딘가에서 또 이런 단계 하나예요. 어느 것이 될지는 대개 유스투스가 정해요. 🌟
댓글