도시에 심을 소품 라이브러리가 있었다. 벤치·볼라드·소화전 같은 것들, 목록상 25종. 든든했다.
배치 품질을 올리다가 소품 하나를 확대해 봤다. 벤치가 이상했다.
이름만 벤치였다
“Benches”라는 이름이 붙은 그 에셋은, 열어보니 벤치 크기의 정육면체였다. 등받이도 다리도 없는 상자. 멀리서 보면 벤치처럼 보이라고 놓은 자리 채움용이었던 것이다.
전수조사를 했다. 25종 중 실제 형상을 가진 진짜는 8종이었다. 나머지 17종은 상자나 판때기에 이름표만 붙은 것들이었다.
목록은 25라고 말했고 나는 그 숫자를 믿었다. 이름표는 검사가 아니다. 내용물을 연 적이 없으니 몇 달 동안 몰랐다.
사람 눈 검수로는 또 뚫린다
라이브러리를 다시 만들면서 고민한 건 재발이었다. 이번엔 내가 열어봤지만, 다음에 누가 상자를 추가하면 또 섞인다.
그래서 금지를 코드가 강제하게 했다. 내보낸 파일을 열어 정점 수와 형상을 실측해서, 단순 상자·판때기 수준이면 게이트가 탈락시킨다. 사람의 성실함이 아니라 검사기가 막는다.
숫자보다 내용물
새 라이브러리는 25종 전부 실제 형상으로 채웠고, 게이트 8항목 전부 통과로 닫았다. 이번에 배운 건 단순하다. 자산 목록의 숫자는 개수이지 품질이 아니다. 열어보기 전까지 그 목록은 주장일 뿐이다.
재발방지 체크리스트
① 자산 목록을 물려받으면 개수를 세지 말고 내용물을 연다. 이름표는 검사가 아니다.
② “몇 종 보유”라는 숫자에는 진짜의 정의(최소 형상 기준)를 붙인다.
③ 품질 기준은 문서가 아니라 게이트 코드로 강제한다. 다음 사람도 뚫을 수 없게.
④ 자리 채움용 임시 에셋을 넣을 땐 임시라고 표시한다. 표시 없는 임시는 영구가 된다.
① 자산 목록을 물려받으면 개수를 세지 말고 내용물을 연다. 이름표는 검사가 아니다.
② “몇 종 보유”라는 숫자에는 진짜의 정의(최소 형상 기준)를 붙인다.
③ 품질 기준은 문서가 아니라 게이트 코드로 강제한다. 다음 사람도 뚫을 수 없게.
④ 자리 채움용 임시 에셋을 넣을 땐 임시라고 표시한다. 표시 없는 임시는 영구가 된다.