주민 교배 안함 - jumin gyobae anham

쉽게 말해서, 주민에게 임의로 플레이어가 64개의 빵을 던져주고, 그것을 다른 곳에 사용하지 않는다는 가정 하에(다른 주민에게 나눠준다던가) 총 21회 분량의 '번식 의지'를 갖게 됩니다.

주민들의 번식 의지를 활성화시키는 또 다른 방법은 거래입니다.

완전히 새로운 거래가 이뤄졌을 때 100%로, 이미 1회 이상 이뤄진 거래를 실행할 때 20%의 확률로 번식 의지가 활성화됩니다.

(음식에 의한 번식 의지 활성화와, 거래에 의한 번식 의지 활성화가 중첩 적용되어 더 빠른 번식을 촉진하는지는 확실하지 않습니다.)

집과 마을의 선행 조건이 만족되었고 번식 의지가 활성화되어도 바로 다른 번식 대상을 찾아다니거나 하지는 않습니다.

번식 의지가 활성화된 주민들은 평범하게 돌아다니다가, 번식 의지가 활성화된 다른 주민과 물리적으로 가까이 있다면 일정 확률로 구애를 시작합니다.

이 때 상대도 같은 상태가 된다면 번식에 성공하고, 구애 시간이 끝날 때 까지 상대가 응하지 않는다면 번식에 실패하게 되지만 일정 시간이 지난 후 다시 다른 대상에게 구애할 수 있게 됩니다.

양쪽 모두 교배 의지를 동시에 보여야 교배가 진행됩니다.

그래서 가끔 타이밍이 안 맞아 서로 시간 차로 돌아가면서 한 쪽만 교배 신호(하트)를 보내고 있는 눈물겨운 상황이 벌어지곤 합니다.

번식에 성공한 뒤에는 번식 의지가 사라지며, 다시 음식을 주거나 거래를 함으로써 번식 의지를 재활성화 시킬 수 있습니다.

굳이 주민을 1명씩 만들고 싶은게 아닌 이상, 그냥 뭉텅이로 음식을 던져주는게 편리합니다.

위에서 만들었던 간이 양식장에 음식을 던져주자 이내 구애를 시작하는 것을 볼 수 있습니다.

한 가지 팁으로, 주민들이 마을을 무작위로 돌아다니는 습성때문에 물리적으로 잘 가까이 가지 않는 경우가 자주 생기므로, 사진처럼 번식에 사용할 주민들을 일정 공간 안에 가두는 것도 좋은 방법입니다.

4. 마을 경계와 인구수 제한

이제 '마을'을 임의로 만들고, 주민으로 하여금 새로운 주민을 만들게 하는 것 까지는 성공하였습니다.

다음으로 살펴볼 문제는, 이대로 두면 인구수 제한에 막혀서 번식용 주민들이 더 이상 번식를 진행하지 않는다는 점입니다.

이 문제를 해결하기 위한 방법이 몇 가지 있습니다:

1. 집의 갯수를 늘린다.

2. 번식용 주민을 제외한 다른 주민을 죽인다.

3. '마을' 밖으로 주민을 내쫓는다.

첫 번째와 두 번째 방안 모두 플레이어가 직접 손을 대야 한다는 단점이 있습니다.

특히 두 번째 방안은 마을 평판 수치를 깎아먹기 때문에 더욱 추천되지 않습니다.

그러므로 보통은 세 번째 방안을 사용하기 마련인데, 세 번째 방안을 사용하기 위해서는 우선 '마을'의 범위가 어느정도인지 알아야 합니다.

위의 사진처럼 마을을 설계할 때 모든 집 문을 같은 높이에, 완전 대칭하도록 설치하면 마을 중앙을 찾기 매우 쉽다.

마을의 크기에 대해 다룰 때 사용되는 대표적인 두 가지 개념은 마을 중앙과 마을 경계입니다.

마을 경계는 말 그대로 마을의 경계로, 마을 경계 안에 있는 주민들은 그 마을의 자신의 마을로써 기억하고 그 안에서 모든 활동을 이행하며, 경계 안의 주민들의 수가 곧 그 마을의 인구수가 됩니다.

마을 중앙은 일반적으로 과도하게 크지 않은 마을의 경계를 설정해주는 지표 역할을 합니다.

즉, 일반적인 상황이라면 마을 중앙을 찾음으로써 마을 경계를 알 수 있게 됩니다.

마을 중앙을 찾는 법은 매우 간단합니다. 마을에 존재하는 모든 집 문의 X, Y, Z좌표의 평균값이 마을 중앙입니다.

 좌표 0을 포함하여, 32블럭까지 거리인 좌표 31까지가 마을의 내부가 된다.

마을 경계는 마을이 어떤 모양이느냐에 따라 마을 중앙을 기준으로 정해질수도, 아니면 집의 위치에 의하여 정해질 수도 있습니다.

1. 마을 중앙으로부터 32블럭 이내에 모든 집이 있는 경우:

 - 마을 경계는 마을 중앙으로부터 수직/수평 방향 원 모양으로 32블럭까지입니다.

