Mindustry/콘텐츠/로직

 


1. 개요
2. 상세
3. 목록
3.1. 메모 블록
3.2. 스위치
3.3. 마이크로 프로세서
3.4. 로직 프로세서
3.5. 하이퍼 프로세서
3.6. 메모리 셀
3.7. 메모리 보관소
3.8. 로직 디스플레이
3.9. 대형 로직 디스플레이
4. 로직 언어
4.1. 로직 블록
4.1.1. read
4.1.2. write
4.1.3. draw
4.1.4. print
4.1.5. drawflush
4.1.6. printflush
4.1.7. getlink
4.1.8. control
4.1.9. radar
4.1.10. sensor
4.1.11. set
4.1.12. op
4.1.13. end
4.1.14. jump
4.1.15. ubind
4.1.16. ucontrol
4.1.17. uradar
4.1.18. ulocate
4.2. 사용예
4.2.1. 자동 차단기


1. 개요


[image]
  • 이 문서는 6.0 정식 버전 기준으로 작성되었습니다.
Mindustry의 콘텐츠 중 '''로직''' 계열의 콘텐츠를 분류한 문서이다.
컨베이어 몇줄과 수개의 매스드라이버를 할것을 단 한 블럭과 유닛 몇마리로 압축하는 자동화와 공간절약의 종결자다.

2. 상세


[image]
기본적으로 마이크로 프로세서를 클릭한 뒤 필요한 인근 블록들을 지정하고, 로직을 작성하는 식으로 이용된다.
로직은 jump 등이 없다면 위에서부터 차례대로 아래로 실행하며, 이를 무한히 반복한다.
로직의 작성은 게임 내에서 직접 로직 블록을 추가, 값을 변경하거나 하는 식으로 할 수 있지만, 숙달된다면 외부에서 문법을 작성하고 이를 복사해 붙여넣는 식으로[1] 효율적으로 작성할 수도 있다.
외부에서 작성하는 경우 문법만 맞으면 메모장을 이용해도 상관없으나, vscode를 이용한다면 'masm' 플러그인을 받아 하이라이팅 기능[2]의 도움을 받을 수도 있다.
위키가 부실하다면 빌드 107 버전 기준 로직 위키 설계도를 참고해도 된다.

3. 목록



3.1. 메모 블록


'''메모 블록 (Message)'''
[image] 이미지
[image]
기능 / 목적
'''아군 간의 소통을 위한 메시지를 저장합니다.'''
일반
[image] 체력
40
[image] 크기
1×1
[image] 건설 시간
0.08초
[image] 건설 비용
[image]흑연
5개
블록 위에 커서를 올리면 저장해둔 문구가 띄워지는 블록이다.
같은 구역에서 작업하는 다른 사람들이 참고하거나 주의해야될 정보를 적는 용도로 쓰인다.
다만, 매 판이 며칠씩 걸리는 게임도 아니고, 채팅 기능 또한 존재하기에 잘 쓰이진 않는다.

3.2. 스위치


'''스위치 (Switch)'''
[image] 이미지
[image]
기능 / 목적
'''on/off 가능한 스위치입니다.
스위치 상태는 프로세서에 의해 읽히거나 제어될 수 있습니다.'''
일반
[image] 체력
40
[image] 크기
1×1
[image] 건설 시간
0.08초
[image] 건설 비용
[image]흑연
5개
블록을 클릭하는것으로 키고 끌 수 있다.
자체적으로는 그것밖에 기능이 없지만, 프로세서에서 sensor 블록을 통해 on/off 상태를 감지할 수 있기 때문에 유용히 쓰인다.
참고로 'switch'의 'on/off' 상태를 표시하는 속성은 enabled 이다. 해당 값을 이용해 분기를 해도 되지만 단순히 다른 블록을 활성화, 비활성화 하는 경우에는 enabled 값만 받아와 직접 집어넣어줘도 된다.

3.3. 마이크로 프로세서


