Dynmap: 마인크래프트용 3D 온라인 지도 플러그인 리뷰
마인크래프트 서버용 Dynmap 플러그인에 대한 자세한 리뷰. 아이소메트릭 3D 지도 렌더링, 내장 웹 서버 구성, 호환성 및 Nginx와의 통합.
마인크래프트 서버용 Dynmap 플러그인에 대한 자세한 리뷰. 아이소메트릭 3D 지도 렌더링, 내장 웹 서버 구성, 호환성 및 Nginx와의 통합.
종속성:
로더: Paper / Spigot / Fabric / Forge
마인크래프트 버전: 1.20.x – 1.21.x
멀티플레이어 게임인 마인크래프트에서 플레이어 간의 조정, 건축을 위한 빈 공간 탐색, 넓은 영토에 걸친 활동 추적은 종종 어려움을 겪습니다. 기본 도구는 전 세계를 포괄하지 않고 실시간으로 업데이트되지 않는 로컬 종이 지도만 제공합니다. Dynmap 유틸리티는 일반 웹 브라우저를 통해 접근할 수 있는 게임 세계의 대화형 지도를 생성하여 이 문제를 해결합니다. Google 지도와 같은 지리 정보 서비스와 동일한 원리로 작동하며 상세한 풍경, 플레이어 위치, 개인 보호 구역 경계 및 게임 채팅 메시지를 표시합니다.
렌더링 엔진 작동 및 타일 저장 방식
Dynmap 기능의 핵심에는 마인크래프트의 3D 청크 데이터를 2D 그래픽 파일(타일) 세트로 변환하는 자체 렌더링 파이프라인이 있습니다.
렌더링 및 투영 유형
플러그인은 세계를 표시하기 위한 3가지 주요 옵션을 지원합니다:
평면 뷰 (Flat): 위에서 아래로 내려다보는 고전적인 2D 지도입니다. 생성 중 디스크 공간과 CPU 리소스를 가장 적게 소비합니다.
아이소메트릭 3D 뷰 (Surface): 풍경의 고도 차이, 건물의 건축 및 수역의 깊이를 평가할 수 있는 비스듬한 체적 3D 투영입니다.
동굴 뷰 (Cave): 지하 공동 및 광산을 렌더링하여 지표면 아래의 동굴 구조를 보여줍니다.
파일 저장 및 디스크 부하
생성된 모든 지도 타일은 plugins/dynmap/web/tiles/ 폴더에 표준 PNG 또는 JPG 이미지로 저장됩니다. 플레이어의 블록 변경(건축, 파괴, 폭발)이 발생할 때마다 Dynmap은 증분 업데이트 프로세스를 시작합니다. 즉, 업데이트된 청크 영역에 직접 포함된 타일만 다시 그려집니다.
서버의 디스크 하위 시스템은 세계의 초기 렌더링 중에 상당한 부하(I/O 작업)를 경험합니다. 고해상도에서는 큰 지도의 타일이 있는 폴더가 수십 또는 수백 기가바이트에 달할 수 있으므로 빠른 SSD 드라이브 사용과 세계 경계(WorldBorder) 제한이 필요합니다.
alt: [스폰의 아이소메트릭 3D 뷰를 표시하는 브라우저의 Dynmap 웹 지도 인터페이스]
웹 서버 인프라: Jetty vs Nginx
Dynmap은 서버 규모와 예상되는 부하에 따라 웹 인터페이스 배포를 위한 2가지 체계를 제공합니다.
내장 웹 서버 Jetty
설치 후 기본적으로 플러그인은 포트 8123에서 통합 Jetty 웹 서버를 자동으로 시작합니다. 이 옵션은 추가 구성이 필요하지 않습니다. 관리자는 호스팅에서 포트 8123을 열기만 하면 되며 그 후에는 http://서버_IP:8123/에서 지도를 사용할 수 있습니다.

