Minecraft Pi Edition을 PC에서 조작하기

Raspberry Pi의 OS인 Raspbian에는 Minecraft Pi Edition이 설치되어 있습니다. Minecraft Pi Edition에는 외부에서 조작할 수 있는 API가 존재하며, Python 프로그램을 사용하여 Minecraft의 세계에 블록을 추가할 수 있습니다.

이번에는 Minecraft Pi Edition을 PC에서 조작하는 방법을 소개합니다.

사용한 소프트웨어



Raspberry Pi 쪽
  • Raspbian Jessie (2015-11-21)
  • Python 2.7.9
  • Minecraft Pi Edition v0.1.1 alpha

  • PC측
  • Mac OS X El Capitan (10.11.2)
  • Python 2.7.11
  • rsync
  • 편집기

  • ※ 오래된 Raspbian에는 Minecraft Pi Edition이 사전 설치되어 있지 않을 수 있습니다
    ※ jessie-lite에는 Minecraft Pi Edition은 사전 설치되어 있지 않습니다.
    ※ PC측은 Python 2가 움직이면 Mac일 필요는 없습니다

    원격으로 작동하는 메커니즘



    Minecraft Pi Edition은 포트4711에서 API를 게시합니다. Raspbian에서는 클라이언트 용 Python 라이브러리 (이후 mcpi)가 /usr/lib/python2.7/dist-packages/mcpi/에 있으며 Python 프로그램을 작성하고 조작 할 수 있습니다.

    RaspberryPi 쪽
    $ python 
    >>> import mcpi
    >>> print mcpi.__file__
    /usr/lib/python2.7/dist-packages/mcpi/__init__.pyc
    
    minecraft.create 메소드의 구현은 다음과 같이 되어 있어 제1 인수에 Raspberry Pi의 IP 주소를 넣는 것으로 같은 로컬 네트워크상의 PC로부터 Minecraft Pi Edition을 조작할 수가 있습니다.

    mcpi/minecraft.py
        def create(address = "localhost", port = 4711):
            return Minecraft(Connection(address, port))
    
    mcpi 는 소켓 통신을 구현할 수 있으면 Python 이외의 이식도 가능하므로, Ruby로 재기록하고 있는 사람도 있는 것 같습니다. (eaglestone/minecraft-pi-ruby)

    개발 환경 준비



    먼저 Raspberry Pi의 mcpi를 PC 측에 복사합니다. ([email protected]의 IP 주소 부분은 Raspberry Pi에서 ifconfig 등을 실행하고 변경하십시오.)

    PC측
    mkdir minecraft-pi-samples
    cd minecraft-pi-samples
    rsync -av --copy-links [email protected]:/usr/lib/python2.7/dist-packages/mcpi/ ./mcpi/ --exclude=*.pyc
    

    이 작업을 모르고 귀찮은 사람은 샘플 프로그램을 공개하고 있으므로 여기를 다운로드하고 압축을 풀고 src 디렉토리를 사용하십시오.

    프로그램 실행



    다음 프로그램을 작성합니다. Minecraft.create의 첫 번째 인수 "192.168.1.49"를 Raspberry Pi의 IP 주소로 바꿉니다.

    hello.py
    import platform
    from mcpi.minecraft import Minecraft
    mc = Minecraft.create("192.168.1.49")
    mc.postToChat("Hello " + platform.platform())
    

    디렉토리 구성은 다음과 같습니다.
    .
    ├── hello.py
    └── mcpi
        ├── __init__.py
        ├── block.py
        ├── connection.py
        ├── event.py
        ├── minecraft.py
        ├── util.py
        └── vec3.py
    
    python hello.py를 실행하고 Minecraft Pi Edition 측에서 프로그램을 실행 한 PC의 플랫폼 정보가 채팅 메시지에 표시되면 성공입니다.



    요약



    이번은 mcpi 의 코드를 읽어, 소켓 통신하고 있다고 하는 것으로부터 리모트로 개발한다고 하는 것을 실시했습니다.

    PC를 사용하는 메리트로서 에디터 등 평상시 익숙한 개발 환경을 이용할 수 있다는 점과, 리모트로 조작할 수 있는 것으로부터 한 사람이 Minecraft를 조작해, 다른 사람이 프로그램을 실행해 방해 or 보조한다고 하는 놀이 방법이 할 수 있는 점이 있다 라고 생각합니다.

    부차적인 메리트로서 mcpi 를 같은 디렉토리에 카피하고 있으므로 메소드의 내용을 확인하면서 코드를 쓸 수 있다고 하는 점도 있습니다.

    교육 현장에서는 Raspberry Pi 측에서 실행 받을 필요가 있는 생각은 합니다만, 교재로서 샘플 코드를 만들거나 하는 쪽은 이런 생산성이 높은 환경을 사용해도 좋을까라고 생각합니다.

    좋은 웹페이지 즐겨찾기