글을 읽기 전에…

글을 읽기 전에 확인하실 사항을 알려드립니다.

1. 작업대(Crafting Table)나 화로(Furnace)를 이용한 아이템 제작법은 생략합니다. 제작법은 Not Enough Items(NEI), CraftGuide 등의 모드를 이용하거나, 인터넷에서 검색하면 쉽게 찾아보실 수 있습니다. 대신 검색을 하기위한 영문 이름을 같이 표기하도록 하겠습니다. 작업대 이외의 특별한 제작 방법이 필요한 경우 설명이 있을 수 있으나 그 경우에도 세세한 제작법의 설명은 생략할 가능성이 높습니다. 글을 쓰는 저 또한 NEI(와 추가 플러그인)를 이용해서 아이템 제작을 하고 있습니다.

2. 마인크래프트의 기본적인 내용은 알고 있다고 가정합니다. 마인크래프트가 아닌 모드에 대한 설명이 주가 됩니다. 마인크래프트에 대한 내용은 Minecraft Wiki 등을 참고하시면 됩니다.

한글 입력기, nemocraft Hangul 1.5

nemocraftHangul

nemocraft Hangul [Dropbox]

수정 사항

1.5 (2014/09/12)
– Minecraft 1.7.2, 1.7.10 지원
– Not Enough Items 1.0.2 이후 버전과의 호환성 문제 수정

1.4 (2014/05/13)
– 언어 파일을 사용하기 위해 coremod + mod 구조로 변경합니다.
– [github]를 통해 소스코드를 공개합니다.

1.4b1 (2014/05/11)
– 마인크래프트 1.7.2 대응의 베타 버전입니다.

1.3 (2013/10/08)
– VoxelMap의 waypoint 추가에서 한글 입력을 지원합니다.
– NEI 검색에서 이전 검색어의 마지막 글자가 추가되는 문제를 수정했습니다.

1.2 (2013/09/28)
– Industrial Craft 2 Nuclear Control의 Information Panel과 Text Card에서 한글 입력을 지원합니다.
– Text Card 편집시 엔터키를 이용해서 줄을 삽입하거나 Ctrl + D 키로 한줄을 삭제할 수 있습니다.

1.1 (2013/09/13)
– Applied Energistics의 터미널과 파티션 에디터에서 한글 입력을 지원합니다.
– GUI 비율 보통, 한글 언어 상태일 때 AE의 터미널에서 숫자가 잘 안보이는 문제를 수정했습니다.
(config/AppliedEnergistics.cfg 파일에서 terminalUseLargeFont 옵션을 true로 설정시)

1.0 (2013/08/22)
– 최초 공개 버전
– 대화창, 표지판 수정, 책 작성, 크리에이티브 모드창의 검색, 커맨드 블록, NEI 검색창에서 한글 입력이 가능합니다.
– 서버에 설치시 표지판에 한글을 쓸 경우 !? 로 바뀌는 문제를 수정합니다.
(한글 입력 기능은 클라이언트에만 설치되어 있으면 서버의 설치 여부와 관계 없이 동작합니다.)

설명

마인크래프트 1.5 ~ 1.7 대응으로 마인크래프트 포지가 설치된 환경에서 사용 가능합니다. 이미 포지가 설치된 상태라면 포지의 mods 폴더(1.5는 coremods 폴더)에 jar 파일을 넣어두면 바로 사용 가능합니다.

한글/영문 전환키는 기본값으로 왼쪽 컨트롤 키가 할당되어 있고, 설정의 조작 메뉴에서 다른 키로 바꿀 수 있습니다.

nemocraft Hangul

이 모드는 한글 입력만을 지원하며 한글 출력 부분은 마인크래프트의 기본 유니코드 출력을 그대로 사용합니다. 따라서 폰트를 바꾸거나 하는 기능은 지원하지 않습니다.

프로그램 가능한 레드넷 제어기(PRC) Part.6

마인크래프트 1.6.2, 마인팩토리 리로디드 2.7.0B8 기준으로 작성되었습니다.

