상위 문서: 오토너츠
{{{#!wiki style="margin:0 -10px -5px; min-height:calc(1.5em + 5px)" {{{#!folding [ 펼치기 · 접기 ] {{{#!wiki style="margin:-5px -1px -11px" | 튜토리얼 | 플레이어 | 봇 | 개척자 | 저장소 | 스크립트 |
농사 | 사육 | 도구 | 건축물 | 아이템 | FAQ | |
시스템 | 아카데미 | 연구 | 도전 과제 | 조작키 | MOD |
1. 개요
본 문서는 오토너츠 내에 등장하는 봇의 스크립트에 대한 가이드 문서이다.
2. 스크립트의 종류
스크립트의 형태적 분류를 하면 일반 스크립트와 반복 스크립트, 그리고 조건 스크립트로 분류할 수 있다. 또한 해당 스크립트 내에서 기능적 부분을 기준으로 몇 갈래의 분류가 가능하다.
이 문서에서는 보다 각 스크립트의 기능에 대해 설명하는 것을 목적으로 하였다.
이 문서에서는 보다 각 스크립트의 기능에 대해 설명하는 것을 목적으로 하였다.
2.1. 일반 스크립트에서
2.1.1. 찾기 스크립트
2.1.1.1. 찾기 명령이란?
- 찾기 명령은 '찾는 범위' 를 기준으로 하는 명령이다.
해당 범위 내에 찾고자 하는 물체 A가 해당 범위 내에 있으면 통과하고, 그렇지 않으면 대기하는 명령이다.
때문에 찾기 범위를 제한/확장하는 것에 대한 플레이어의 적절한 결정이 있어야 찾기 명령이 효율적으로 작동한다. - 찾기 명령의 범위는 봇의 영역 편집 메뉴로 들어가서 조절할 수 있다.
- 기본 튜토리얼에서 명시하지만, 찾기 튜토리얼 맨 우측의 를 클릭하여 영역 편집 모드에서 조절할 수 있다.
2.1.1.2. 영역 편집 모드란?
- 영역 편집 모드는 봇이 인식할 부분을 설정할 수 있는 모드를 말한다. 진입 방법은 전 문단의 것을 따르면 된다..
- 크게 두 가지 형태의 영역을 인식할 수 있는데, 해당 봇의 성능에 비례하는 '영역 선택[1]' 모드와 표지판이나 제작소의 출력 구역을 영역으로 삼는 '구조물 선택' 모드가 있다.
영역 선택 모드에서의 기능 |
구조물 선택 모드에서의 기능 |
1. 영역 선택 모드
- 영역 선택 모드는 이 문서에 나와 있는 해당 봇의 탐색 영역이 최대로 탐색할 수 있는 영역을 탐색한다는, 단순하지만 직관적인 선택 모드이다.
특정한 아이템을 인식하고 이를 줍거나 들고 있는 도구와의 상호작용을 하는 등 가장 많이 쓰이는 모드이면서 작업 대상의 머리 부품에 따라 그 탐색 한계가 명확하다는 한계점 또한 가지고 있다.
또한 탐색을 원하는 어떤 대상의 위치가 변할 경우 해당 위치에 관련된 모든 로봇의 대수만큼 '정지→탐색 영역 블록 틀릭→영역 수정'이라는 작업을 되풀이해야 한다는 매우 고질적인 단점 또한 가지고 있다.
- 탐색 범위의 패턴 또한 지원한다. 특정한 모양대로 땅을 파거나 모래를 준설하는 등 타일에 주로 적용되며, 그 종류는 아래와 같다.
영역 옵션 | 선택되는 영역 | 영역 옵션 | 선택되는 영역 |
전체 | 세로 줄무늬 | ||
교차 무늬 | 체크 무늬 | ||
가로 줄무늬 |
2. 구조물 선택 모드
- 구조물 선택 모드는 특정한 구조물, 예를 들어 저장소와 제작소, 그리고 이질적이지만 표지판과 같은 것을 찾는 명령을 수행할 때 볼 수 있는데, 대상이 고정된 것이니만큼 영역 선택 모드에서 발생할 수 있는 탐색 대상의 이동에 따른 반복적인 범위 수정과는 무관하다.
- 다만 엄연한 입장에서 표지판은 들 수 있는 아이템에 속하기 때문에 '움직일 수 없는 대상으로 한다' 라는 구조물 선택 모드의 대전제와 어울리지 않은 듯한 느낌이 있다. 어째서 표지판은 그러한 예외적인 기능을 하는 것일까?
- 그것은 인게임에서 표지판이 수행하는 역할이 영역 선택 모드의 고질적 문제점을 해결하고자 존재하기 때문이다.
구체적으로 말해서, 표지판을 통해 특정한 범위를 설정하고 이를 기준으로 탐색을 하는 코드를 짰다면 예를 들어 청소 로봇에게 새로이 정리했음직한 곳을 발견한다든가 하는 종래의 영역 선택 모드에서 건드려야 할 범위의 변동이 필요한 상황이 발생했을 때, 기존의 귀찮은 방법을 쓸 필요 없이
표지판의 범위만 수정하면 될 뿐 해당하는 로봇의 모든 범위를 일일이 수정해야 할 필요는 없어진다는 것이다.
- 표지판의 종류와 그 최대 범위는 아래와 같다.
종류 | 이용 가능한 최대 범위 | 종류 | 이용 가능한 최대 범위 |
표지판 | 17 × 17 | 게시판 | 21 × 21 |
방향 표지판 |
- 다만 위와 같은 방법은 Mk3 봇을 양산하기 시작하면서 새로운 문제와 직면한다. 바로 로봇 자체의 최대 탐색 범위보다 표지판의 범위가 그 값이 작다는 것. 있다는 가정 하에, 더 넓은 범위의 탐색을 보조하는 또 다른 표지판을 추가하는 등 이러한 제한을 풀어주는 모드를 통해 위의 상황을 벗어나는 방법도 있으나 그러한 개조 행위가 순수한 게임 플레이 경험을 손상시킨다는 생각을 가지고 계신 분들이거나 그렇게까지 할 만큼은 아니라는 분들은 경우에 따라서 그동안 편히 해 왔던 탐색을 다시 종래의 번거로운 방법으로 이용해야 하는 불쾌한 경험을 할 수도 있겠다
3. 해당 영역 보기
- 지정된 영역은 '해당 영역 보기' 버튼을 눌러 해당 영역이 어디에 있는지 알 수 있다. 특히 다수의 대상을 탐색하고 이에 작용하는 것을 기능으로 하는 봇의 경우 각 찾기 명령의 범위가 겹쳐 식별이 어려울 때 이를 이용하여 현재 편집하고 있는 영역이 어느 것인지 알 수 있다.
2.1.2. 이동 스크립트
2.1.2.1. 이동 스크립트란?
말 그대로 특정 개체의 위치, 혹은 특정 좌표로 이동하는 스크립트이다. 해당 개체를 찾은 이후에 이동이 이루어져야 하기 때문에 보통 찾기 스크립트 다음 줄에 바로 나온다. 여기서 '특정 개체'는 아이템과 저장소를 말한다.
이때, 저장소로 이동하는 스크립트일 경우, Mk.2 봇부터 새로운 명령 입력 없이 을 눌러 이동하고자 하는 저장소를 변경할 수 있다.
2.1.2.2. 대기 스크립트
대기 스크립트는 이동 스크립트 중에서 이질적인 스크립트이다. 텍스트 입력 부분에는 숫자를 입력할 수 있으며, 단위는 초이다.
기본값은 1로 설정되어 있고, ?까지의 값을 인식한다.
말 그대로 봇이 일시적으로 특정 위치에 정지하고 있어야 할 때 사용하며, 봇 브레인에는 같은 좌표를 더블 클릭해야 인식된다.
2.1.3. 작용 스크립트
2.1.3.1. 작용 스크립트란?
작용 스크립트는 봇이 특정한 상황에서 가할 수 있는 작용에 대한 스크립트이다. 이 중에서 아이템을 들거나 이를 저장소로 옮기는 등의 손을 이용하는 스크립트들은 후술할 '손 스크립트'로 별도 분류하였다.작용 스크립트에 해당하는 작용은 다음과 같다 : 제작소의 레시피 설정하기, 봇 충전하기, 들고 있는 도구 사용하기, 차량에 탑승하기, 차량 내리기, 소리치기.
2.1.3.2. 도구 사용하기
손 스크립트를 포함한 일체의 작용 관련 스크립트 중에서 제일 많이 보게 되는 스크립트이다. 말마따나 특정한 도구를 사용하는 작용을 하는 스크립트인데, 해당 개체에게 작용은 하나, 가르친 적 없는 도구를 들고 있을 경우 오류가 발생한다. [2]
- [예를 들어]
1)Mk2001이라는 로봇이 도끼를 들고 나무를 베는 로봇인데,
2) 나무에 작용 가능한 다른 도구인 망치를 해당 로봇을 불러 손에 쥐어주었을 경우
3) 망치와 도끼 모두 나무에 상호작용이 가능하지만,
4) Mk2001은 망치를 쓰는 법을 배운 적이 없기 때문에 해당 명령에서 오류가 발생한다.
양동이를 비우는 행동 또한 해당 도구를 사용하는 것이기 때문에 양동이를 든 채로 Z를 누르면 스크립트가 생성된다.
2.1.3.3. 소리치기
소리치기 스크립트는 작용 스크립트 중에서 특정 키를 통해 나타나는 특수한 스크립트이다.[3] 텍스트 칸에 입력한 문자의 영향 범위는 영향을 받는 로봇을 기준으로 5×5 범위 내에 있으면 전달된다. 반복문 조건으로 행동을 제한하기 어려운 경우에 주로 사용한다.
구체적인 용례는 ?에서 설명토록 하겠다.
2.1.3.4. 사용 중지하기
사용 중지하기 스크립트는 제작소/차량의 사용을 중지할 때 생성되는 스크립트이다.
제작소의 경우, 제작될 물품의 설정을 변경하면 바로 생성되고, 차량의 경우 차량을 운전하고 있는 상태에서 +를 누르면 생성된다.
2.1.4. 배낭 스크립트
배낭 스크립트는 봇이 들고 있는 물건을 손과 배낭간의 상호작용을 통해 추가적인 저장소를 사용할 수 있도록 하는 스크립트다. 표면적인 기능은 손에 들고 있는 아이템을 배낭 칸과 교환하는 것이며, 교환 방법은 아래와 같은 방법이 있다.
2.1.4.1. 넣기와 바꾸기
'들고 있는 아이템 넣기' 스크립트의 상호작용 | '들고 있는 아이템 넣기' 스크립트의 상호작용 |
'들고 있는 아이템을 넣기'와 '들고 있는 아이템을 바꾸기' 스크립트는 스크립트 자체를 읽었을 때는 기능적인 차이가 바로 연상되지 않지만, 실제 브레인에 적용했을 경우, 위와 같은 차이가 발생한다.
글로 표현하자면,
1. '~넣기'는 배낭 맨 뒤 칸과 손에 들고 있는 아이템의 교환이다.
2, '~바꾸기'는 배낭 맨 앞 칸의 아이템과의 교환이다.
물론, 이는 손에 들고 있는 아이템의 무게보다 비어있는 배낭의 칸 수가 적거나 같아야 성립된다.
2.1.4.2. 아이템 순환
'들고 있는 아이템 위로 넘기기' 스크립트의 상호작용 | '들고 있는 아이템 아래로 넘기기' 스크립트의 상호작용 |
배낭 스크립트 중에는 다음과 같은 특수한 기능을 가진 것들도 있는데, 아이템 순환의 경우 많이 쓰이지는 않으나 특수한 경우[4]에 사용될 수도 있다.
들고 있는 아이템 A를 기준으로, '~위로'는 시계 방향으로, '~아래로'는 반시계 방향으로 움직인다.
2.1.5. 손 스크립트
손 스크립트는 봇이 손에 특정 아이템을 들거나 내려놓는 작용에 대한 스크립트이다.
2.1.5.1. 집어들기
말 그대로 특정 아이템을 집어드는 스크립트이다. 집어들기 위해서 해당 아이템, 혹은 아이템 저장소 근처에 있어야 하니 '찾기->이동->집어들기' 와 '저장소로 가기->저장소에서 집어들기' 같은 메커니즘을 이루는 일부로 인식된다.
2.1.5.2. 추가하기와 내려놓기
말 그대로 특정 아이템을 손에 추가하는 스크립트이다. 집어들기와 마찬가지로, 해당 아이템, 혹은 아이템 저장소 근처에 있어야 하니 '특정 위치로 이동->모두 내려놓기' 와 '저장소로 가기->저장소에 추가하기' 같은 보통 메커니즘을 이루는 일부로 인식된다.
2.2. 반복 스크립트
반복 스크립트는 여러 일반 스크립트가 단일 혹은 복수의 형태로 존재할 때, 이를 특정 조건에 맞게 반복시키기 위해 사용하는 반복문이다.[1] 번역상은 '영역 편집'이 맞으나 문단 제목과의 혼동을 피하기 위해 의역하였다.[2] 이에 따른 불편함을 해소하기 위해 V137.?에서 어떠한 도구의 사용 명령인지 표시가 되게끔 바뀌었다.[3] 양동이를 든 상태를 제외하고 Z를 누르면 된다.[4] 한 로봇이 도구가 3개 이상 필요한 일을 혼자서 하기 원하는 경우