'''마이크로 프로세서 (Micro Processor)'''
[image] 이미지
[image]
기능 / 목적
'''로직 실행문을 순서대로 무한히 실행합니다.
유닛 또는 건물을 제어하는 데 쓰일 수 있습니다.'''
일반
[image] 체력
40
[image] 크기
1×1
[image] 건설 시간
1.64초
[image] 건설 비용
[image]구리
80개
[image]
50개
[image]실리콘
30개
입력/출력
[image] 감지 길이
10블록
연산 속도
120/초
로직의 핵심 블록이다.
여기서 작성된 로직은 순서대로 무한히 수행되며, 작성하기에 따라 복잡한 블록으로 처리해야 될 까다로운 동작이나 감지 등을 자동화 할 수 있다.
이하 프로세서 종류들은 감지 길이와 연산 속도만 더 좋을 뿐, 기본적인 기능은 다르지 않다.

3.4. 로직 프로세서


'''로직 프로세서 (Logic Processor)'''
[image] 이미지
[image]
기능 / 목적
'''로직 실행문을 순서대로 무한히 실행합니다.
유닛 또는 건물을 제어하는 데 쓰일 수 있습니다.
마이크로 프로세서보다 실행 속도가 더 빠릅니다.'''
일반
[image] 체력
160
[image] 크기
2×2
[image] 건설 시간
6.44초
[image] 건설 비용
[image]
320개
[image]흑연
60개
[image]토륨
50개
[image]실리콘
60개
입력/출력
[image] 감지 길이
22블록
연산 속도
480/초

3.5. 하이퍼 프로세서


'''하이퍼 프로세서 (Hyper Processor)'''
[image] 이미지
[image]
기능 / 목적
'''로직 실행문을 순서대로 무한히 실행합니다.
유닛 또는 건물을 제어하는 데 쓰일 수 있습니다.
로직 프로세서보다 실행 속도가 더 빠릅니다.'''
일반
[image] 체력
360
[image] 크기
3×3
[image] 건설 시간
9.35초
[image] 건설 비용
[image]
450개
[image]토륨
75개
[image]실리콘
130개
[image]설금
50개
액체
액체 수용량
10
입력/출력
소모 자원
[image]냉각수
4.7
[image] 감지 길이
42블록
연산 속도
1500/초
냉각수를 쓰기 때문에 아주 넓은 범위가 필요한 경우가 아니라면 그다지 쓰이지는 않는다.

3.6. 메모리 셀


'''메모리 셀 (Memory Cell)'''
[image] 이미지
[image]
기능 / 목적
'''프로세서를 위한 데이터를 저장합니다.'''
일반
[image] 체력
40
[image] 크기
1×1
[image] 건설 시간
0.8초
[image] 건설 비용
[image]흑연
30개
[image]실리콘
30개
[image] 최대 변수 개수
64
매 반복마다 초기화되는 프로세서 동작 내 변수 값을 유지시키고 싶을 때 사용한다.
이를 이용하면 카운터도 만들 수 있다.

3.7. 메모리 보관소


'''메모리 보관소 (Memory Bank)'''
[image] 이미지
[image]
기능 / 목적
'''프로세서를 위한 데이터를 저장합니다. 저장공간이 셀보다 큽니다.'''
일반
[image] 체력
160
[image] 크기
2×2
[image] 건설 시간
3.04초
[image] 건설 비용
[image]흑연
80개
[image]실리콘
80개
[image]메타
30개
[image] 최대 변수 개수
512

3.8. 로직 디스플레이


'''로직 디스플레이 (Logic Display)'''
[image] 이미지
[image]
기능 / 목적
'''프로세서를 이용해 그래픽을 출력할 수 있습니다.'''
일반
[image] 체력
360
[image] 크기
3×3
[image] 화면 크기
80×80
[image] 건설 시간
3.08초
[image] 건설 비용
[image]
100개
[image]강화유리
50개
[image]실리콘
50개

3.9. 대형 로직 디스플레이


'''대형 로직 디스플레이 (Large Logic Display)'''
[image] 이미지
[image]
기능 / 목적
'''프로세서를 이용해 그래픽을 출력할 수 있습니다.'''
일반
[image] 체력
1440
[image] 크기
6×6
[image] 화면 크기
176×176
[image] 건설 시간
8.45초
[image] 건설 비용
[image]
200개
[image]강화유리
100개
[image]실리콘
150개
[image]메타
75개

4. 로직 언어


프로세서에서 사용되어 복잡한 동작을 구현할 때 쓰이는 언어이다.
122.1 버전 기준으로 총 18개의 명령어 블록이 존재한다.
아이템 등 내부적으로 지정된 상수를 이용할 땐 앞에 @를 붙여 적으면 된다. 예를 들어 @titanium 은 티타늄 아이템을 의미한다.