2. 마을 중앙으로부터 32블럭 밖에도 마을 소속의 집이 있는 경우:

 - 마을 중앙으로부터 가장 멀리 있는 집의 위치까지가 반지름인 원이 마을 경계가 됩니다.

다만 이 경우는 실제로 보기 드문 경우이고, 일반적으로 주민 양식 시설을 만들 때에는 작은 공간 안에서 효율을 꾀하는 편이라 자세히 설명하지 않겠습니다.

마을 중앙을 편하게 잡고 싶다면, 그냥 모든 집 문을 같은 높이에 완전 대칭 모양으로 만들면 계산하기 편하겠지요?

5. 주민 양식 시설의 예시

이제 주민을 번식시키는데 필요한 기본적인 조건들을 모두 알게 되었으니, 실제로 번식를 진행할 시설을 만들어볼 차례입니다.

아래 예시는 필자가 실제 싱글/서버에서 비교적 유용하게 사용했던 시설물을 구현해본 것입니다.

대략적인 구조는 다음과 같습니다.

1. 번식(교배) 시설

마을의 조건을 만족한 폐쇄 구조물을 만들고, 두 명의 번식용 주민을 투입합니다.

번식 시설 바닥에 수로로 흐르는 물을 흘려서 아기 주민이 수로로 내려갈 수 있도록 합니다.

문들이 대칭을 이루도록 설치하면 번식 시설의 중앙이 곧 마을 중앙이 되어, 경계를 쉽게 알 수 있습니다.

2. 수로

번식 시설로부터 흘러나온 아기 주민을 마을 경계 바깥까지 흘려보내는 수로를 길게 설치합니다.

3. 주민 집합소

새로 생긴 주민들을 모아놓는 장소입니다.

번식 시설의 마을 주민으로써 인식되면 안 되므로, 최소한 마을 경계 밖(마을 중앙으로부터 33블럭 이상)에 주민들을 모아야 합니다.

번식 시설의 내부입니다.

벽의 한 방향을 한 블럭 높이만큼만 열고, 그 방향으로 물이 흐르게 합니다.

자연스럽게 번식용 주민과 아기 주민 모두 물이 흐르는 방향으로 흘러가게 됩니다.

이 때 물 표면에서 자꾸 튀어오르려고 하는 습성 때문에 번식 진행과 음식 투여에 방해를 받게 되니, 튀어오르지 못하도록 천장 블럭으로 막아줍니다.

번식용 주민들은 물리적으로 가까히 위치할 수 밖에 없기 때문에 비교적 빠르게 번식이 진행됩니다.

바닥의 다이아몬드 블럭은 마을 중앙을 나타냅니다.

번식 시설의 수로 방향 단면입니다.

아기 주민은 키가 1칸보다 작아서 벽 아래로 통과하게 되고, 번식용 주민은 계속 번식 시설 벽에 붙어있게 됩니다.

수로로 떨어진 아기 주민은 수로의 물길을 따라 주민 집합소로 흘러가게 됩니다.

이렇게 흘러간 주민들은 주민 집합소에 옹기종기 모이게 됩니다.

이렇게 따로 모인 주민들은 인구수에 영향을 미치지도 않고, 따로 죽여도 번식 주민의 번식 활동에 영향을 미치지 않습니다.

이 세팅에서 음식은 수동으로 넣어줘야 합니다.

필자는 필요한 만큼만 번식을 진행시키는걸 선호하는 편이라, 굳이 음식까지 자동화시키지는 않았습니다.

만약 음식까지 자동화를 시키고 싶다면, 농부 주민(완전 갈색 로브)을 번식 주민으로 투입하고 번식 시설 바닥을 전부 밭으로 개간한다음, 물을 빼 버리고 아기 주민이 스스로 구멍 밑으로 내려가도록 그냥 기다리는 방법도 가능합니다.

(글 첫 부분 유튜브 영상 링크가 그런 식으로 세팅한 영상입니다.)

다만 실제로 저렇게 세팅을 하면, 주민 집합소에 모인 주민들이 일제히 쉼없이 자신이 흘러내려온 물길로 다시 올라가려고 하는 것을 볼 수 있습니다.

그 이유는 번외: 2번을 참고..

6. 심화 - 마을 인구수 경계

버그인지 의도된건지 확실하지 않지만, 주민이 어떤 마을에 소속되어있고 마을의 경계 안에 있는데도 불구하고 인구수에 잡히지 않는 범위가 있습니다.

이를 필자는 마을 인구수 경계라고 칭하겠습니다.

※ 추가: 이 글은 마인크래프트 1.13.2에서 실험하고 작성되었다는 것을 기억해주세요. 차후 패치에서 언제든 고쳐질지도 모릅니다.

집 1채와 주민 3명으로 이루어진 마을입니다.

마을의 유일한 집은 Y10에 위치해있으며, 각 주민은 Y4, 10, 14에 위치해있습니다.

