ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [레일크래프트] 5. 티켓과 경로설정
    <마인크래프트 공략>/레일크래프트 2015. 12. 13. 19:57

     

    증기기관차는 끝났지만 증기기관차와 관련된 것이 아직 남아있죠. '티켓'입니다. 오늘은 티켓을 쓰는 법을 예시와 함께 보여드리죠.

     

     

    티켓이란?

    위와 같이 생긴 종이조각입니다. 보시다시피 2가지가 있죠. 하나는 일반티켓, 하나는 황금티켓입니다. 이 티켓들은 '기관차에 Destination(목적지)정보를 저장'하는 역할을 합니다. 먼저 만드는법부터 봅시다.

     

    2종의 티켓 중 가장 먼저 만들 것은 '황금티켓'입니다. 종이와 금조각으로 만들죠. 이 황금티켓이 '원본 티켓'이라고 생각하면 되겠습니다.

     

    자 황금티켓이 만들어 졌으면 이제 종이와 조합해 '일반티켓으로 복사'가 가능해집니다. 티켓에 들어있던 목적지 정보가 그대로 복사되죠. 이렇게 복사한 일반티켓은 '일회용'입니다.

     

     

    티켓에 목적지 적어넣기

    갓 만든 티켓에는 이제 목적지를 적어줘야 합니다. 일반티켓은 그저 복사본이라서 정보 변경이 불가능하고, 황금티켓을 들고 우클릭을 합시다.

    그러면 티켓의 인터페이스가 나타납니다. 우리가 쓸수 있는 부분은 아래쪽 'Dest='옆, 그리고 맨 아래의 3개의 버튼입니다. 버튼들은 무슨소린지 다들 아실 테고 적는 것을 봅시다.

    Dest는 Destination을 줄여둔 말입니다. 위에서 제가 영어를 적은 이유이기도 하죠. 이 줄에다가는 '마음대로 문자를 써넣을 수 있습니다'.(띄어쓰기 불가)

     

    저는 이렇게 적어보았습니다. Hello World가 생각나는건 기분탓일겁니다. 어쨌든 적고 Done을 눌러주면 저장되죠.

     

    이 정보는 외부에서도 볼 수 있습니다.

     

    끝이냐고요? 목적지 적는 것은 이게 전부입니다. 별거 없죠. 하지만 티켓으로 경로설정을 하는 것은 좀 더 필요합니다.

     

     

    루팅테이블(Routing Table)

    필기 가능한 책과 파란색 염료를 조합하면 만들어집니다. 티켓을 이용한 경로설정을 많이 할것이라면 이 책이 많이많이 필요하죠.

     

    레일크래프트 글에서 앞부분에 나온 루팅 스위치 모터(Routing Switch Motor)있죠? 이 장치와 루팅테이블은 한몸이라고 봐야 합니다. 이 스위치모터 안에 들어가서 사용되기 때문입니다.

    루팅 스위치 모터는 자기 안에 들어가있는 루팅 테이블의 정보를 읽어 가까이 오는 기관차와 비교합니다. 조건에 맞으면 작동, 아니면 작동을 하지 않죠.

     

    이 테이블을 들고 우클릭 해보면 티켓처럼 인터페이스를 열수 있습니다. 그런데 이 책에는 아무것도 안쓰여있죠. 우리가 정보를 적어줘야 합니다. 그럼 적는 법을 알아봅시다.

     

     

    스크립트 짜기

    정식으로 루팅 테이블에 적는 정보를 스크립트라고 하는지는 정확히 모르겠습니다만, 스크립트라고 부르겠습니다.

    먼저 스크립트에 적을 정보들을 '키워드(Keyword)'라고 부릅니다. 그리고 키워드는 '연산자 키워드(Operator Keyword)'와 '상태 키워드(Condition Keyword)'로 나뉘어집니다. 연산자 키워드는 'AND, OR, NOT'이 있고, 상태 키워드에는 'Dest=, Owner=, Name=, Type=, Riding=, Ridden=, Color=, NeedsRefuel=, Redstone='이 있습니다. 참고로 이 모든 키워드는 '루팅 테이블의 Help에서 볼 수 있습니다'.

     

     

    Dest=

    Dest=문은 '목적지를 알리는 문장'으로 'Dest=문자열'의 구조로 이루어집니다. 예를들면,

    이렇게 말이죠. 저는 red라는 목적지를 적고 저장하겠습니다.

     

    그리고 갈림길의 루팅 스위치 모터에다가 넣어줬습니다. 또한, 기관차의 티켓도 red가 목적지로 되어있죠.

    레일크래프트의 갈림길은 기본 방향이 '오른쪽'으로 되어있습니다.(방향을 모르겠다면 스위치모터 위에 달린 화살표를 보면 됩니다) 따라서 기관차는 기본적으로 '파란색'쪽으로 가게 됩니다.

    하지만 모터에 저장된 'red'라는 정보에 맞는 기관차가 오면 작동, 반대 방향인 '빨간색'쪽으로 가게 되죠.

     

    기관차가 red일때는 빨강, 나머지일때는 파랑으로 가는 것을 볼수 있습니다.

    참고로 Dest=null을 적으면 '경로설정이 없는 모든 기관차'에 해당됩니다.

     

     

    Owner=

    Owner=문은 '기관차의 주인을 판별하는 문장'입니다. 'Owner=유저이름'으로 쓰여지죠.

     

    예를들어 이렇게 적어두었다고 합시다. 그러면 '제가 만들었거나 나에게 소속된 모든 기관차'가 해당됩니다. 멀티에서 쓸 수 있겠죠.

     

     

    Name=

    이것은 '카트의 이름이 맞는지 아닌지 확인하는 문장'입니다. 'Name=카트이름'으로 이루어지죠. 참고로 이 문장은 기관차 외의 마인카트에도 적용됩니다.

     

    여기 모루로 이름을 바꾼 전기기관차가 있습니다. 이렇게 이름을 부여받은 기관차는 기관차 위에 이름이 표시된다는 것도 참고하세요.

     

    다음으로 루팅 테이블에도 이 문장을 적어줬습니다.

     

    결과는 이렇습니다. 이름이 일치한 기관차 Hayo the Pathmaker는 왼쪽, 이름이 일치하지 않은 나머지는 오른쪽으로 가게 되었습니다.

    Name=null이라고 할 시 이름이 없는 카트들이 효과를 받습니다.

     

     

    Type=

    Type문은 좀 특이합니다. 'Type=modid:itemname'으로 쓰면 됩니다. 이걸 쓰려면 모드id와 아이템의 코드 속 이름을 알아야 하죠. 과연 쓸 일이 있을지는…

     

     

    Riding=

    Riding문은 '열차에 올라탄 사람과 관련된' 문장입니다. 'Riding=유저이름'으로 작성하면 됩니다.

     

    이번에도 저를 써보죠. Riding=Entimer입니다.

     

    제가 타고있는 열차만 빨강쪽으로 이동하게 되었습니다. 이걸 이용해 특별한 사람이 탄 열차만 갈수있는 구역을 만들수도 있겠네요.

     

     

    Ridden=

    이것은 '사람이 탔는지 안탔는지를 구별'하는 문장입니다. 'Ridden=true/false'로 쓰면 되죠. true와 false중 하나만 쓰면 됩니다.

     

    Ridden=true(사람이 타있으면 작동)으로 하면 스샷의 예시처럼 사람이 탄 열차에만 반응합니다.

    반대로 false로 했다면 플레이어가 탄 열차가 파란색으로 갔겠죠.

     

     

    Color=

    Color문은 '기관차의 색을 따지는 문장'입니다. 'Color=1번째색,2번째색'으로 작성합니다.

    1번째색이 몸통, 2번째색이 기차의 범퍼(?)같은 부분의 색입니다. 2가지의 순서가 바뀌면 다른 명령어가 되니 주의!

     

    이번엔 검정,빨강 기관차가 빨간색으로 가도록 써뒀습니다.

     

    검정,빨강 기관차만 빨간색 영역으로, 나머지는 파란색 영역으로 갑니다.

    만약 Color=Yellow,Black이였다면 순서가 바뀌었을 것이고, 다른 문장이 적혔으면 둘다 파랑으로 갔을겁니다.

     

     

    NeedsRefuel=

    NeedsRefuel문을 잘 보면 It Needs Refuel이죠. 연료 재공급이 필요하다는 뜻입니다. 이 문장은 '연료나 물이 적은 증기기관차가 있으면 작동'하게 하는 문장입니다. 여기서 주의할 점은 '증기기관차'라는 점. 다른건 아무런 관련이 없는 문장입니다.

    'NeedsRefuel=true/false'로 씁니다. 역시 참/거짓 중 한가지만 써야 합니다.

    아쉽지만 연료와 물이 얼마나 적어야 반응하는지는 모르겠습니다.

     

     

    Redstone=

    이 문장은 '레드스톤 신호가 들어오는지 아닌지 판별'하는 문장입니다. 'Redstone=true/false'로 쓰죠.

     

    여기 레드스톤이 들어오면 작동하라고 문장을 써두었습니다.

     

    그럼 이런 결과가 나오게 되죠. 이 문장을 사용하면 레드스톤으로도 라우팅 스위치 모터를 작동할 수 있게 됩니다.

     

     

    AND, OR, NOT

    이 세 연산자는 라우팅 모터를 좀더 복잡하게 만들수 있게 해주는 것들이죠. 조건을 여러 개 달수 있게 되는겁니다. 일단 기본적으로 연산자들의 역할을 알아보죠.

    논리연산에서 and는 '논리곱'이라고도 합니다. 논리의 결과값이 참이 나오려면 입력값이 모두 참이여야 합니다. 쉽게 말해 조건이 모두 맞아야 작동합니다.

    입력1

    입력2

    결과

    0

    0

    0

    0

    1

    0

    1

    0

    0

    1

    1

    1

     

    Or는 '논리합'이라고도 부릅니다. 이 연산자의 결과값이 참이 나오려면 입력값중 하나 이상만 참이면 됩니다.

    입력1

    입력2

    결과

    0

    0

    0

    0

    1

    1

    1

    0

    1

    1

    1

    1

     

    Not은 '논리부정'입니다. 입력값, 결과값 모두 1개인데, 입력의 반대로 결과를 내뱉는 연산자입니다.

    입력

    결과

    0

    1

    1

    0

     

    이 효과는 루팅 테이블에서도 마찬가지입니다. 다만 실제 논리회로에선 and나 or의 입력값이 2개를 넘어갈때도 있지만 여기서는 2개 고정이라는 정도?

     

    이렇게 작성된 루팅 테이블이 있다고 합시다. 목적지가 red이고, 색이 검정,빨강이여야 작동하도록 쓴 것이죠.

     

    결과는 잘 나왔습니다. 색이 검정,빨강인 것, 목적지가 red인 것 모두 만족해야 빨간 구역으로 갑니다.

     

    이번엔 OR로 실험해보겠습니다. 목적지가 red인 것, 색이 검정,빨강인 것 둘중 하나만 만족하면 작동합니다.

     

    잘 작동하죠. 두 조건을 모두 만족하지 못하는 노랑,검정에 경로없는 기관차만 파란 구역으로 갔습니다.

     

    마지막으로 NOT을 테스트해 봅시다. 색깔이 검정,빨강이 아니여야 작동합니다.

     

    성공적입니다. 이 상황에서는 하양,파랑 기관차도 빨간색으로 갈것입니다. 검정,빨강이 아니니까.

     

    자 그런데, 이렇게 쓰면 뭐가 될까요?

    정답은 'OR로 본다' 입니다. '논리연산자 없이 문장을 여러줄 쓰면 그 줄은 전부 OR로 처리'됩니다. 그중 하나만 만족하면 작동하는 것이죠.

     

     

    자 그럼 문제를 한번 내보겠습니다.

    루팅 스위치 모터에 위와 같은 루팅 테이블이 들어있습니다. 그럼 아래의 번호들 중 모터를 작동시키지 못하는 열차는 어떤것일까요? 답은 1개 이상입니다.

    1. 목적지가 2인 검정,빨강 기관차

    2. 목적지가 4인 하양,파랑 기관차

    3. 사람을 태운 노랑,검정 기관차

    4. Entimer가 주인인 목적지가 4인 노랑,검정 기관차

     

     

     

     

     

     

     

     

     

     

    정답은3, 4번입니다.

    일단 답이 1개 이상이라 했으니 1개도 포함입니다.

    1번은 목적지가 2인 것에서 이미 조건을 만족합니다. 게다가 색도 노랑,검정이 아니죠.

    2번은 목적지가 4라는 부분에서 목적지 조건이 불충족되지만, 색깔이 노랑,검정이 아니라는 점에서 작동합니다.

    3번의 사람을 태운 점은 좋은데 주인이 Entimer라고 하지 않았으니 AND는 불충족. 색깔도 노랑,검정이라 조건에 모두 맞지 않습니다.

    4번은 Entimer가 주인인건 좋지만 사람을 안태웠으니 AND불충족, 목적지가 4라 목적지 조건 불충족, 색이 노랑,검정이라 색깔조건 불충족으로 모두 맞지 않습니다.

     

    여기서 우린 OR연산이 적용되는 문장이 Dest가 전부가 아니란 것을 알수 있죠. OR는 Dest조건 3개, AND조건 2줄, NOT조건 모두에 걸쳐있습니다. 위에서 말한 '논리연산자가 딱히 없으면 OR로 친다'가 적용된 것이죠. 참고하세요.

     

     

    감지기-루팅(Detector-Routing)

    마지막으로 간단한 장치 하나 마치고 끝냅시다. 이 장치는 레일크래프트의 감지기의 일종으로 '루팅 테이블의 정보'를 감지합니다.

    이 디텍터 속에도 루팅 테이블을 집어넣을 수 있죠. 그렇게 집어넣은 테이블의 정보와 감지기 바로 근처의 레일을 지나가는 기관차의 정보를 비교해 일치하면 레드스톤 신호를 내보냅니다.

     

    예시를 통해 쉽게 보죠. 위 스샷을 보면 디텍터 근처(위)의 레일에 목적지가 1인 기관차가 있습니다.

    그리고 GUI가 보이진 않지만 디텍터 안에는 Dest=1이라고 적인 루팅 테이블이 들어있습니다.

    그러면 스샷처럼 빨간 점이 있는 부분으로 레드스톤 신호를 방출합니다.

     

     

     

    음… 이번엔 좀 길었습니다. 티켓 그까이꺼 뭐 금방 끝나겠지 하고 쓴 글이 엄청 길어졌네요. 그럼 유용한 글 되었으면 하고 전 시험공부 하러…

    댓글 13

Designed by Tistory.