이번에는 래치와 플립플롭에 대해 알아보겠습니다. 디지털 회로에서 플립플롭과 래치는 값을 보관하기 위한 중요한 회로이지만 PRC에는 내부에 변수(VARS) 저장 공간이 있다보니 용도가 애매합니다. 그런 관계로 간단한 사용 방법만 적어둡니다. 래치와 플립플롭은 공통적으로 Q와 Q# 값을 출력으로 사용합니다. Q에는 현재 보관중인 값을, Q#에는 현재 보관중인 값과 반대되는 값을 내보냅니다.

SR-래치(SR-Latch) – S(Set)와 R(Reset)의 값에 따라 보관중인 값을 변경합니다. S로 신호가 들어올 경우 보관중인 값을 15로, R로 신호가 들어올 경우 보관중인 값을 0으로 바꿉니다. 양쪽 모두 신호가 들어오지 않을 경우 그대로 유지하고, 양쪽 모두 신호가 들어올 경우 원래 회로는 비정상적인 동작을 하게 되지만 PRC에서는 아무런 변화 없이 현재 상태를 유지합니다.

SR-래치(SR-Latch) Gated – 회로의 동작은 SR-래치와 동일합니다. 다만 E라는 입력을 추가로 받아서 E로 신호가 들어올 경우에만 동작하도록 변경된 회로가 SR-래치 Gated 회로입니다.

D-래치(D-Latch) Gated – E로 신호가 들어오는 동안 보관중인 값을 D에서 들어오는 값으로 바꿉니다.

T-플립플롭(T-Flipflop) – 입력에 따라 저장된 값을 반전시키는(토글, Toggle) 회로입니다. CLK의 값이 0에서 다른 숫자로 바뀌는 순간 T 입력을 확인해서 T로 신호가 들어왔다면 보관중인 값을 반대로 바꿉니다.

JK-플립플롭(JK-Flipflop) – SR-래치와 T-플립플롭을 합친 형태의 회로입니다. 입력은 J와 K를 받으며 J는  S의 역할을, K는 R의 역할을 합니다. 다만, J와 K 모두 신호가 들어올 경우 아무런 동작도 하지 않던 SR-래치와 달리 T-플립플롭처럼 보관중인 값을 반대로 바꿉니다. 그리고 CLK입력을 받아서 CLK값이 0에서 다른 숫자로 바뀌는 순간에만 회로가 동작합니다.

이상으로 현재 PRC에서 제공중인 래치와 플립플롭에 대해 알아보았습니다.

이제 나머지 PRC 회로들을 알아보겠습니다. 우선 통과(Passthrough) 회로입니다. PRC에서 제공하는 통과 회로는 총 3가지 형태가 있습니다.

첫번째로 일반 통과 회로의 경우 들어온 입력 값을 그대로 출력 값으로 내보냅니다. 상수(CNST)값을 출력하고 싶을때나, 들어온 값을 변수(VARS)에 넣고 싶을때 등에 쓸 수 있습니다.

두번째로 Gated 통과 회로입니다. 래치에서 잠시 언급한대로 E라는 신호를 받아서 신호가 들어올 때만 값을 전달합니다. E에 신호가 들어오지 않는다면 0을 내보냅니다.

세번째로 Ring 통과 회로입니다. Ring 통과 회로에는 많은 입력과 출력이 있습니다. 우선 CNT 입력값은 입력된 I 값을 몇개의 출력으로 보낼지를 결정합니다. CNT가 5일 경우 O0부터 O4까지 5개로만 I 값이 출력됩니다. 그리고 CLK 값이 0에서 다른 숫자로 바뀔때마다 출력되는 위치가 바뀝니다. 바뀌는 순서는 순차대로 0번부터 1씩 증가하며 마지막 출력이었다면 첫번째인 0번 출력으로 돌아갑니다. 현재 출력중인 위치를 제외한 나머지 출력에는 0을 내보냅니다.

다음으로 알아볼 회로는 지연(Delay) 회로입니다. 마인크래프트에 있는 레드스톤 중계기(Redstone Repeater)와 같이 입력된 값을 일정 시간이 지난 후에 출력하는 회로입니다. 다만, 레드스톤 중계기에 비해 지연 시간을 자유롭게 설정할 수 있다는 장점이 있습니다. D에 입력된 숫자만큼의 틱이 지난 후에 I의 값을 O로 보냅니다.