이론상으로는 일반적인 마을 경계는 동서남북 수평 방향 뿐만 아니라 상하로도 원 모양을 그리며 경계를 이루기 때문에 마을의 현재 인구수는 3이어야 정상이지만, 실제로 이 마을이 인식하는 마을의 인구수는 Y10에 위치한 주민 단 한 명 뿐입니다.

마을 중앙 블럭을 기준으로 5블럭 아래의 땅을 딛고 있는 주민과 4블럭 위의 땅을 딛고 있는 주민들은 인구수에 포함되지 않습니다.

이는 바로 다음 예시와 같이 엄청난 어드밴티지로 작용할 수 있는데..

위 쪽의 문, 나무, 유리로 이루어진 구조물은  5문단 '주민 양식 시설의 예시'에 나왔던 그 번식 시설과 완전히 똑같은 구조입니다.

물의 흐름에 따라 번식 주민들은 벽에 나란히 붙게 되고, 아기 주민은 한 칸 뚫려있는 벽 쪽으로 밀려나 아래쪽으로 떨어지는 구조입니다.

다만 5문단 구조물과 가장 큰 차이점은 멀지 않은 아랫쪽에 주민 집합소가 있다는 사실이고, 이 곳에 주민들이 끝도 없이 모이는 데에도 불구하고 음식만 제대로 공급해준다면 마을 인구수 제한에 절대 걸리지 않는다는 점입니다.

굳이 긴 수로를 뚫지 않아도 된다는 점에서 엄청난 공간 절약을 꾀할 수 있고, 엄연히 모든 주민들은 자신의 마을 안에 존재하고 있으므로 수로로 강제로 마을에서 밀어냈을 때에 비해 안정적으로 행동하는 것도 소소한 장점입니다.

더 간략한 구조입니다.

첫 번째 예시는 윗 쪽에 마을을 두고 번식 주민 두 명이 번식 역할과 동시에 집을 인식해주는 주민(Detector 주민)으로써 사용되었다면,

이번 예시는 하단에 마을을 구성하고 단 한 명만 문 옆에 두어 집 인식용으로 쓰고, 최초 번식용 주민 2명을 마을 인구수 경계 밖(위)에 두어 번식를 하는 방식입니다.

이 방법이 여러모로 정보 출처의 유튜브 영상과 흡사한데, 사진의 구성에서 바닥을 더 넓혀 전부 밭으로 만들고 최소 1명의 농부 주민을 투입하면 음식을 수동으로 공급해줄 필요도 없이 스스로 자수성가하는 무한 주민 증식 시설이 완성됩니다.

(물론 너무 방치해놓으면 스포닝풀을 방불케하는 렉 생성기가 되니 꼭 드물더라도 주기적으로 관리해야 합니다.)

번외: 기타 도움이 될만한 정보들

1.

주민이 어떤 마을에 소속해있는지 아닌지 확인해보는 간단한 방법은 주민을 때려보는 것입니다.

주민이 마을의 주민으로써 소속해있다면 화가 난 듯한 파티클이 튀어오르지만, 그렇지 않을 때는 파티클이 튀어오르지 않습니다.

마을 경계 밖에 있다고 해서 무조건 마을에 소속되지 않은 것은 아닙니다!

2.

주민이 평균 이상의 속도로 어딘가로 달려갈 때는 몇 가지 이유가 있습니다.

1) 밤이 되었거나

2) 비가 오거나

3) 시간과 날씨 관계없이 주민을 인위적으로 공격하는 적대적 몹에게 공격받고 있거나

4) 마을 경계 밖으로 빠져나왔거나.

이 중 가장 우선순위가 높은 것은 4)번 조건입니다.

좀비떼가 마을 중앙에서 주민들을 마을 경계 밖 방향으로 쫓는 상황이더라도 주민들은 절대 마을 경계 밖으로 나가지 않습니다.

오히려 좀비에게 쫓겨 마을 경계 밖으로 나간 경우 마을 중앙으로 돌아가는 길목에 좀비떼가 있더라도 그 쪽을 뚫고 가려고 하는 모습을 보입니다.

어떤 마을에도 속하지 않은 주민이 32블럭 이내에 마을 경계를 발견한다면, 빠르게 마을 경계 안으로 들어간 후 그 마을을 자신이 속한 마을로써 기억합니다.

그러나 주민이 마을에 속하지도, 32블럭 이내에 마을 경계가 보이지도 않는 경우 6초 이내에 마을 찾기를 포기하고, 자신이 원래 속했던 마을을 잊어버려 아무 마을에도 속하지 않은 무소속 상태가 됩니다.

즉, 주민이 어떻게든 격리시설에 옮겨놓으려고 보트로 밀고 끌고 하는 대지랄 도중에 잠깐 잘못 풀어줘서어느 한 방향으로 미친듯이 뛰어가는 모습을 보인다면 어딘가에 자신 혹은 다른 주민이 '집'으로써 인식한 자신의 '마을'로 돌아가려는 AI때문에 그렇습니다.