봇 네 대가 짓는 건축 타임랩스는 어떻게 만드나 — 제작기
강주팸 · 2026-09-17
강주놀이터의 건축 타임랩스 코너는 모던 빌라 한 채가 빈 데크에서 완성될 때까지를 30초 남짓한 세로 쇼츠에 담습니다. 화면에는 캐릭터 넷이 건물 둘레를 오가며 짓습니다. 이 글은 그 영상이 어떻게 만들어지는지, 그리고 만들면서 틀렸던 것들을 정리한 기록입니다.
구성 — 설계, 배치, 봇, 카메라
- 설계: 프로그램이 시드(설계 번호)에서 건물을 뽑습니다. 층 수, 폭, 팔레트(재료 조합)가 시드마다 달라지고, 형상은 4층 「수직 빌라」와 6층 「적층 빌라」 두 가지를 번갈아 씁니다.
- 배치: 블록은 마인크래프트 자바 서버에 원격 명령(RCON
setblock)으로 놓습니다. 봇이 손으로 한 블록씩 설치하는 방식이 아닙니다. - 봇: 자바 에디션용 봇 라이브러리(mineflayer)로 캐릭터 넷을 서버에 접속시킵니다. 봇은 블록이 놓이는 자리 곁으로 걸어가 팔을 휘두르며 일하는 장면을 만듭니다.
- 카메라: 관전 시점을 아머스탠드에 태워 정해진 자리에서 촬영하고, 화면을 녹화해 조립합니다.
봇이 자바 전용이라, 베드락 에디션으로 만드는 건축 쇼츠 코너와는 파이프라인을 나눴습니다. 사이트의 도안이 베드락·자바 두 가지로 나뉘는 이유도 이것입니다.
왜 성채가 아니라 빌라인가
처음에는 성채, 탑, 마을처럼 실루엣이 서로 다른 형상을 돌렸습니다. 세 편을 올려 놓고 보니 부족한 것은 다양성이 아니라 일관성이었습니다. 우리 영상끼리 비교해도 4,101블록짜리 성채보다 2,711블록짜리 빌라가 훨씬 잘 읽혔습니다. 돌벽으로 된 성채는 안을 아무리 채워도 보이지 않지만, 유리벽 빌라는 안의 가구까지 보입니다. 블록 수가 아니라 재질 대비와 보이는 내부가 그림을 좋게 만든다는 것을 여기서 배웠습니다.
틀렸던 것 ① — 집이 화면 밖에 있었다
쇼츠는 세로(9:16) 화면입니다. 마인크래프트의 시야각(FOV)은 세로 기준이라 70도로 고정되고, 가로 화각만 화면 비율을 따라갑니다. 계산하면 가로 화면에서는 가로 화각이 약 102도지만, 세로 화면에서는 약 43도뿐입니다.
그런데 카메라 거리를 계산하는 코드에 가로 화면 값인 102도가 그대로 들어 있었습니다. 여섯 편 동안 카메라를 넓은 화각에 맞춰 세워 놓고 좁은 세로 화면으로 내보낸 것입니다. 실제로 재 보니 형상에 따라 집 폭의 28%, 많게는 3분의 1 이상이 화면 밖이었습니다. 미리보기 도구가 원근과 화면 비율을 반영하지 않는 그림이어서 알아채지 못했고, 그 뒤로는 실제 촬영과 같은 구도로 첫 프레임을 그려 보는 도구를 만들어 확인합니다.
이 일은 형상 선택까지 바꿨습니다. 옆으로 넓은 빌라는 세로 화면에서 띠처럼 보여, 위로 쌓는 두 형상만 남겼습니다. 6층 적층 빌라는 세로 화면 높이의 71%를 채웁니다.
틀렸던 것 ② — 봇이 따로 놀았다
「봇이 건물을 짓는 게 아니라 따로 노는 것 같다」는 지적을 받고 재 봤습니다. 블록이 놓이는 순간 가장 가까운 봇까지의 거리가 평균 9.6블록이었고, 손이 닿는 거리(5블록 안)에서 놓이는 블록은 18%뿐이었습니다.
처음엔 속도 문제라고 결론 내렸습니다. 그런데 코드를 보니 놓을 블록이 없는 틱에는 봇이 걷지도 않도록 조건이 묶여 있었습니다. 건축 시간을 늘리자 절반이 넘는 틱이 그랬고, 봇은 설정 속도의 절반으로 걷고 있었습니다. 걷기를 매 틱으로 풀고, 봇 곁에서 놓을 후보를 넓히고, 아래가 비어 있는데 위가 먼저 놓이지 않도록 막았습니다. 손 닿는 거리에서 놓이는 비율이 55~82%로 올랐습니다.
봇이 한자리에 붙어 서 있는 문제도 있었습니다. 같은 벽을 오래 세우는 동안 봇이 매번 같은 설 자리를 골랐기 때문입니다. 설 자리를 고르는 계산에 순번을 섞자 제자리에 서 있는 시간이 18%에서 2.2%로 줄었습니다.
틀렸던 것 ③ — 부드럽게 하려다 끊기게 했다
게임은 건축 중에 초당 21장 정도밖에 그리지 못합니다. 짧게 만들려고 시공 구간을 2배속으로 돌렸더니 「앞 3분의 2가 끊겨서 보기 불편하다」는 지적을 받았습니다. 초당 서로 다른 그림 수는 2배속이 더 많았지만, 프레임 간격이 불규칙해져 오히려 덜컹거렸습니다. 숫자 하나만 보고 판단한 실수였습니다.
그래서 시공은 배속을 걸지 않고 등속으로 찍고, 길이는 배속이 아니라 게임 안에서 더 빨리 지어서 맞춥니다. 카메라도 건물 둘레를 도는 궤도를 버리고, 정해진 자리에 서 있다가 장면이 바뀔 때 끊어 넘기는 방식으로 바꿨습니다. 서 있는 카메라에서는 회전 떨림 같은 문제가 아예 생기지 않았습니다.
영상과 도안의 블록 수가 다른 이유
영상에는 건물 주변의 나무, 꽃, 산울타리 같은 조경이 함께 놓입니다. 도안은 따라 지을 건물만 담기 때문에 조경을 뺍니다. 그래서 적층 빌라 #09는 영상이 2,935블록, 도안이 2,066블록입니다. 또 설계 코드가 바뀐 뒤에 옛 시드로 다시 뽑으면 영상과 다른 집이 나오므로, 그런 편은 도안을 만들지 않습니다.
배운 것
- 포기하기 전에 잰다. 「산수상 불가능」이라는 결론이 코드의 버그를 가리고 있었습니다.
- 숫자 하나가 눈을 이기지 못한다. 부드러움은 초당 프레임 수가 아니라 프레임 간격이었습니다.
- 미리보기는 실제 출력과 같은 조건이어야 한다. 화면 비율이 빠진 미리보기가 여섯 편을 속였습니다.