<colbgcolor=#434440><colcolor=#ffffff> | |
Mindustry 콘텐츠 | |
일반 | |
블록 | |
시스템 | |
캠페인 |
1. 개요2. 상세3. 목록
3.1. 세르플로
4. 로직 언어3.1.1. 메모 블록3.1.2. 스위치3.1.3. 마이크로 프로세서3.1.4. 로직 프로세서3.1.5. 하이퍼 프로세서3.1.6. 메모리 셀3.1.7. 메모리 보관소3.1.8. 로직 디스플레이3.1.9. 대형 로직 디스플레이
3.2. 에르키아3.3. 기타 블록1. 개요
- 이 문서는 7.0 정식 버전 기준으로 작성되었습니다.
Mindustry의 콘텐츠 중 로직 계열의 콘텐츠를 분류한 문서이다.
컨베이어 몇줄과 수십개의 매스드라이버로 할것을 단 한 블럭과 기체 몇마리로 압축하는 자동화와 공간절약의 종결자다.
2. 상세
기본적으로 마이크로 프로세서를 클릭한 뒤 필요한 인근 블록들을 지정하고, 로직을 작성하는 식으로 이용된다.
로직은 jump 등이 없다면 위에서부터 차례대로 아래로 실행하며, 이를 무한히 반복한다.
로직의 작성은 게임 내에서 직접 로직 블록을 추가, 값을 변경하거나 하는 식으로 할 수 있지만, 숙달된다면 외부에서 문법을 작성하고 이를 복사해 붙여넣는 식으로[1] 효율적으로 작성할 수도 있다.
외부에서 작성하는 경우 문법만 맞으면 메모장을 이용해도 상관없으나, Visual Studio Code를 이용한다면 'masm' 플러그인을 받아 하이라이팅 기능[2]의 도움을 받을 수도 있다.
위키가 부실하다면 빌드 107 버전 기준 로직 위키 설계도를 참고해도 된다.
3. 목록
3.1. 세르플로
3.1.1. 메모 블록
메모 블록
Message |
|||
이미지 | |||
목적
|
|||
아군 간의 소통을 위한 메시지를 저장합니다. | |||
일반
|
|||
체력 | 40 | ||
크기 | 1×1 | ||
건설 시간 | 0.12초 | ||
건설 비용 | 구리 | 5개 | |
흑연 | 5개 |
블록 위에 커서를 올리면 저장해둔 문구가 띄워지는 블록이다. 300자까지 쓸 수 있다.
같은 구역에서 작업하는 다른 사람들이 참고하거나 주의해야 할 정보를 적는 용도로 쓰인다. 하지만 매 판이 며칠씩 걸리는 게임도 아니고, 채팅 기능 또한 존재하기에 잘 쓰이진 않는다.
다른 용도는 유즈맵이나 서버 이용 규칙 등을 적는 것 정도이다.
3.1.2. 스위치
스위치
Switch |
|||
이미지 | |||
목적
|
|||
on/off 가능한 스위치입니다. 스위치 상태는 프로세서에 의해 읽히거나 제어될 수 있습니다. |
|||
일반
|
|||
체력 | 40 | ||
크기 | 1×1 | ||
건설 시간 | 0.12초 | ||
건설 비용 | 구리 | 5개 | |
흑연 | 5개 |
블록을 클릭하는것으로 키고 끌 수 있다.
자체적으로는 그것밖에 기능이 없지만, 프로세서에서 sensor 블록을 통해 on/off 상태를 감지할 수 있기 때문에 유용히 쓰인다.[3]
참고로 'switch'의 'on/off' 상태를 표시하는 속성은 enabled 이다. 해당 값을 이용해 분기를 해도 되지만 단순히 다른 블록을 활성화, 비활성화 하는 경우에는 enabled 값만 받아와 직접 집어넣어줘도 된다.
3.1.3. 마이크로 프로세서
마이크로 프로세서
Micro Processor |
|||
이미지 | |||
목적
|
|||
로직 실행문을 순서대로 무한히 실행합니다. 기체 또는 건물을 제어하는 데 쓰일 수 있습니다. |
|||
일반
|
|||
체력 | 40 | ||
크기 | 1×1 | ||
건설 시간 | 2초 | ||
건설 비용 | 구리 | 90개 | |
납 | 50개 | ||
실리콘 | 50개 | ||
입력/출력
|
|||
연결 길이 | 10블록 | ||
연산 속도 | 120/초 |
로직의 핵심 블록인 프로세서 중 가장 약한 블럭이다. 모든 프로세서는 전력이 필요없다.
여기서 작성된 로직은 순서대로 무한히 수행되며, 작성하기에 따라 복잡한 블록으로 처리해야 될 까다로운 동작이나 감지 등을 자동화 할 수 있다.
이하의 프로세서의 기능은 동일하고 감지 범위와 연산 속도
3.1.4. 로직 프로세서
로직 프로세서
Logic Processor |
|||
이미지 | |||
목적
|
|||
로직 실행문을 순서대로 무한히 실행합니다. 기체 또는 건물을 제어하는 데 쓰일 수 있습니다. 마이크로 프로세서보다 실행 속도가 더 빠릅니다. |
|||
일반
|
|||
체력 | 190 | ||
크기 | 2×2 | ||
건설 시간 | 6.71초 | ||
건설 비용 | 납 | 320개 | |
흑연 | 60개 | ||
토륨 | 50개 | ||
실리콘 | 80개 | ||
입력/출력
|
|||
연결 길이 | 22블록 | ||
연산 속도 | 480/초 |
여러면에서 마이크로 프로세서보다 더 좋은 상위호환 블럭. 대부분 여기까지만 업그레이드하고 정말 빠르고 정밀한 실행이 필요할때는 밑의 하이퍼를 쓴다.
3.1.5. 하이퍼 프로세서
하이퍼 프로세서
Hyper Processor |
|||
이미지 | |||
목적
|
|||
로직 실행문을 순서대로 무한히 실행합니다. 기체 또는 건물을 제어하는 데 쓰일 수 있습니다. 로직 프로세서보다 실행 속도가 더 빠릅니다. |
|||
일반
|
|||
체력 | 520 | ||
크기 | 3×3 | ||
건설 시간 | 9.62초 | ||
건설 비용 | 납 | 450개 | |
토륨 | 75개 | ||
실리콘 | 150개 | ||
설금 | 50개 | ||
액체
|
|||
액체 용량 | 10 액체 | ||
입력/출력
|
|||
소모 자원 | 냉각수 4.8/초 | ||
연결 길이 | 42 블록 | ||
연산 속도 | 1500/초 |
냉각수를 쓰기 때문에 아주 넓은 범위나 매우 빠른 속도가 필요한 경우가 아니라면 그다지 쓰이지는 않는다.
3.1.6. 메모리 셀
메모리 셀
Memory Cell |
|||
이미지 | |||
목적
|
|||
프로세서를 위한 데이터를 저장합니다. | |||
일반
|
|||
체력 | 40 | ||
크기 | 1×1 | ||
건설 시간 | 1.15초 | ||
건설 비용 | 구리 | 30개 | |
흑연 | 30개 | ||
실리콘 | 30개 | ||
변수 용량 | 64 |
매 반복마다 초기화되는 프로세서 동작 내 변수 값을 유지시키고 싶을 때 사용한다.
이를 이용하면 카운터도 만들 수 있다.
3.1.7. 메모리 보관소
메모리 보관소
Memory Bank |
|||
이미지 | |||
목적
|
|||
프로세서를 위한 데이터를 저장합니다. 큰 용량을 지니고 있습니다. |
|||
일반
|
|||
체력 | 200 | ||
크기 | 2×2 | ||
건설 시간 | 3.3초 | ||
건설 비용 | 구리 | 30개 | |
흑연 | 80개 | ||
실리콘 | 80개 | ||
메타 | 30개 | ||
최대 변수 개수 | 512 |
메모리 셀보다 8배 더 큰 데이터 용량을 가진 블럭.
3.1.8. 로직 디스플레이
로직 디스플레이
Logic Display |
|||
이미지 | |||
목적
|
|||
프로세서를 이용해 임의로 그래픽을 출력할 수 있습니다. | |||
일반
|
|||
체력 | 360 | ||
크기 | 3×3 | ||
화면 크기 | 80×80 | ||
건설 시간 | 3.08초 | ||
건설 비용 | 납 | 100개 | |
강화유리 | 50개 | ||
실리콘 | 50개 |
프로세서와 결합하면 공장의 생산 현황과 누적 생산량, 자원의 비축량등을 보여주는 그래프도 그릴 수 있다.
또한 사용하는 사람 나름이므로 이걸로 그림도 그릴 수 있다.
3.1.9. 대형 로직 디스플레이
대형 로직 디스플레이
Large Logic Display |
|||
이미지 | |||
목적
|
|||
프로세서를 이용해 임의로 그래픽을 출력할 수 있습니다. | |||
일반
|
|||
체력 | 1800 | ||
크기 | 6×6 | ||
화면 크기 | 176×176 | ||
건설 시간 | 8.45초 | ||
건설 비용 | 납 | 200개 | |
강화유리 | 100개 | ||
실리콘 | 150개 | ||
메타 | 75개 |
그냥 좀 더 큰
3.2. 에르키아
3.2.1. 도화지
도화지
Canvas |
||||
이미지 | ||||
목적
|
||||
미리 정의된 팔레트를 사용하여 단순 이미지를 표시합니다. 편집 가능. |
||||
일반
|
||||
체력 | 255 | |||
크기 | 2×2 | |||
건설 시간 | 0.6초 | |||
건설 비용 | 실리콘 | 10개 | ||
베릴륨 | 10개 | |||
색상 종류 | #362944 | #c45d9f | #e39aac | #f0dab1 |
#6461c2 | #2ba9b4 | #93d4b5 | #f0f6e8 |
12×12 크기의 픽셀아트를 직접 그릴수있다. 색상도 8종류로 꽤나 다양하다.
여러 개를 이어 붙일수있다. 세르플로의 로직 디스플레이의 단순한 버전이다.
3.2.2. 보강된 메모 블록
보강된 메모 블록
Reinforced Message |
|||
이미지 | |||
목적
|
|||
동맹 간의 소통을 위한 메시지를 저장합니다. | |||
일반
|
|||
체력 | 100 | ||
크기 | 1×1 | ||
건설 시간 | 0.26초 | ||
건설 비용 | 흑연 | 10개 | |
베릴륨 | 5개 |
같은팀만 해당 블록에 적힌 내용을 볼수있다.
3.3. 기타 블록
3.3.1. 월드 프로세서
월드 프로세서
World Processor |
|||
이미지 | |||
일반
|
|||
체력 | 40 | ||
크기 | 1×1 |
마이크로 프로세서나 로직 프로세서 처럼 실행문을 작성하여 블록을 설치하거나 유닛을 스폰할수있고, 그밖에도 게임내의 규칙 변경, 게임의 UI를 이용해서 내용을 표시하는것도 가능하다.
편집기로 맵을 편집할때를 제외하고는 설치할수 없고 편집도 불가능하다.
3.3.2. 월드 셀
월드 셀
World Cell |
|||
이미지 | |||
일반
|
|||
체력 | 40 | ||
크기 | 1×1 | ||
변수 용량 | 128 |
변수용량이 메모리 셀의 두배다. 마찬가지로 변수를 저장할때 사용한다.
편집기로 맵을 편집할때를 제외하고는 설치할수 없다.
3.3.3. 월드 메모 블록
월드 메모 블록
World Message |
|||
이미지 | |||
목적
|
|||
지도 작성에 사용되는 메시지 블록. 파괴할 수 없습니다. |
|||
일반
|
|||
체력 | 40 | ||
크기 | 1×1 |
수정할수 없는 메모를 남길수있다.
편집기로 맵을 편집할때를 제외하고는 설치할수 없고 메세지 저장도 불가능하다.
4. 로직 언어
프로세서에서 사용되어 복잡한 동작을 구현할 때 쓰이는 언어이다.146 버전 기준으로 월드 프로세서 포함 총 38개의 명령어 블록이 존재한다.
아이템 등 내부적으로 지정된 상수를 이용할 땐 앞에 @를 붙여 적으면 된다. 예를 들어 @titanium 은 티타늄 아이템을 의미한다.
변수를 사전에 선언하지 않더라도 명령어가 변수에 값을 넣는 기능을 한다면 값을 저장할 변수의 이름으로 변수가 생성된다.
변수값에 문자를 넣을 때는 무조건 큰 따옴표 두 개로 모든 문자를 묶어야하고 전체를 묶을 수 없는 큰 따옴표는 프로세서에 저장될 때 작은 따옴표로 바뀐다.
4.1. 로직 블록
4.1.1. 입력 & 출력
4.1.1.1. Read
read [변수 대상] = [메모리 번지] at [변수]
지정한 "메모리 셀"이나 "메모리 뱅크"에서 지정한 위치의 값을 읽어온다.4.1.1.2. Write
write [변수 대상] to [메모리 번지] at [변수]
지정한 "메모리 셀"이나 "메모리 뱅크"의 지정한 위치에 값을 기록한다.4.1.1.3. Draw
로직 디스플레이에 그림을 그리기 위한 명령어다."draw"로 그려진 그림은 해당 프로세서에 한 사이클이 끝날 때까지 데이터로 저장되며, 실행 순서에 따라 덧칠한다.
color r[변수] g[변수] b[변수] a[변수][7]
다음 "color" 명령어가 실행되기 전까지 입력된 값의 색으로 그려진다.
col color[변수]
color 명령어와 비슷하지만 RGB 값이 아닌 HEX 코드를 사용한다. (접두사는'%'를 사용한다.)
line x[변수] y[변수] x2[변수] y2[변수]
점(x,y)부터 점(x2,y2)까지 선을 긋는다.
rect x[변수] y[변수] width[변수] height[변수]
점(x,y)와 점(x + width,y + height)를 마주보는 꼭짓점으로 내부가 채워진 직사각형을 그린다.
lineRect x[변수] y[변수] width[변수] height[변수]
점(x,y)와 점(x + width,y + height)를 마주보는 꼭짓점으로 하는 직사각형의 윤곽선을 그린다.
이후의 line이 포함되는 명령어는 다음과 같은 특징을 갖는다.
1. 선의 굵기가 도형의 크기에 영향을 끼친다.
1. 직사각형 형태로 그어지는 선으로 그려지지만, 도형의 모양을 해치지 않는다.
1. 선의 굵기는 기준이 되는 꼭짓점의 좌표나 외접원의 이웃하는 두 접점을 잇는 선을 중심으로 결정된다.
1. 직사각형 형태로 그어지는 선으로 그려지지만, 도형의 모양을 해치지 않는다.
1. 선의 굵기는 기준이 되는 꼭짓점의 좌표나 외접원의 이웃하는 두 접점을 잇는 선을 중심으로 결정된다.
외접원의 중심이 점(x,y)이며 내부가 채워진 정다각형을 그린다[13].
linePoly x[변수] y[변수] sides[변수] radius[변수] rotation[변수]
외접원의 중심이 점(x,y)인 정다각형의 윤곽선을 그린다.
triangle x[변수] y[변수] x2[변수] y2[변수] x3[변수] y3[변수]
점(x,y), 점(x2,y2), 점(x3,y3)을 꼭짓점으로 하며 내부가 채워진 삼각형을 그린다.
4.1.1.4. Print
[변수]
변수에 입력된 값을 출력 가능한 데이터로 저장한다.변수로 변수명, 내부 지정 상수, 숫자, 큰 따옴표로 묶인 문자열을 받을 수 있다.
4.1.2. 블록 제어
4.1.2.1. Draw Flush
to [변수]
'draw' 명령어로 그려진 데이터를 변수에 적힌 블록[16]으로 전달한다.4.1.2.2. Print Flush
to [변수]
'print' 명령어로 입력된 값을 변수에 적힌 블록[17]으로 전달한다.직접 입력된 값이나 변수로부터 전달받은 값이 숫자, 내부 지정 상수, 큰 따옴표로 묶인 문자열이 아니면 null을 전달한다.
큰 따옴표 내에서 \\n은 줄 바꾸기로 적용되며 \\, \\t, \\", \\0 등은 "를 제외하고 그대로 전달된다.
4.1.2.3. Get Link
[변수] = link# [연결 번호]
순서대로 블록에서 프로세서의 연결을 가져온다.만약 프로세서에 duo1, duo2, duo3이 연결되어 있는 상태에서 연결 번호를 0 으로 설정했다면 getlink의 변수는 duo1이 되는 것이다. 연결 번호가 1이라면 duo2가 변수가 된다. 이때, 프로세서에 연결된 duo1의 연결을 해제 한다면, 연결 번호 1번의 대상은 duo3이 된다.
4.1.2.4. Control
블록의 상태를 변경한다.옵션에는 enabled, shoot, shootp, config, color 가 있다.
set shoot of [블록 감지 대상] x[변수] y[변수] shoot[변수]
지정한 블록을 특정위치로 발사하게 할수있다.
set shootp of [블록 감지 대상] unit[변수] shoot[변수]
목표물 속도를 예측하여 발사한다.
set config of [변수] to [블록 감지 대상]
설정이 가능한 블록의 설정을 바꾼다. 가령 set control config unloader1 to @titanium은 unloader1로 지정된 언로더[20]의 배출 아이템을 티타늄으로 바꾼다.
set color of [변수] to [블록 감지 대상]
조명의 색상을 변경할수있다.
4.1.2.5. Radar
from [감지 블록] target [목표 변수] and [목표 변수] and [목표 변수] order [변수] sort [종류 변수] output [변수 명]
지정된 건물 주변의 기체를 탐색한다.'목표 변수'로는 any, enemy, ally, player, attacker, flying, boss, ground 가있고,
'종류 변수'로는 distance, health, shield, armor, maxHealth 가있다.
4.1.2.6. Sensor
[변수] = [할당 변수] [블록 감지 대상]
블록의 상태를 감지한다.'감지 대상'에는 보유하고 있는 아이템의 개수부터 활성화 여부 등 정말 다양한 정보가 포함된다.
예를 들어 s = @enabled in switch1라고 작성된다면 해당 블록은 'switch1'의 활성화 여부를 감지해 's'라는 변수에 집어넣는다.
4.1.3. 연산
4.1.3.1. Set
[변수 명] = [값]
변수의 값을 초기화한다.초기화 값으로 숫자 외에도 변수 명이나 아이템 상수도 넣을 수 있다.
4.1.3.2. Operation
[연산 값] = [값1] [연산] [값2]
'값1'과 '값2'를 '연산'한 결과를 '연산 값'에 집어넣는다.'연산'의 종류에는 사칙연산, 비교연산, 논리연산, 삼각함수 등이 있다.
4.1.3.3. Lookup
[변수명] =lookup [유형] # [변수]
해당 변수의 블록, 기체, 아이템 ,액체의 이름을 알 수 있다. 예를 들어 '유형'을 아이템으로 정하고 '변수'에 0을 넣으면 '변수명'에 copper가 나오고, 1을 넣으면 lead, 2를 넣으면 metaglass가 나오는 식이다.
4.1.3.4. Pack Color
[변수 명] = pack [변수][변수][변수][변수]
색을 변수로 설정할수있다. 변수를 입력하는 칸은 차례대로 적색,녹색,청색,불투명도를 나타낸다.[21]4.1.4. 흐름 제어
4.1.4.1. Wait
[값] sec
'값' 만큼 프로세서를 대기시킨다.4.1.4.2. Stop
프로세서의 실행을 중지시킨다.4.1.4.3. End
해당 반복 주기를 끝내고 실행줄의 가장 위로 건너뛴다.아래에 아직 실행하지 않은 블록이 있더라도 'end'블록을 만나면 바로 중단하고 다음 타이밍에 다시 처음부터 반복한다.
4.1.4.4. Jump
if [변수 값] [조건] [진위여부]
변수와 값이 조건에 부합한다면 다음 블록 대신 지정한 로직 블록으로 바로 건너뛴다.대상 로직 블록을 지정하는 방법은 해당 블록의 순서 번호로, 0부터 센다.
조건에는 '==', 'not', '<', '<=', '>', '>=', 'always'가 있다. 차례대로 '같음, 다름, 보다 작음, 보다 작거나 같음, 보다 큼, 보다 크거나 같음, 무조건'을 의미한다.
예를 들어 jump 3 lessThan x 10은 'x'가 10보다 작으면 다음블록 대신 4번째 블록을 실행하라는 의미이다.
조건에 부합하지 않으면 그대로 지나간다.
게임 내에서는 로직 블록의 오른쪽에 보이는 세모를 클릭, 드래그 하여 대상 로직블록을 지정할 수 있다.
게임 내에서는 로직 블록의 오른쪽에 보이는 세모를 클릭, 드래그 하여 대상 로직블록을 지정할 수 있다.
4.1.5. 기체 제어
4.1.5.1. Unit Bind
type [기체 할당 변수]
type에 지정된 기체를 @unit으로 지정한다. 지정된 기체는 Raider나 unit control으로 조종할 수 있다. 이때 묶인 기체는 플레이어가 직접 들어가 조종할 수는 있지만, 외부에서 명령을 내리는 것은 불가능하다. 만약 바인드를 풀고 싶다면 unit control의 unbind를 사용하거나, 유닛과 연결된 프로세서를 해체하면 된다.
4.1.5.2. Unit Control
unit bind로 지정된 기체를 조종한다.idle
현재 지정된 기체의 이동을 중단시킨다.
stop
현재 지정된 기체의 모든 행동을 중단시킨다.
move x[변수] y[변수]
현재 지정된 기체를 지정된 좌표로 이동시킨다. 지정된 좌표의 변수가 @null이라면 해당 축의 0으로 이동한다.
approach x[변수] y[변수] radius[변수]
현재 지정된 기체를 지정된 좌표로 이동시키고, radius의 값 만큼 해당 좌표를 기준으로 원을 그린다.
pathfind x[변수] y[변수]
지정된 좌표로 길을 찾아간다.
autoPathfind
boost enabled [변수]
변수칸에 0을 넣어 지정된 지상형 기체를 착륙시키고 1을 넣어 이륙 시킨다.이륙가능한 기체로는 노바, 펄서, 퀘이사와 벨라가 있다.
target x[변수] y[변수]
입력된 좌표로 탄환을 발사한다.
targetp unit[변수] shoot[변수]
지정된 기체를 unit 변수칸에 지정된 기체의 이동속도를 예측해 사격하게 한다.shoot 변수칸에 0을 넣어 사격을 중지하고 1을 넣어 사격한다.
itemDrop to[변수] amount[변수]
to 변수칸에 지정된 건물에 지정된 기체가 가지고 있는 자원을 amount 변수 값 만큼 투하하게 한다.
itemTake from[변수] item[변수] amount[변수]
지정된 기체가 from 변수칸에 지정된 건물에서 item 변수칸에 지정된 자원을 amount 변수 값 만큼 가져가게 한다.
payDrop
지정된 지원형 기체가 현재 좌표에 들고있는 화물을 투하하게 한다.화물을 들 수있는 유닛으로는 메가, 쿼드, 옥트가 있다.
payTake takeUnits[변수]
지정된 유닛이 현재 좌표에서 takeUnits변수 값에 해당하는 기체를 수송하게 한다.
payEnter
지정된 기체를 현재 좌표에 있는 건물에 화물상태로 진입하게 한다.블럭위를 걸어다닐 수 있는 기체는 건물위에서 바로 진입할 수 있지만, 그러지 못하는 기체들은 컨베이어를 사용해 집어넣으면 된다.
mine x[변수] y[변수]
지정된 기체기 지정한 좌표의 타일을 채굴하게 한다.
flag value[변수]
지정된 기체에 value변수 값에 지정된 숫자값을 해당 기체의 태그로 설정한다.
build x[변수] y[변수] block[변수] rotation[변수] config[변수]
건설이 가능한 지정된 기체를 지정된 좌표에 block값에 해당하는 건물을 rotation값에 해당하는 값 만큼 돌려서 config에 설정된 변수에 따라 해당건물을 설정한다.
예) block @sorter rotation 0 config @copper 로 설정하면 지정된 기체가 해당 좌표에 구리로 설정된 필터를 설치한다.
getBlock x[변수] y[변수] type[변수] building[변수] floor[변수]
지정된 기체의 인식 범위 내의 지정된 좌표를 검색해 해당 좌표에 건물이 있다면 해당 건물을 type변수값에 지정 변수로 대입하고 building 값에 건물 변수로 대입한다.
within x[변수] y[변수] radius[변수] result[변수]
지정된 좌표로 부터 radius값만큼의 범위안에서 지정된 기체가 존재한다면 result에 1을 내보내고, 똑같은 기체가 없다면 0을 내보낸다.
unbind
지정된 기체의 unit bind로 지정된 상태를 해제 시키고, 플레이어가 명령을 내릴수 있는 상태가 된다.
4.1.5.3. Unit Radar
target [목표 변수] and [목표 변수] and [목표 변수] order [변수] sort [종류 변수] output [변수 명]
지정된 기체 주변의 기체를 탐색한다.'목표 변수'로는 any, enermy, ally, player, attacker, flying, boss, ground 가있고,
'종류 변수'로는 distance, health, shield, armor, maxHealth 가있다.
4.1.5.4. Unit Locate
특정 위치나 건물을 지도상에서 찾는다.find ore ore[자원 할당 변수] outX[변수] outY[변수] found[변수]
지정된 기체가 ore변수에 지정한 자원의 매장지를 찾는다.
find building group[목표 건물 종류] enermy[변수] outX[변수] outY[변수] found[변수] building[변수]
지정된 기체가 '목표 건물 종류'에 지정된 종류의 건물을 찾는다
'목표 건물 그룹'으로는 'core', 'storage', 'generator', 'turret', 'factory', 'repair', 'battery', 'reactor'가 있다.
차례대로 코어, 창고, 발전기, 포탑, 공장, 수리 지점, 배터리, 원자로다
차례대로 코어, 창고, 발전기, 포탑, 공장, 수리 지점, 배터리, 원자로다
find spawn outX[변수] outY[변수] found[변수] building[변수]
지정된 기체가 적의 스폰지점을 찾는다.
find damaged outX[변수] outY[변수] found[변수] building[변수]
지정된 기체가 수리가 필요한 아군건물을 찾는다.
4.1.6. 월드
월드 프로세서 전용 실행문이다. 일반 프로세서에는 존재하지 않는다.4.1.6.1. Get Block
[변수 값] =get [블록 종류] at [x좌표],[y좌표]
특정 위치의 블록정보를 변수 값으로 지정한다.블록 종류로는 floor(바닥), ore(광석 매장지), block(블록), building(건물) 이다.
4.1.6.2. Set Block
특정 위치에 블록을 생성하거나 변경한다.floor at [x좌표],[y좌표] to [변수]
특정 좌표에 to 변수에 입력된 바닥을 생성한다.
ore at [x좌표],[y좌표] to [변수]
특정 좌표에 to 변수에 입력된 광석 매장지를 생성한다.
block at [x좌표],[y좌표] to [변수] team [변수] rotation [회전 값][22]
특정 좌표에 to 변수에 입력된 블록을 생성한다.
team 변수로 블록이 속한 팀을 변경할수있고, rotation 변수로 회전시킬 수 있다.
4.1.6.3. Spawn Unit
[변수값] =spawn [기체 할당 변수] at [x좌표],[y좌표] team [변수] rot [회전 값]
지정된 기체를 입력한 좌표에 소환한다.team 변수로 기체가 속한 팀을 변경할수있고, rot 변수로 회전시킬 수 있다.
기체 소환에 텀이 없기때문에 되도록이면 Wait실행문을 넣는걸 추천한다.
4.1.6.4. Apply Status
기체에게 상태이상을 적용하거나 지울수있다.'Unit Bind'로 기체를 지정해야한다.
apply [상태이상] to [기체] for [값][23] sec
기체에게 선택한 상태이상을 부여한다
clear [상태이상] from [기체]
기체의 상태이상을 제거한다.
4.1.6.5. Spawn Wave
natural[함수] x[함수] y[함수]
4.1.6.6. Set Rule
[규칙] of [팀][24] = [변수]
게임의 규칙을 설정할수있다.규칙의 종류는 다음과 같다:
currentWaveTime:
waveTimer: 단계 넘김 (0:비활성화 1:활성화)
waves: 단계 존재 여부 (0:비활성화 1:활성화)
wave: 단계를 변경한다.
waveSpacing:
waveSending:
attackMode: 공격모드 설정 (0:비활성화 1:활성화)
enemyCoreBuildRadius: 적 코어 건설금지 범위를 설정한다.
dropZoneRadius: 적 스폰 구역 범위를 설정한다.
unitCap: 기본 기체 제한 (기체 제한수를 정하는게 아니라 기체 제한수에 입력한 값만큼 더하는거다.)
mapArea: 맵 영역 제한 (0:비활성화 1:활성화)
lighting: 조명을 활성화한다. (0:비활성화 1:활성화)
ambientLight: 주변광의 색을 변경한다.
solarMultiplier: 태양광 발전기의 발전배수를 설정한다.
팀 설정이 가능한 규칙은 다음과 같다:waveTimer: 단계 넘김 (0:비활성화 1:활성화)
waves: 단계 존재 여부 (0:비활성화 1:활성화)
wave: 단계를 변경한다.
waveSpacing:
waveSending:
attackMode: 공격모드 설정 (0:비활성화 1:활성화)
enemyCoreBuildRadius: 적 코어 건설금지 범위를 설정한다.
dropZoneRadius: 적 스폰 구역 범위를 설정한다.
unitCap: 기본 기체 제한 (기체 제한수를 정하는게 아니라 기체 제한수에 입력한 값만큼 더하는거다.)
mapArea: 맵 영역 제한 (0:비활성화 1:활성화)
lighting: 조명을 활성화한다. (0:비활성화 1:활성화)
ambientLight: 주변광의 색을 변경한다.
solarMultiplier: 태양광 발전기의 발전배수를 설정한다.
buildSpeed: 건설 속도 배수를 변경한다.
unitHealth: 기체 체력 배수를 변경한다.
unitBuildSpeed: 기체 생산속도 배수를 변경한다.
unitCost: 기체 비용 배수를 변경한다.
unitDamage: 기체 피해량 배수를 변경한다.
blockHealth: 블록 체력 배수를 변경한다.
blockDamage: 블록 피해량 배수를 변경한다.
rtsMinWeight:
rtsMinSquad:
unitHealth: 기체 체력 배수를 변경한다.
unitBuildSpeed: 기체 생산속도 배수를 변경한다.
unitCost: 기체 비용 배수를 변경한다.
unitDamage: 기체 피해량 배수를 변경한다.
blockHealth: 블록 체력 배수를 변경한다.
blockDamage: 블록 피해량 배수를 변경한다.
rtsMinWeight:
rtsMinSquad:
4.1.6.7. Flush Message
게임 UI로 메세지를 출력한다.Print 실행문을 먼저 실행한 후 사용해야 한다. 안그러면 공백을 출력한다.
notify
화면 위로 내용을 출력한다.
새로운 콘텐츠를 해금하거나 수호자 기체가 나타날때도 출력된다.
announce for [값] secs
입력된 시간만큼 화면 정 가운데에 메세지를 출력한다.
새로운 섹터에 착륙할때도 출력된다.
toast for [값] secs
입력된 시간만큼 화면 상단에 메세지를 출력한다.
mission
좌측 상단 플레이어 기체옆에 단계대신 출력된다.
튜토리얼에서 자주 보인다.
4.1.6.8. Cutscene
플레이어의 카메라를 조작한다.pan x[변수] y[변수] speed[변수]
지정한 좌표로 카메라를 이동시킨다.
카메라를 이동시킨 동안 화면조작, 이동이 불가능하다.
zoom level [변수]
'변수'로 지정된 값만큼 화면을 확대한다.
화면을 확대하는동안 화면조작, 이동이 불가능하다.
stop
화면 조작을 멈춘다.
pan 또는 zoom 실행문이 실행될경우 stop 실행문이 실행하기 전까지 화면 조작은 물론 이동도 불가능하기때문에, 둘이 같이 사용해야한다.
4.1.6.9. Effect
인게임의 파티클을 생성한다.파티클의 종류는 다음과 같다:
warn: 경고 표시의 파티클이다.
cross: X 모양의 파티클이다.
blockFall: 블록이 떨어지는 파티클이다. data 변수를 통해 떨어지는 블록을 설정할수있다.
placeBlock: 블록을 설치할때 발생하는 파티클이다.
placeBlockSpark:
breakBlock: 블록을 파괴할때 발생하는 파티클이다.
spawn: 플레이어 기체가 재설정할때 발생하는 파티클이다.
trail:
breakProp:
smokeCloud:
vapor:
hit:
hitSquare:
shootSmall:
shootBig:
smokeSmall:
smokeBig:
smokeColor:
smokeSquare:
smokeSquareBig:
spark:
sparkBig:
sparkShoot:
sparkShootBig:
drill: 드릴이 광물을 채굴할때 발생하는 파티클이다.
drillBig:
lightBlock:
explosion: 폭발할때 발생하는 파티클이다.
smokePuff:
sparkExplosion:
crossExplosion: 쿼드가 공격할시 발생하는 파티클이다.
wave: 단계가 지날때마다 적 스폰 위치에서 폭발과 함께 발생하는 파티클이다.
bubble: 거품이다.
cross: X 모양의 파티클이다.
blockFall: 블록이 떨어지는 파티클이다. data 변수를 통해 떨어지는 블록을 설정할수있다.
placeBlock: 블록을 설치할때 발생하는 파티클이다.
placeBlockSpark:
breakBlock: 블록을 파괴할때 발생하는 파티클이다.
spawn: 플레이어 기체가 재설정할때 발생하는 파티클이다.
trail:
breakProp:
smokeCloud:
vapor:
hit:
hitSquare:
shootSmall:
shootBig:
smokeSmall:
smokeBig:
smokeColor:
smokeSquare:
smokeSquareBig:
spark:
sparkBig:
sparkShoot:
sparkShootBig:
drill: 드릴이 광물을 채굴할때 발생하는 파티클이다.
drillBig:
lightBlock:
explosion: 폭발할때 발생하는 파티클이다.
smokePuff:
sparkExplosion:
crossExplosion: 쿼드가 공격할시 발생하는 파티클이다.
wave: 단계가 지날때마다 적 스폰 위치에서 폭발과 함께 발생하는 파티클이다.
bubble: 거품이다.
4.1.6.10. Explosion
team [팀] x[변수] y[변수] radius[변수] damage[변수] air[T/F] ground[T/F] pierce[T/F]
지정된 위치에 폭발을 일으킨다.radius 변수로 폭발의 범위를 늘리거나 줄일 수있고, damage 변수로 피해량을 변경할수있다.
air 변수와 ground 변수로 공중 혹은 지상에 피해를 입힐지를 정할수 있다.
pierce 변수를 활성화 하면 폭발의 형태가 웨이브가 지날때마다 적 스폰 지점에서 나오는 폭발로 변한다.
4.1.6.11. Set Rate
ipt = [변수]
변수값만큼 해당 프로세서의 실행속도를
틱당 연산량으로 설정한다. 높을수록 프로세서의 연산속도가 빨라진다.기본값은 10이다.
여담이지만 ipt를 구하는 법은 연산속도에 60을 나누면 된다.[30]
4.1.6.12. Fetch
기체, 플레이어, 코어, 건물을 엔티티 번호로 조회한후 변수값에 저장한다.'할당 변수'의 종류는 unit, player, core, build, unitCount, playerCount, coreCount, buildCount 등이 있다.
엔티티 번호는 대상이 생성된 시간에따라 0 부터 순서대로 부여된다.[33]
또한, # 변수에 입력된 값의 엔티티번호를 소유한 엔티티를 조회한다.[34]
~~Count 에 경우 기체나 플레이어, 코어 또는 건물의 경우 block 함수로 설정한 건물의 수를 감지한다.
4.1.6.13. Sync
[변수]
4.1.6.14. Get Flag
[변수 값] =flag [플래그 변수]
4.1.6.15. Set Flag
[플래그 변수] = [변수]
4.1.6.16. Set Prop
set [할당 변수] of [목표] to [변수]
기체나 건물의 속성을 설정한다.이를 이용해서 플레이어의 팀을 변경하거나 코어에 들어있는 자원을 설정할수있다.
4.2. 사용예
4.2.1. 자동 차단기
sensor t vault1 @titanium
jump If t is greater than 300 jump to 5
control enabled unloader1 0(혹은 false)
end
control enabled unloader1 1(혹은 true)
end
위 로직은 'vault1'의 티타늄 보유량을 감지하고, 그것이 300개보다 작으면 'unloader1'을 비활성화, 크면 활성화 한다.jump If t is greater than 300 jump to 5
control enabled unloader1 0(혹은 false)
end
control enabled unloader1 1(혹은 true)
end
이를 응용하여 코어에서 자원을 뽑아 탄약으로 사용하거나 자원가공에 사용할 때 실리콘이나 티타늄과 같이 용도가 다양한 자원을 동나지 않도록 할 수 있다. 응용하면 한 불럭의 자원이 부족할때 뽑아써서 공간절약 공장을 만들수도 있다.
4.2.2. 기체 모으기
4.2.3. 토자로 폭발 방지
jump 2 lessThan a @links
set a 0
getlink link a
op add a a 1
sensor heat link @heat
jump 7 equal heat 0
control enabled link 0 0 0 0
jump 9 greaterThan heat 0
control enabled link 1 0 0 0
end
위 로직과 연결된 토륨 원자로가 발열할경우, 해당 토륨원자로의 작동을 중단한다.set a 0
getlink link a
op add a a 1
sensor heat link @heat
jump 7 equal heat 0
control enabled link 0 0 0 0
jump 9 greaterThan heat 0
control enabled link 1 0 0 0
end
연결된 토륨 원자로가 많으면 작동이 느릴수 있다.
[1]
게임 내 클립보드에서 가져오기 기능을 이용하면 된다.
[2]
구문의 의미에 따라 자동으로 색을 달리 입혀주는 기능이다
[3]
0/1보다 더 많은 값이 필요하면 필터를 사용하자.
[4]
적색(Red) 변수 (범위: 0~255)
[5]
녹색(Green) 변수 (범위: 0~255)
[6]
청색(Blue) 변수 (범위: 0~255)
[7]
불투명도 변수 (범위: 0~255, 기본값: 255)
[8]
선의 굵기 변수
[9]
선의 끝 부분은 둥글게 다듬어지지 않기 때문에 직사각형처럼 그어진다.
[10]
각의 갯수 변수
[11]
외접원의 반지름 변수
[12]
반시계 방향 회전 변수(한 바퀴 = 360)
[13]
기준이 되는 꼭짓점은 점(x,y)를 원점으로 회전 값이 360의 정수배일 때 양의 x축 위에 있다
[14]
@copper, @titanium 등의 게임 내 대상 변수
[15]
크기 변수
[16]
주로 로직 디스플레이
[17]
주로 메모 블록
[18]
작동이 중지된 블록은 커서를 위에 올려보면 x 표시가 뜬다.
[19]
스위치 등 특별한 경우를 제외하고 비활성화 된 블록은 약간의 시간이 지나면 다시 자동으로 활성화된다. 따라서 계속 비활성화 시키고 싶다면 매 반복마다 다시 비활성화를 시켜줘야 한다.
[20]
실제 블록 이름은 다를 수 있다.
[21]
변수 값의 범위는 0~1이며, 소숫점을 인식한다.
[22]
범위: 0~3 (그 이상은 3으로 인식한다.)
0:오른쪽, 1:위쪽, 2:왼쪽. 3:아랫쪽 [23] 지속시간이 없는 상태이상은 나타나지 않는다. [24] 팀 설정이 가능한 규칙에서만 설정할수있다. [25] 파티클의 색상을 설정할수 있는 경우에만 나타난다. 그 이외의 경우에는 보이지 않는다. [26] '%'접두사의 HEX코드를 사용한다. [27] 파티클의 크기를 설정할수 있는 경우에만 나타나며, 그 이외의 경우에는 보이지 않는다. [28] 파티클의 회전값을 설정할수 있는경우에만 나타난다. 기체의 공격 파티클이 대부분이 회전값 설정이 가능하다. [29] 파티클의 데이터를 설정할수 있는경우에 나타난다. [30] 즉, 마이크로 프로세서의 ipt는 120/60=2가되고, 일반 프로세서중 가장 빠른 하이퍼 프로세서의 ipt는 1500/60=25가 된다. [31] '할당 변수'의 종류가 unitCount, playerCount, coreCount, buildCount 인 경우에는 설정이 불가하다. [32] 오직 '할당 변수'의 종류가 build, buildCount 인 경우에만 설정이 가능하다. [33] 예를들어 허허벌판에 대거-노바-크롤러 순으로 기체를 생산했다고 가정한다면, 대거의 엔티티 번호는 1[36], 노바는 2, 크롤러는 3이된다. 물론 플레이어, 코어, 건물도 마찬가지다. [34] 대거의 엔티티번호가 5일 경우 # 변수에 5를 입력하면 @dagger 가 변수 값으로 저장된다. [35] approach를 써도 된다.
0:오른쪽, 1:위쪽, 2:왼쪽. 3:아랫쪽 [23] 지속시간이 없는 상태이상은 나타나지 않는다. [24] 팀 설정이 가능한 규칙에서만 설정할수있다. [25] 파티클의 색상을 설정할수 있는 경우에만 나타난다. 그 이외의 경우에는 보이지 않는다. [26] '%'접두사의 HEX코드를 사용한다. [27] 파티클의 크기를 설정할수 있는 경우에만 나타나며, 그 이외의 경우에는 보이지 않는다. [28] 파티클의 회전값을 설정할수 있는경우에만 나타난다. 기체의 공격 파티클이 대부분이 회전값 설정이 가능하다. [29] 파티클의 데이터를 설정할수 있는경우에 나타난다. [30] 즉, 마이크로 프로세서의 ipt는 120/60=2가되고, 일반 프로세서중 가장 빠른 하이퍼 프로세서의 ipt는 1500/60=25가 된다. [31] '할당 변수'의 종류가 unitCount, playerCount, coreCount, buildCount 인 경우에는 설정이 불가하다. [32] 오직 '할당 변수'의 종류가 build, buildCount 인 경우에만 설정이 가능하다. [33] 예를들어 허허벌판에 대거-노바-크롤러 순으로 기체를 생산했다고 가정한다면, 대거의 엔티티 번호는 1[36], 노바는 2, 크롤러는 3이된다. 물론 플레이어, 코어, 건물도 마찬가지다. [34] 대거의 엔티티번호가 5일 경우 # 변수에 5를 입력하면 @dagger 가 변수 값으로 저장된다. [35] approach를 써도 된다.
[36]
0번이 아니라 1인 이유는 0번은 플레이어이기 때문에