다음은 팬아웃(Fanout) 회로입니다. 팬아웃은 하나의 입력을 여러개의 출력으로 동시에 내보내는 역할을 합니다.

마지막으로 슈미트 트리거(Schmitt Trigger) 회로입니다. 슈미트 트리거 회로는 Pd에 설정된 틱 시간 이상동안 I로 입력이 있어야 출력으로 값을 전달합니다. 발판을 설치하면서 잠시 지나가는 경우에는 무시하고 싶을때 쓸 수 있는 회로입니다. 발판 위에서 일정 시간동안 대기해야 신호가 전달되기에 잠깐 밟는 정도로는 신호가 출력되지 않게 할 수 있습니다.

이상으로 현재 PRC에서 제공되는 모든 회로에 대한 이야기를 마칩니다. 자세히 풀어서 설명하는 능력이 없다 보니 각 회로별로 간략한 요점 정리글이 되어버렸지만요. 각 회로에 대해 궁금한 내용이 있으신 분은 댓글을 남겨주시면 답변을 드리도록 하겠습니다.

프로그램 가능한 레드넷 제어기(PRC) Part.5

마인크래프트 1.6.2, 마인팩토리 리로디드 2.7.0B8 기준으로 작성되었습니다.

이번에는 숫자 연산(아날로그 연산)과 관련된 회로들에 대해서 알아보겠습니다. 사실 회로라고 하긴 애매한 분야지만요.

가산(덧셈, Adder) – 두개의 입력을 받아서 더한 값을 출력합니다. 3편에서 나온 디지털 가산 회로의 경우 0 또는 0이 아닌 숫자로 0과 1의 입력을 처리하지만, 지금 설명하는 아날로그 가산 회로는 입력받은 숫자를 그대로 더해서 출력합니다.

감산(뺄셈, Subtractor) – 두개의 입력을 받아서 뺀 값을 출력합니다. 사용 방법은 가산과 동일합니다.

부호 반전(Negator) – 입력된 값의 부호(음수인지 양수인지)를 반대로 바꿉니다. PRC에서 직접 숫자를 입력할 수 있는 범위가 0 ~ 255로 제한되어 있기에 음수값을 입력해야 하는 경우 이 회로를 사용하면 됩니다.

최대(Maximum) – 입력받은 값들 중 가장 큰 값을 출력합니다.

최소(Minimum) – 입력받은 값들 중 가장 작은 값을 출력합니다.

PRC에는 현재 위와 같은 숫자 연산과 관련된 회로들이 있습니다. 마인크래프트의 세계에서 숫자를 취급하는게 쉽지 않다 보니 쓸 일이 많지는 않겠지만요. 그럼 숫자와 관련된 회로들을 몇가지 더 알아보겠습니다.

우선 비례(Scaler)라는 회로가 있습니다. 예를 들어 10점 만점중에 5점을 받았다면 100점 만점이라면 50점이지요. 이런 식의 서로 다른 두 범위에서 한쪽에서의 위치가 다른쪽에서는 어디쯤인지 알기 위한 회로가 비례 회로입니다. 입력으로는 입력값과 함께 입력값의 범위, 그리고 출력값의 범위를 받습니다.

그 다음은 자릿수 분해(Decompose Int -> Decimal)입니다. 숫자를 입력받으면 각 자릿수별로 출력을 내보냅니다. 만약 123이라는 숫자를 넣는다면 D0(1의 자리)에는 3, D1(10의 자리)에는 2, D2(100의 자리)에는 1을 내보냅니다. 나머지는 0을 내보냅니다. 즉, D0 부터 D9 까지가 자릿수를 나타냅니다. 그리고 가장 처음에 있는 SN은 입력된 숫자가 0이거나 양수일 경우 0, 음수일 경우 15를 출력합니다. 즉, 입력받은 숫자의 부호를 나타냅니다.

마지막으로 난수 발생(Randomizer)입니다. 난수란 무작위로 만들어지는 숫자로 난수 발생 회로는 이러한 무작위 숫자를 만들기 위한 회로입니다. 디지털 난수 발생은 별도의 입력값 없이 매 틱마다 0 또는 15를 출력하고, 아날로그 난수 발생은 최소값과 최대값을 받아서 그 범위 내의 임의의 값을 출력합니다.