처음 만나는 레드스톤 ④ — 관측기와 클럭, 회로가 저절로 움직이는 원리
블록의 변화를 감지하는 관측기와 켜짐·꺼짐을 반복하는 클럭 회로를 다룬다. 관측기 두 개 클럭, 리피터 클럭, 비교기 클럭의 원리를 짚고, 서버에서 고속 클럭이 렉을 만드는 이유와 지켜야 할 매너를 정리했다.

3화까지 만든 장치는 모두 사람이 레버를 당기거나 버튼을 눌러야 움직였다. 그런데 자동 농장, 자동 문, 깜빡이는 간판은 아무도 손대지 않아도 움직인다. 비결은 두 가지다. 하나는 무언가 바뀌는 순간을 알아채는 부품, 다른 하나는 스스로 켜졌다 꺼지기를 반복하는 회로다.
「처음 만나는 레드스톤」 4화는 이 두 가지, 관측기(Observer)와 클럭 회로를 다룬다. 다음 5화에서 만들 첫 자동 농장의 핵심 부품이 바로 관측기다. 이번 화를 끝내면 회로가 '저절로' 움직이는 원리를 설명할 수 있고, 그 회로를 서버에서 예의 바르게 쓰는 법도 알게 된다.
이번 화도 자바 에디션 기준이다. 베드락 에디션과 다른 부분은 따로 표시한다. 시간 단위는 '게임 틱'을 쓴다. 1게임 틱은 1/20초(0.05초)이고, 2게임 틱이 2화에서 말한 리피터 1단계(0.1초)와 같다.
관측기 — 블록의 변화를 보는 눈
관측기는 조약돌 6개, 레드스톤 가루 2개, 네더 석영 1개로 만든다. 한쪽 면에는 얼굴이, 반대쪽 면에는 빨간 점이 있다. 얼굴이 보는 면이고, 빨간 점이 신호가 나오는 면이다.
관측기는 얼굴 앞 한 칸을 지켜보다가, 그 칸의 블록이 바뀌는 순간 뒤쪽으로 짧은 신호를 한 번 내보낸다. 여기서 '바뀐다'는 것은 생각보다 넓다.
- 블록이 놓이거나 부서질 때
- 작물이 한 단계 자랄 때, 사탕수수가 한 칸 더 자랄 때
- 레드스톤 가루가 켜지거나 꺼질 때, 셜커 상자가 열리고 닫힐 때 같은 블록 상태 변화
반대로 상자를 여닫는 것처럼 감지하지 못하는 변화도 있다. 관측기가 반응하지 않으면 '그 블록의 상태가 실제로 바뀌는가'를 먼저 의심하면 된다.
관측기 신호의 특징
| 항목 | 내용 |
|---|---|
| 신호 세기 | 15 (최대) |
| 신호 길이 | 2게임 틱(0.1초)짜리 짧은 펄스 한 번 |
| 신호가 나오는 곳 | 빨간 점이 있는 뒷면 한 곳뿐 |
| 뒤에 블록이 있으면 | 그 블록을 강하게 충전한다. 그 블록에 붙은 가루·피스톤도 움직일 수 있다 |
| 신호 전달 | 관측기 자체는 신호를 통과시키지 않는다 |
| 피스톤으로 옮기면 | 꺼진 관측기를 옮기면 펄스를 한 번 낸다. 이 성질이 '비행 기계'의 바탕이다 |
놓는 요령도 하나 알아 두자. 관측기는 빨간 점이 놓는 사람 쪽을 향하게 놓인다. 그러니 지켜보고 싶은 블록을 정면으로 바라본 채 그 앞에 관측기를 놓으면, 얼굴이 자연스럽게 그 블록을 향한다.
베드락 에디션의 관측기는 조금 다르다. 블록 갱신을 일으키는 거의 모든 일에 반응해 자바보다 감지 범위가 넓고, 홀수 게임 틱에만 감지한다. 피스톤으로 옮긴 관측기는 곧바로 신호를 낸다. 신호 세기 15와 길이 2게임 틱은 같다.
클럭이란 무엇인가
클럭(clock)은 켜짐과 꺼짐을 끝없이 반복하는 회로다. 한 번 켜졌다 꺼지는 데 걸리는 시간을 주기라고 하고, 1초에 몇 번 반복하는지를 진동수라고 한다. 계산은 간단하다. 20을 주기(게임 틱)로 나누면 진동수가 나온다. 주기가 4게임 틱이면 1초에 5번이다.
클럭의 원리는 하나로 모인다. 자기 출력을 자기 입력으로 되돌리되, 그 사이에 지연을 둔다. 신호가 고리를 한 바퀴 도는 동안 꺼졌다 켜지기를 반복하는 것이다. 이번 화에서는 초보자가 만들기 쉬운 세 가지를 본다.

