
브라우저에서 Minecraft 플레이 - prismarine-web-client
prismarine-web-client (PrismarineJS/prismarine-web-client)
브라우저에서 실행되는 Minecraft 웹 클라이언트
학교 Chromebook, 빌려온 노트북 또는 게임이 설치되지 않은 모든 기계에서 Minecraft 서버에 접속하고 싶었나요? prismarine-web-client가 정확히 그 문제를 해결합니다. 브라우저 탭 안에서 실제 Minecraft 클라이언트를 실행하고 실제 Minecraft 서버에 연결하며, 플레이어의 기계에는 로컬 설치가 필요하지 않습니다.
prismarine-web-client란 무엇인가
이것은 단순화된 2D 복제본이나 Flash 시대의 Minecraft 모방이 아닙니다. 두 개의 잘 알려진 PrismarineJS 라이브러리 위에 구축된 진정한 브라우저 기반 클라이언트입니다. mineflayer는 Minecraft 프로토콜과 클라이언트 로직을 처리하고, prismarine-viewer는 3D 세계를 렌더링합니다. 함께 실제로 작동하는 것을 만듭니다.
이 프로젝트는 GitHub에서 539개의 별을 받았으며 MIT 라이선스가 있습니다. 이는 자유롭게 사용하고, 포크하고, 원하는 대로 수정할 수 있다는 의미입니다. JavaScript로 작성되었으며, 이것이 브라우저에서 실행할 수 있는 이유의 일부입니다. PrismarineJS 생태계는 몇 년 동안 존재해 왔으며 많은 커뮤니티 자동화 도구와 봇을 지원하므로, 이것은 깨진 종속성 체인을 가진 주말 프로젝트가 아닙니다.
GitHub Pages에서 호스트되는 라이브 데모가 있습니다. 지금 바로 데스크톱에서 Chrome이나 Firefox에서 열어보고 아무것도 설치하지 않고 서버에 연결해 보세요. 이것이 가장 간단한 사용 사례이며, 진정으로 무엇을 다루고 있는지 이해하기 위한 좋은 방법입니다.
그 뒤의 기술 (그리고 왜 이것이 영리한지)
여기가 정말 흥미로운 부분입니다. Minecraft의 프로토콜은 TCP를 통해 실행되며, 브라우저는 단순히 원시 TCP 소켓을 열 수 없습니다. 그렇다면 브라우저 기반 클라이언트는 어떻게 실제 Minecraft 서버에 연결할 수 있을까요?

답은 패키지가 로컬에서 실행하는 프록시 계층입니다. 브라우저는 WebSocket을 통해 이 프록시에 연결합니다. 그러면 프록시는 WebSocket 트래픽을 TCP로 변환하고 대상으로 하는 Minecraft 서버로 모든 것을 전달합니다. 서버의 관점에서는 정상적으로 연결되는 또 다른 클라이언트일 뿐입니다. 브라우저 탭에서 이것을 하고 있다는 것을 알 수 없습니다.
이 아키텍처가 영리한 이유는 대부분의 클라이언트 코드가 브라우저에서 실행되기 때문입니다 (mineflayer 로직, 3D 렌더링). 반면 프록시는 브라우저가 근본적으로 할 수 없는 한 가지를 처리합니다. 이것은 명확한 분할입니다. 프록시는 가볍고 npm 패키지로 번들되어 있으므로 별도로 설정할 것이 없습니다.
주목할 점 - 누군가가 어딘가에서 그 프록시를 실행해야 합니다. 호스트된 데모에는 서버 측에서 실행되는 것이 있습니다. 자체 호스팅의 경우 자신의 기계에서 실행됩니다.
직접 설정하기
Node.js가 설치되어 있으면 전체 설정은 약 1분이 소요됩니다. 패키지를 전역으로 설치하고 시작하세요:

npm install -g prismarine-web-client
prismarine-web-client<! - gh-code-end - >
그 후, 브라우저에서 http://localhost:8080을 여세요. 서버 주소와 사용자 이름을 요청하는 연결 화면이 표시됩니다. 이들을 입력하고 연결을 클릭하세요.
시작하기 전에 이해해야 할 몇 가지 사항이 있습니다. 이는 로컬 기계에서 프록시 서버를 시작합니다. 그 기계의 모든 사람은 localhost를 통해 이를 사용할 수 있지만, 포트를 노출하지 않는 한 다른 사람이 도달할 수 없습니다. 같은 로컬 네트워크에 있는 친구들과 이를 공유하고 싶다면 LAN IP에 바인드하고 포트 8080의 기계 주소에 연결하도록 해야 합니다. 가능하지만 기본 네트워크 지식이 필요합니다.
개발용 또는 코드를 파고 싶으면 저장소를 복제하고 실행하세요:
<! - gh-code-start - >npm install
npm start<! - gh-code-end - >
이는 express와 webpack을 watch 모드에서 시작합니다. 파일을 저장하면 몇 초 안에 재빌드되고, 새로 고침하면 변경 사항을 볼 수 있습니다. 이 프로젝트는 또한 window 객체에서 bot, viewer, worldView를 포함한 유용한 몇 가지 전역을 노출합니다. Chrome DevTools를 열고 콘솔에 bot.chat('test')를 입력하면, 거기에서 직접 게임 내 채팅을 사용할 수 있습니다. 이것은 사물이 어떻게 작동하는지 살펴보고 싶어 하는 사람들에게 좋은 터치입니다.
지금 작동하는 것
버전 1.6.0은 탐험의 핵심 루프를 잘 처리합니다. 블록이 올바르게 렌더링되고, 움직임이 실시간으로 작동하며, Mob과 다른 플레이어가 나타나고, 블록을 배치하고 부술 수 있습니다. Java 클라이언트 없이 가벼운 탐험이나 건축의 경우, 정말로 기능적입니다.