4.1. 로직 블록



4.1.1. read


read 변수 대상_메모리 번지

지정한 '메모리 셀'이나 '메모리 뱅크'에서 지정한 위치의 값을 읽어온다.

4.1.2. write


write 변수 대상_메모리 번지

지정한 '메모리 셀'이나 '메모리 뱅크'의 지정한 위치에 값을 기록한다.

4.1.3. draw



4.1.4. print



4.1.5. drawflush



4.1.6. printflush



4.1.7. getlink



4.1.8. control


control 옵션 블록 인수1 인수2 인수3 인수4

블록의 상태를 변경한다.
옵션에는 enabled, shoot, shootp, configure 가 있다.
'enabled'는 블록의 활성화 여부를 지정한다. 인수로 0을 넣으면 작동이 중지되고[3] 1을 넣으면 다시 작동한다. [4]
'configure'는 설정이 가능한 블록의 설정을 바꾼다. 가령 '''control configure unloader @titanium'''은 지정된 언로더[5]의 배출 아이템을 티타늄으로 바꾼다.

4.1.9. radar



4.1.10. sensor


sensor 변수 블록 감지_대상

블록의 상태를 감지한다.
'감지 대상'에는 보유하고 있는 아이템의 개수부터 활성화 여부 등 정말 다양한 정보가 포함된다.
예를 들어 '''sensor s switch1 @enabled'''라고 작성된다면 해당 블록은 'switch1'의 활성화 여부를 감지해 's'라는 변수에 집어넣는다.

4.1.11. set



4.1.12. op


op 연산 변수 좌항 우항

'좌항'과 '우항'을 '연산'한 결과를 '변수'에 집어넣는다.
'연산'의 종류에는 사칙연산, 비교연산, 논리연산, 삼각함수 등이 있다.

4.1.13. end


end

해당 반복 주기를 끝낸다.
아래에 아직 실행하지 않은 블록이 있더라도 'end'블록을 만나면 바로 중단하고 다음 타이밍에 다시 처음부터 반복한다.

4.1.14. jump


jump 대상_블록 조건 변수 값

변수와 값이 조건에 부합한다면 다음 블록 대신 지정한 로직 블록으로 바로 건너뛴다.
대상 로직 블록을 지정하는 방법은 해당 블록의 순서 번호로, 0부터 센다.
조건에는 'equal, notEqual, lessThan, lessThanEq, greaterThan, greaterThanEq, always'가 있다. 차례대로 '같음, 다름, 보다 작음, 보다 큼, 보다 작거나 같음, 보다 크거나 같음, 무조건'을 의미한다.
예를 들어 '''jump 3 lessThan x 10'''은 'x'가 10보다 작으면 다음블록 대신 4번째 블록을 실행하라는 의미이다.
게임 내에서는 로직 블록의 오른쪽에 보이는 세모를 클릭, 드래그 하여 대상 로직블록을 지정할 수 있다.

4.1.15. ubind



4.1.16. ucontrol



4.1.17. uradar



4.1.18. ulocate



4.2. 사용예



4.2.1. 자동 차단기


sensor t vault1 @titanium

jump 4 lessThan t 300

jump 6 greaterThan t 300

end

control enabled unloader1 0 0 0 0

end

control enabled unloader1 1 0 0 0

end

위 로직은 'vault1'의 티타늄 보유량을 감지하고, 그것이 300개보다 작으면 'unloader1'을 비활성화, 크면 활성화 한다.
이를 응용하면 코어에서 자원 뽑아 설금을 제작하는 경우 실리콘이 동나도록 빨아먹지 못하게 막을 수 있다.
[1] 게임 내 클립보드에서 가져오기 기능을 이용하면 된다.[2] 구문의 의미에 따라 자동으로 색을 달리 입혀주는 기능이다[3] 작동이 중지된 블록은 커서를 위에 올려보면 x 표시가 뜬다.[4] 스위치 등 특별한 경우를 제외하고 비활성화 된 블록은 약간의 시간이 지나면 다시 자동으로 활성화된다. 따라서 계속 비활성화 시키고 싶다면 매 반복마다 다시 비활성화를 시켜줘야 한다.[5] 실제 블록 이름은 다를 수 있다.


분류