① 관측기 클럭 — 블록 두 개로 끝
가장 쉬운 클럭이다. 관측기 두 개를 얼굴끼리 마주 보게 놓으면 된다.
- 관측기 A를 놓는다.
- A의 얼굴 바로 앞 칸에, A를 바라보도록 관측기 B를 놓는다. 이제 둘의 얼굴이 서로를 본다.
- B가 놓이는 순간 A가 그 변화를 보고 켜진다. 그러면 B가 A의 변화를 보고 켜지고, 다시 A가 B를 보고… 끝없이 반복된다.
손으로 놓았을 때 주기는 6게임 틱(0.3초, 1초에 약 3.3번)이다. 2게임 틱 켜지고 4게임 틱 꺼진다. 피스톤으로 관측기 하나를 밀어 넣어 맞붙이면 주기가 4게임 틱(1초에 5번)이 된다. 생김새는 같아도 어떻게 맞붙였는지에 따라 주기가 달라진다는 점이 재미있다.
출력은 두 관측기의 빨간 점 쪽에서 꺼낸다. 멈추려면 관측기 하나를 부수거나 피스톤으로 밀어 떼어 놓는다.
실습 — 박자 맞추는 소리 블록 관측기 클럭의 한쪽 관측기 뒤(빨간 점 쪽)에 소리 블록을 놓아 보자. 펄스가 올 때마다 소리 블록이 울려 1초에 세 번 남짓 '틱틱틱' 소리가 난다. 눈으로 볼 수 없던 클럭의 박자를 귀로 확인할 수 있다. 확인했으면 관측기를 부숴 꼭 멈추자.
관측기 하나로도 클럭을 만들 수 있다. 관측기 얼굴 앞 칸에서 시작한 레드스톤 가루를 빙 돌려 관측기 뒤(출력)까지 이으면, 관측기가 자기 출력이 가루를 켜고 끄는 모습을 보고 다시 신호를 낸다. 지켜보는 가루를 한 번 부쉈다 다시 놓으면 시작된다. 고리 중간에 리피터를 넣으면 주기가 길어진다.
② 리피터 클럭 — 속도를 조절하는 고리
2화에서 배운 리피터로 만든다. 가장 단순한 형태는 리피터 두 개를 레드스톤 가루로 이은 고리다.
- 바닥에 2×3 칸을 잡는다. 가운데 칸 두 곳에 리피터를 서로 반대 방향으로 놓는다.
- 양 끝 네 칸에 레드스톤 가루를 깔아, 한 리피터의 앞이 다른 리피터의 뒤로 이어지게 둥근 고리를 만든다.
- 고리에 아주 짧은 펄스를 한 번 넣는다.
까다로운 것은 3단계다. 리피터를 모두 1단계로 두었다면 시작 펄스는 4게임 틱 이하여야 한다. 그보다 길면 고리 전체가 계속 켜진 채로 굳어 버리고, 회로를 부쉈다 다시 만드는 수밖에 없다. 레버나 버튼은 너무 길다.
위키가 권하는 확실한 방법은 이렇다. 레드스톤 블록 위에 레드스톤 횃불을 세워 고리 옆에 댄다. 횃불은 놓이는 순간 켜지지만, 신호를 받은 블록에 붙어 있으니 4게임 틱 뒤에 저절로 꺼진다(1화의 '횃불은 붙은 블록에 신호가 오면 꺼진다'). 이렇게 딱 4게임 틱짜리 펄스가 들어가면 횃불과 레드스톤 블록은 치워도 된다.
| 리피터 설정 | 결과 |
|---|---|
| 두 개 모두 1단계 | 주기 4게임 틱, 1초에 5번 (2틱 켜짐, 2틱 꺼짐) |
| 1단계 리피터를 더 끼워 넣기 | 펄스는 그대로, 주기만 길어진다 |
| 리피터 하나의 단계를 올리기 | 펄스가 가장 긴 지연만큼 길어지고, 주기도 길어진다 |
리피터 클럭은 소리가 나지 않고 납작하다. 대신 멈추려면 고리를 끊어야 한다. 위키에는 끈끈이 피스톤으로 블록 하나를 넣었다 뺐다 해 고리를 여닫는 '스위치형' 설계도 실려 있다. 3화의 피스톤 문과 같은 원리다.