아직 없는 것 - 인벤토리 관리, 상자와 컨테이너, 사운드, 그리고 대부분의 전투 상호 작용입니다. 프로젝트의 로드맵은 이 모든 것들을 계획된 것으로 나열합니다. 따라서 제작, 마법 부여, 마을주민 거래를 포함한 완전한 서바이벌 게임플레이를 상상하고 있다면, 버전 1.6.0은 그것을 다루지 않을 것입니다.
이것은 폄하가 아닙니다. 브라우저 탭 안에서 실시간으로 Minecraft 세계를 렌더링하고, 라이브 서버에 연결하는 것은 그 자체로 기술적으로 인상적입니다. "작동하는 탐험 클라이언트"와 "완전한 Java 클라이언트 패리티" 사이의 간격은 거대하며, 그들이 제공한 것은 설정한 목표를 위해 견고합니다.
브라우저 모드에 있는 동안 실용적인 사용 - 인식하지 못한 블록을 발견하면, Minecraft.How의 블록 검색 도구는 다른 앱으로 전환할 필요 없이 빠른 조회에 유용합니다.
당신을 방해할 것들
버전 호환성은 가장 큰 걱정입니다. prismarine-web-client는 mineflayer 계층을 통해 특정 Minecraft 프로토콜 버전과 함께 작동합니다. 연결하려는 서버가 지원되지 않는 버전을 실행하면, 명확한 설명 없이 연결 오류가 발생합니다. 현재 릴리스가 지원하는 버전을 확인하려면 프로젝트의 GitHub를 확인하세요. PrismarineJS 팀이 프로토콜 지원을 업데이트하면서 해당 목록이 변경되기 때문입니다.

사전에 알아야 할 몇 가지 다른 일반적인 문제가 있습니다:
- 프리미엄 서버 인증. 온라인 모드 서버 (Mojang/Microsoft에 대해 계정을 확인하는 것들)는 이 설정을 통해 연결하기가 더 복잡합니다. 데모와 대부분의 자체 호스팅 배포는 오프라인 모드 서버에서 가장 깨끗하게 작동하며, 여기서 아무 사용자 이름이나 선택하고 직접 연결합니다.
- 바쁜 지역의 성능. 이것은 브라우저 탭에서 실행되는 실제 3D 렌더러입니다. 조밀한 지형, 많은 엔티티 수, 그리고 붐비는 서버는 개방된 지역과 적은 엔티티보다 브라우저의 CPU를 눈에 띄게 더 밀 것입니다.
- 데스크톱 브라우저만. Chrome과 Firefox on Desktop이 확인된 플랫폼입니다. 모바일 브라우저 지원은 없으며, 제어 체계의 복잡성과 렌더링 수요를 감안할 때, 곧 올 것이 아닙니다.
- 프록시 실행 유지. 자체 호스팅 중이고 프로세스가 죽으면, 브라우저 페이지는 아무것도 연결할 수 없습니다. 정기적으로 이것을 사용하면 영구적인 백그라운드 서비스로 설정하는 것이 추가 단계의 가치가 있습니다.
시도해 보기 전에 잘못 생각한 한 가지 - 이것은 작은 LAN 또는 개인 서버에서만 작동한다고 가정했습니다. 프록시가 TCP를 통해 도달할 수 있는 모든 서버에 연결되며, 더 큰 공개 서버를 포함하여, Minecraft 버전이 일치하고 인증이 차단되지 않는 한.
그만한 가치가 있는지 여부
그것은 완전히 당신이 그것을 필요로 하는 것에 달려 있습니다. "설치 없이 어디서나 Minecraft 플레이" 솔루션으로서, 그것은 현재 한계 내에서 작동합니다. 탐험과 기본 블록 상호 작용은 정말로 사용 가능합니다. 완전한 서바이벌 모드는 아직입니다.

게임이 설치되지 않은 기계에서 가볍게 서버에 들어가는 방법을 원하는 서버 관리자의 경우, 이것은 실제로 꽤 실용적입니다. 런처 없음, 오프라인 모드 서버에서 계정 프롬프트 없음, 브라우저를 열고 연결하기만 하면 됩니다. 빌드가 올바른 보임 또는 Mob이 올바르게 스폰되는지 확인하는 것은 전체 클라이언트 경험을 필요로 하지 않습니다.
이미 브라우저에 있는 동안 - 서버에서 사용할 스킨을 찾고 있다면, Minecraft.How의 스킨 브라우저는 탐색할 견고한 컬렉션을 가지고 있습니다.
알아야 할 주요 대안 - Eaglercraft은 가장 인정받는 브라우저 Minecraft 프로젝트이지만, 그 주변에 자신의 역사와 호환성 질문이 있습니다. 순수 세계 보기의 경우 플레이 없이, prismarine-viewer는 독립 실행형 라이브러리로서 별도로 알 가치가 있습니다. 그리고 mineflayer는 이 프로젝트의 기초이며, 수동 플레이보다는 Minecraft 봇 스크립팅을 위한 go-to입니다.
이런 기술적으로 흥미로운 것을 하는 MIT 라이선스 오픈소스 프로젝트의 경우, 539개의 별은 레이더 아래를 비행하는 것처럼 느껴집니다. 사용 사례가 맞다면, 이를 시도하기 위한 5분은 잘 투자됩니다.
<! - gh-polish-start - > <! - gh-polish-end - >