외부 서버(Nginx 또는 Apache)와의 통합
동시 접속자가 많은 공개 서버의 경우, 모든 웹 사용자가 게임 서버를 직접 통해 트래픽을 소비하므로 내장된 Jetty는 Java 게임 프로세스에 추가 부하를 생성합니다. 최적화를 위해서는 독립적인 Nginx 또는 Apache 웹 서버를 통해 타일 제공을 구성하는 것이 좋습니다.
이 설정에서 Nginx는 마인크래프트 게임 프로세스의 코어를 우회하여 web/tiles/ 폴더에서 직접 작동하도록 구성됩니다. 여기에는 몇 가지 중요한 이점이 있습니다:
게임 스레드 보호: 브라우저 요청은 별도의 웹 서버에서 처리되므로 게임 내 미세한 끊김(TPS 저하)이 제거됩니다.
HTTPS 암호화: 안전한 연결을 위해 무료 Let's Encrypt SSL 인증서를 쉽게 구성할 수 있습니다.
오프라인 가용성: 마인크래프트 게임 서버의 재시작 또는 종료 중에도 풍경의 웹 지도를 계속 볼 수 있습니다.
설정 구성 및 렌더링 관리
플러그인의 주요 매개변수는 plugins/dynmap/configuration.txt 파일에서 편집됩니다.