③ 비교기 클럭 — 스스로 빼서 꺼지는 회로
2화에서 비교기의 뺄셈 모드를 배웠다. 뒤 신호에서 옆 신호를 뺀 만큼만 내보내는 모드다. 비교기 클럭은 비교기의 출력을 자기 옆구리로 되돌려 만든다.
- 뒤에서 15짜리 신호가 들어오면 비교기는 15를 내보낸다.
- 이 신호가 가루를 돌아 옆구리로 들어올 때는 한 칸 지나며 14로 약해져 있다. 비교기는 15−14=1만 내보낸다.
- 세기 1은 옆구리까지 돌아오지 못한다. 옆 신호가 0이 되니 비교기는 다시 15를 낸다. 1단계로 돌아간다.
이렇게 2게임 틱마다 출력이 바뀌어 주기 4게임 틱, 1초에 5번 깜빡인다. 뒤 입력은 레버든 레드스톤 블록이든 상관없고, 세기 2 이상이면 작동한다. 단, 진짜로 '꺼졌다 켜졌다' 하는 곳은 비교기 옆 가루뿐이고, 비교기 앞쪽은 15와 1 사이를 오간다. 출력을 다른 장치로 끌어갈 때는 가루를 몇 칸 더 이어 세기가 0까지 떨어지게 하는 편이 안전하다. 크기가 작아 2×2 칸 남짓에 들어가는 설계도 있지만, 처음에는 원리를 이해하는 데 집중하자.
클럭은 어디에 쓰나, 언제 쓰지 말아야 하나
클럭은 '정해진 간격으로 무언가를 하라'는 신호를 만든다. 레드스톤 램프 간판을 깜빡이거나, 발사기가 일정한 박자로 작동하게 하거나, 일정 시간마다 피스톤으로 작물을 수확하는 농장에 쓴다. Minecraft Wiki의 고밀도 호박·수박 농장 설계도 클럭으로 피스톤을 움직이며, 주기는 5~6초 이상을 권한다. 농장은 이렇게 느린 클럭이 어울린다. 긴 주기가 필요하면 호퍼 사이로 아이템이 오가는 시간을 이용하는 호퍼 클럭을 쓰는데, 자바와 베드락의 주기가 서로 달라 이번 화에서는 이름만 소개한다.
그런데 많은 경우 클럭이 아예 필요 없다. 사탕수수가 다 자랐는지 알고 싶다면 1초에 몇 번씩 확인하는 클럭 대신, 자랐을 때 딱 한 번 신호를 내는 관측기를 쓰면 된다. 다음 화의 사탕수수 농장이 그렇다. '변화가 있을 때만' 움직이는 회로가 '계속' 움직이는 회로보다 언제나 가볍다.
서버에서 고속 클럭이 문제인 이유
마인크래프트 서버는 1초에 20번, 매 게임 틱마다 세상을 계산한다. 그 0.05초 안에 해야 할 일이 너무 많으면 틱이 밀리고, 모든 플레이어의 게임이 느려진다. 이것이 '렉'이다.
클럭은 신호가 바뀔 때마다 주변 블록에 갱신을 알린다. 1초에 5번 깜빡이는 클럭이 피스톤 10개를 움직인다면, 피스톤이 늘었다 줄었다 하는 동작만 1초에 100번이다. 블록을 실제로 움직이는 피스톤, 밝기를 바꾸는 램프는 특히 계산이 많이 드는 편이다. 이런 클럭이 아무도 없는 기지에서 몇 시간씩 돌면, 서버 전체가 그 값을 치른다. 위키는 또 1초에 10번이 넘는 빠른 클럭에서는 피스톤이 계속 켜진 것처럼 행동한다고 경고한다. 너무 빠른 클럭은 렉만 만들고 제대로 작동하지도 않는 셈이다.
서버 클럭 매너 다섯 가지
- 모든 클럭에 끄는 방법(레버, 피스톤 스위치)을 만든다.
- 필요한 만큼만 느리게. 농장은 몇 초에 한 번이면 충분하다.
- 클럭 대신 관측기로 변화를 감지할 수 있는지 먼저 생각한다.
- 자리를 비울 때는 끄고 간다.
- 서버 규칙을 확인한다. 고속 클럭을 금지하거나 제한하는 서버도 있다.
4화 정리
- 관측기는 얼굴 앞 블록이 바뀌면 뒤쪽으로 세기 15, 2게임 틱짜리 펄스를 한 번 낸다.
- 클럭은 출력을 입력으로 되돌려 켜짐과 꺼짐을 반복한다. 진동수는 20 ÷ 주기(게임 틱).
- 관측기 클럭은 두 개를 마주 보게, 리피터 클럭은 짧은 시작 펄스가 관건, 비교기 클럭은 뺄셈 모드로 스스로 꺼진다.
- 서버에서는 끌 수 있게, 느리게, 가능하면 관측기로.
5화에서는 드디어 관측기와 3화의 피스톤을 합쳐 첫 자동 농장을 짓는다. 사탕수수가 자라면 관측기가 알아채고, 피스톤이 베어 내고, 호퍼가 주워 상자에 담는다. 회로가 막히면 MINECAP 질문 게시판에 스크린숏과 함께 물어보자.
참고 자료
이 기사에 대해 이야기하고 싶나요?
MINECAP에서 다른 마인크래프트 유저들과 의견을 나눠 보세요.