일반 렌더링 및 저장 설정
매개변수 | 기본값 | 설명 |
|---|---|---|
|
| 기본적으로 렌더링 템플릿의 품질을 결정합니다( |
|
| 지도 타일의 저장소 선택. 사용 가능한 옵션: |
|
| 업데이트 대기열에서 타일을 확인하고 렌더링하는 간격(초). |
|
| 렌더링 간격이 가속화되는 업데이트 대기열의 타일 수. |
|
| 대기열이 임계값을 초과할 때 가속화된 렌더링 간격(초). |
|
| 동시에 렌더링되는 타일 수(프로세서 코어 수의 절반으로 설정하는 것이 좋습니다). |
|
| 렌더링 스레드의 우선순위. |
|
| 서버가 종료되거나 재시작될 때 보류 중인 렌더링 작업의 대기열 저장. |
|
| 변경된 블록 렌더링을 시작하기 전의 지연 시간(초). 자동화(레드스톤, 피스톤 등)로 인한 타일의 지속적인 다시 그리기를 방지합니다. |
|
| 타일 해싱 활성화. 렌더링 후 타일 이미지가 변경되지 않은 경우 디스크의 파일을 덮어쓰지 않아 디스크 리소스를 절약합니다. |
|
| 지도 생성 중 매끄러운 조명(게임 내와 동일) 계산. |
|
| 타일 이미지의 형식 및 품질(기본값은 90% 품질의 JPG). |
|
| 정적 텍스처 대신 게임 생성 텍스처(클라이언트의 리소스 팩과 일치) 사용. |
|
| 리소스 팩의 연결된 텍스처(Connected Texture Mod) 지원. |
|
| 리소스 팩의 사용자 지정 생물 군계 및 나뭇잎 색상 지원. |
|
| 타일 렌더링 대기열을 시작하는 게임 이벤트(블록 설치/파괴, 나무 성장, 폭발) 목록. |
웹 인프라 및 파일 경로
매개변수 | 기본값 | 설명 |
|---|---|---|
|
| 그래픽 지도 파일(타일)이 저장될 플러그인 디렉터리의 경로. |
|
| 정적 지도 웹 파일(HTML, JS, CSS)에 대한 경로. |
|
| 플러그인 시작 시 정적 파일 자동 업데이트(사용자 정의 웹 인터페이스를 사용하는 경우 |
|
| 내장된 Jetty 웹 서버가 실행될 TCP 포트. |
|
| 내장 웹 서버 비활성화(외부 Nginx 또는 Apache 웹 서버를 통한 타일 제공 설정 시 유용). |
|
| 리소스 절약을 위해 내장 웹 서버의 최대 동시 세션 수. |
|
| 웹 서버가 심볼릭 링크(symlinks)를 따르도록 허용합니다. |
|
| 지도를 보거나 채팅하기 위한 사용자 인증 시스템 활성화. |
|
| 웹 지도를 보기 위해 계정 로그인을 요구합니다. |
|
|
|
웹 인터페이스 구성요소 설정(웹 채팅, 마커, 플레이어)
매개변수 / 클래스 | 기본값 | 설명 |
|---|---|---|
| 컴포넌트 클래스 | 플레이어 상태, 채팅 및 지도 업데이트에 대한 데이터 전송을 담당합니다. 참고: 외부 웹 서버(Nginx)를 사용하는 경우 이 클래스를 |
|
| 지도에 플레이어의 체력 표시기를 표시합니다. |
|
| 지도에 플레이어의 정확한 위치를 표시합니다. |
|
| 웹 인터페이스에서 마인크래프트 게임 채팅으로 메시지 전송 허용. |
|
| 웹 채팅 메시지 사이의 지연 시간(초)(스팸 방지). |
|
| 플레이어가 웅크리기(sneaking) 중인 경우 지도에서 플레이어 숨기기. |
|
| 플레이어가 관전 모드(spectator mode)인 경우 지도에서 플레이어 숨기기. |
|
| 플레이어가 투명화 물약의 영향을 받는 경우 지도에서 플레이어 숨기기. |
| 컴포넌트 클래스 | 지도에서 마커 레이어를 관리합니다. 스폰( |
|
| 지도 마커에 플레이어의 얼굴(스킨) 표시. |
|
| 지도에서 플레이어 아이콘 바로 위에 체력 바 표시. |
최적화 및 CPU 성능 제한(TPS/MSPT)
매개변수 | 기본값 | 설명 |
|---|---|---|
|
| 전체 렌더링( |
|
| Dynmap이 게임의 한 틱(1/20초)당 메모리에 로드할 수 있는 최대 청크 수. 이 매개변수를 줄이면 서버의 랙이 줄어듭니다. |
|
| 렌더링 스레드의 틱당 목표 시간 제한(밀리초). |
|
| 서버의 TPS가 이 값 아래로 떨어지면 Dynmap은 타일 업데이트 렌더링을 자동으로 일시 중지합니다. |
|
| 서버의 TPS가 이 값 아래로 떨어지면 Dynmap은 세계의 전체 렌더링( |
|
| 축소된(zoom-out) 지도 수준의 계산을 수행하도록 허용되는 최소 TPS. |
|
| 풍경 스냅샷 캐시의 청크 수. |
|
| 청크 캐시에 소프트 참조(Soft References)를 사용합니다. OutOfMemory 오류의 위험이 있는 경우 JVM이 지도 캐시를 지울 수 있습니다. |
configuration.txt의 최적화 매개변수
서버 성능을 유지하려면 다음 구성 파일 변에 주의할 가치가 있습니다:
deftemplatesuffix— 렌더링 품질 접미사. 값vlowres(매우 낮은 품질) 또는lowres(낮음)를 사용하면 지도 생성을 크게 가속화하고 표준hires에 비해 파일 크기를 4-8배 줄일 수 있습니다.tilespath— 지도의 저장소를 서버의 다른 하드 드라이브로 리디렉션하여 메인 드라이브가 가득 차는 것을 방지할 수 있습니다.webserver-port— 지도 연결 포트(기본8123대신).
렌더링 관리 명령
지도 생성은 레벨 4 운영자에 의해 서버 콘솔을 통해 제어됩니다:
/dynmap fullrender <세계>— 지정된 세계의 전체 렌더링을 시작합니다. 청크의 완전한 사전 생성(chunk pre-generation) 후 및 동시 접속자가 적은 기간에만 실행하는 것이 좋습니다./dynmap radiusrender <반경>— 대도시를 건설한 후 편리한 플레이어 주변의 특정 반경 내에서만 지도를 업데이트합니다./dynmap cancelrender— CPU 과부하 시 현재 진행 중인 렌더링 프로세스를 중지합니다./dynmap pause all— 모든 지도 계산을 일시적으로 중지하여 TPS를 안정화하기 위해 리소스를 확보합니다.
결론
Dynmap 플러그인은 대규모 마인크래프트 서버에서 세계를 시각화하고 플레이어 상호작용을 향상시키는 강력한 도구입니다. 아이소메트릭 3D 렌더링 및 웹 인터페이스와의 통합을 통해 지도를 프로젝트의 본격적인 정보 포털로 변환합니다.
완전한 3D 보기를 위해 무거운 WebGL을 사용하는 BlueMap이나 3D 모델 없이 독점적으로 빠른 2D 지도를 제공하는 Squaremap과 같은 대안과 비교하여 Dynmap은 최적의 기능 균형을 제공합니다. 그러나 높은 디스크 공간 요구 사항과 I/O 시스템에 대한 지속적인 부하로 인해 관리자는 세계의 경계와 올바른 해상도 선택에 세심한 주의를 기울여야 합니다. 이 플러그인은 대규모 생존, 아나키 또는 RP 세계의 서버에 탁월한 선택입니다.
설치
일반적인 설치는 약 5 분 정도 걸려요. 과정은 동일하고, Loader 와 그에 맞는 빌드만 달라요.
- 1Stop your Minecraft server.
- 2Drop the plugin .jar into the server /plugins folder.
- 3Start the server once so the plugin generates its config files.
- 4Edit /plugins/<name>/config.yml as needed, then run /reload confirm or restart.











