BlueMap vs Dynmap vs squaremap: jaka mape serwera wybrac w 2026
Mapa webowa serwera to nie tylko ozdoba. Gracze widzą, gdzie są, gdzie iść po surowce, gdzie znajomi mają bazy. Admin patrzy, jak świat rośnie, gdzie jest aktywność, a gdzie pustka. Mapa też jest mocnym marketingiem: zrzut ekranu twojej żywej mapy przyciąga uwagę w social media i na topkach.
W 2026 roku są trzy poważne opcje: BlueMap, Dynmap i squaremap. Rozwiązują ten sam problem, ale bardzo różnymi sposobami. Poniżej omawiamy każdą, porównujemy obciążenie i funkcje, oraz dajemy gotowe przepisy na instalację.
Po co serwerowi mapa webowa
Krótka lista powodów, żeby nie przekombinować:
- Nawigacja dla graczy: link na Discordzie, otworzył mapę, znalazł biom lub bazę kolegi
- Punkty zainteresowania: spawn, sklepy, warpy, areny, eventy
- Śledzenie graczy w czasie rzeczywistym (opcjonalne, da się wyłączyć)
- Zrzuty i promo: świeże spojrzenie na świat do publikacji
- Moderacja: admin widzi strefy aktywne, podejrzane buildy, cave-claimy
- Backup-wizualizacja: mapa pokazuje, jak było przed dużym eventem lub crashem
Mapa nie zastępuje narzędzi admina typu CoreProtect czy Plan, ale działa obok nich.
Trzech graczy na rynku
| Plugin | Od | Styl | Platforma | Charakter |
|---|---|---|---|---|
| BlueMap | 2020 | 3D HTML5 (three.js) | Paper, Spigot, Fabric, Forge, Sponge | Wizualny, nowoczesny, ciężki przy pierwszym renderze |
| Dynmap | 2011 | 2D plus 3D izometria | Paper, Spigot, Forge, Fabric | Klasyk z max funkcji, stary UI |
| squaremap | 2022 | 2D top-down | Paper, Folia | Minimum, szybkość, zero legacy |
Każdy ma swoje miejsce. Nie ma obiektywnie najlepszego, jest pasujący do zadania.
BlueMap: pełne 3D spojrzenie na świat
BlueMap renderuje świat jako model 3D i pokazuje go w przeglądarce przez three.js. Gracz obraca kamerę, przybliżenie, oddalenie, z powierzchni do jaskiń - wygląda jak Google Earth dla twojego serwera.
Plusy
- Prawdziwy widok 3D, nie płaski obrazek
- Nowoczesny UI z płynną nawigacją
- WebSocket dla pozycji graczy w czasie rzeczywistym
- Działa na Paper, Fabric, Forge, Sponge
- Dobra dokumentacja i aktywna społeczność
- Markery przez API i pliki konfiguracyjne
- Ładne oświetlenie i cienie z shaderami
Minusy
- Render ciężki dla CPU, zwłaszcza pierwszy przebieg dużego świata
- Kafelki zajmują dużo dysku (3-5x więcej niż squaremap dla tego samego obszaru)
- Wymaga WebGL w przeglądarce (słabe urządzenia tną)
- Wrażliwy na niestandardowe bloki i mody (niektóre tekstury mogą się nie wyrenderować)
Instalacja na Paperze
# 1. Najnowszy release dla Paper
cd /your/server/plugins
wget https://github.com/BlueMap-Minecraft/BlueMap/releases/latest/download/BlueMap-5.X-paper.jar
# 2. Start serwera, plugin tworzy config i sie zatrzymuje
# 3. Akceptacja licencji w config/core.conf
nano config/core.conf
# accept-download: true
# 4. Start ponownie, render rusza
Kluczowe ustawienia
Plik plugins/BlueMap/core.conf:
accept-download: true
metrics: false
data: "bluemap"
render-thread-count: 2
render-thread-count - ile wątków idzie na render. Na słabych serwerach 1-2, na mocnych 4-6. Nie dawaj wszystkich rdzeni, bo TPS siada.
Plik plugins/BlueMap/webserver.conf:
enabled: true
ip: "0.0.0.0"
port: 8100
webroot: "bluemap/web"
Pre-render świata
Duży świat (powiedzmy 10k bloków w każdą stronę od spawnu) renderuje się godzinami. Lepiej komendą:
/bluemap freeze <world> # zatrzymaj live render
/bluemap fullrender <world> # odpal pelny render
/bluemap unfreeze <world>
Podczas fullrender TPS może spaść. Rób to nocą lub w oknach maintenance.
Dynmap: klasyka z maksymalną ilością funkcji
Dynmap wystartował w 2011. Przez lata obrósł funkcjami, mostkami i addonami społeczności. Jeśli chcesz rzeczy typu "pokazuj regiony WorldGuard na mapie" lub "chat ingame na stronie" lub "claimy GriefPrevention na wyświetlaczu" - zwykle tylko Dynmap to ogarnie.
Plusy
- Żywy od 13+ lat, przetestowany na tysiącach serwerów
- Wspiera 2D flat, 3D izometria, surface, cave
- Integracje: WorldGuard, Towny, Factions, GriefPrevention, Essentials
- Wbudowany web-chat: gracze ingame i na mapie gadają w jednym chacie
- Dynamic labels, pełne API dla plugin-ów trzecich
- Działa na Paper, Spigot, Forge, Fabric
Minusy
- UI wygląda staro - Leaflet z 2015
- Render jest single-threaded na mapę, przez co wolny
- Update'y nieregularne, nowe wersje Minecrafta z opóźnieniem
- Brak wsparcia Folia (region-threading Papera)
- Config rozwlekły, dużo YAML-a na proste rzeczy
Instalacja na Paperze
cd /your/server/plugins
wget https://dev.bukkit.org/projects/dynmap/files/latest -O Dynmap.jar
Restart serwera, Dynmap tworzy plugins/dynmap/ z konfigami.
Konfiguracja portu web
Plik plugins/dynmap/configuration.txt:
webserver-bindaddress: 0.0.0.0
webserver-port: 8123
allow-symlinks: true
Domyślny port to 8123, można ustawić dowolny. Pamiętaj, że port musi być dostępny z zewnątrz albo przez reverse proxy.
Typy renderów
worlds:
- name: world
title: "Main World"
maps:
- class: org.dynmap.hdmap.HDMap
name: flat
prefix: flat
perspective: iso_S_60_lowres
- class: org.dynmap.hdmap.HDMap
name: surface
prefix: surface
perspective: iso_SE_30_lowres
- class: org.dynmap.hdmap.HDMap
name: cave
prefix: cave
perspective: cave
Trzy mapy naraz - flat top-down, izometria 60 stopni i tryb cave. Każda je swoje kafelki i swój budżet renderowy.
Pełny render
/dynmap fullrender world
/dynmap pause all
/dynmap pause none
Fullrender obciąża CPU mocno. Sprawdź wolne rdzenie przed startem.
squaremap: lekka mapa 2D dla Papera
squaremap to fork Pl3xMap skupiony na jednym celu: szybka mapa 2D top-down bez niepotrzebnych rzeczy. Autor (jpenilla) jest też developerem Papera, więc kod jest czysty i ogarnia nowe wersje od razu po premierze.
Plusy
- Minimalne obciążenie CPU, render na osobnych wątkach, brak blokowania głównego wątku
- Kafelki małe, tylko to co potrzebne
- Czysty nowoczesny kod, zero bałaganu z 2011
- Wsparcie Folii out of the box
- Szybkie update'y pod nowe wersje Papera
- Proste, jasne API dla markerów
- Nowoczesny klient webowy w JavaScript
Minusy
- Tylko Paper i forki (Purpur, Folia), brak Fabric i Forge
- Tylko 2D, bez izometrii i bez 3D
- Mniej gotowych integracji niż Dynmap
- Minimalistyczny UI - dla jednych plus, dla drugich minus
Instalacja
cd /your/server/plugins
wget https://github.com/jpenilla/squaremap/releases/latest/download/squaremap-paper-mc1.21.X.jar
Restart, config w plugins/squaremap/config.yml.
Kluczowe ustawienia
settings:
web-address: "auto"
language-file: en_US.yml
locale: en_US
internal-webserver:
enabled: true
bind: 0.0.0.0
port: 8080
world-settings:
default:
enabled: true
background-render:
enabled: true
max-rate-per-second: 32
render:
max-render-threads: -1
biome-blend: 3
max-rate-per-second: 32 - ile chunków na sekundę renderować w tle. 32 to konserwatywnie, mocny serwer udźwignie 128 albo więcej.
Pre-render
/squaremap fullrender world
/squaremap cancelrender world
/squaremap radiusrender world 5000
radiusrender renderuje tylko obszar wokół spawnu. Przydatne, gdy masz świat 30k, ale aktywną strefę 3k.
Porównanie według kluczowych metryk
Obciążenie serwera
| Metryka | BlueMap | Dynmap | squaremap |
|---|---|---|---|
| CPU przy live render | Średnie | Wysokie | Niskie |
| CPU przy fullrender | Wysokie | Wysokie | Średnie |
| RAM w spoczynku | 150-300 MB | 200-500 MB | 80-150 MB |
| Blokada głównego wątku | Nie | Częściowa | Nie |
| Wpływ na TPS | Słaby | Zauważalny | Minimalny |
Na słabym serwerze z 2-4 rdzeniami i 4 GB RAM-u squaremap będzie najłagodniejszy. BlueMap udźwignie, ale pierwszy render dużego świata jest odczuwalny. Dynmap jest najbardziej wymagający, zwłaszcza z wieloma perspektywami.
Dysk
| Rozmiar świata | BlueMap | Dynmap | squaremap |
|---|---|---|---|
| 5k x 5k bloków | 2-4 GB | 1-3 GB | 500-800 MB |
| 10k x 10k bloków | 8-15 GB | 5-10 GB | 2-4 GB |
| 30k x 30k bloków | 60-100 GB | 40-80 GB | 15-25 GB |
BlueMap trzyma więcej danych na kafelek, bo 3D wymaga geometrii i tekstur. Dynmap z wieloma perspektywami też dużo zajmuje. squaremap jest oszczędny.
Funkcje
| Funkcja | BlueMap | Dynmap | squaremap |
|---|---|---|---|
| Markery | Tak, API plus config | Tak, API plus config | Tak, API |
| Obszary (strefy, regiony) | Tak | Tak | Tak przez addon |
| Śledzenie graczy | Tak, WebSocket | Tak | Tak |
| Web chat | Nie | Tak | Nie |
| Webhook na eventy | Brak wbudowany | Tak | Nie |
| Tryb 3D | Tak | Częściowo (izometria) | Nie |
| Jaskinie i podziemia | Tak (przez nawigację) | Tak (cave perspective) | Nie |
| Integracja z WorldGuard | Przez addon | Natywnie | Przez addon |
Jeśli twój serwer opiera się na WorldGuard lub Towny i chcesz regiony auto-rysowane - Dynmap jest najprostszy. Jeśli chcesz efektownego 3D - BlueMap. Jeśli po prostu mapę - squaremap.
Szybkość aktualizacji
- BlueMap: przebudowa kafelka 5-30 sekund po zmianie chunka
- Dynmap: 10-60 sekund zależnie od
updaterate - squaremap: 5-15 sekund na zmianę
Wszystkie trzy wspierają live-updates. Pauza tylko jeśli wyłączysz background-render albo leci fullrender.
Zewnętrzny webserver i reverse proxy
Wszystkie trzy pluginy podnoszą własny wbudowany webserver. Działa, ale ma wady: brak HTTPS, brak cache'u, brak rate-limit. Na produkcji lepiej postawić nginx przed pluginem.
Przykład configu nginx dla BlueMap
server {
listen 80;
listen [::]:80;
server_name map.example.com;
# Przekierowanie na HTTPS
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name map.example.com;
ssl_certificate /etc/letsencrypt/live/map.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/map.example.com/privkey.pem;
# Wsparcie WebSocket dla BlueMap live updates
location / {
proxy_pass http://127.0.0.1:8100;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 3600s;
}
# Cache statycznych kafelkow
location ~* \.(png|webp|json)$ {
proxy_pass http://127.0.0.1:8100;
proxy_cache_valid 200 1h;
expires 1h;
add_header Cache-Control "public, no-transform";
}
}
Dla Dynmap i squaremap config jest podobny, tylko bez WebSocket-upgrade (używają zwykłego HTTP polling).
Zdobycie certyfikatu TLS
sudo certbot --nginx -d map.example.com
Po tym twoja mapa działa po HTTPS z TLS 1.3, w iframe'ach i na mobile.
Markery: automatyczne i ręczne
Markery to punkty na mapie. Spawn, sklep, dom gracza, event.
Statyczne markery przez config
BlueMap - plik plugins/BlueMap/marker-sets.conf:
"server-landmarks" {
label: "Server Landmarks"
toggleable: true
default-hidden: false
markers: {
"spawn" {
type: "poi"
position: { x: 0, y: 64, z: 0 }
label: "Spawn"
icon: "assets/poi.svg"
}
"shop" {
type: "poi"
position: { x: 100, y: 65, z: 50 }
label: "Server Shop"
}
}
}
Dynmap - komendy ingame:
/dmarker add id:spawn "Spawn" icon:redflag
/dmarker addset id:landmarks "Landmarks"
/dmarker add id:shop set:landmarks "Shop" icon:bighouse
squaremap - przez addon squaremap-region-visualizer lub własny plugin przez API.
Automatyczne markery
Dynmap potrafi auto-pokazywać regiony WorldGuard, miasta Towny, claimy Factions - podłączasz plugin-mostek i gotowe. BlueMap i squaremap wymagają addonów:
- BlueMapMarkerManager - edytor markerów GUI dla BlueMap
- BlueMapWorldGuard - automatyczne rysowanie regionów WG
- BlueMapFloodgate - pokazuje graczy Bedrock z prefiksem
- squaremap-region-visualizer - regiony WG dla squaremap
Bezpieczeństwo mapy webowej
Mapa to publiczny endpoint patrzący na twój serwer. Pomyśl, co pokazywać.
Co warto ukryć
- Współrzędne spawnu i baz admin (offset mapy albo ukrycie strefy)
- Prywatne regiony graczy, jeśli sobie tego życzą
- Admin-warpy i tajne lokalizacje
- Graczy pod vanish (wszystkie trzy pluginy to ogarniają przy dobrym configu)
Ukrycie graczy pod vanish
BlueMap - działa automatycznie z Essentials lub SuperVanish.
Dynmap:
# configuration.txt
player-info-protocol: hidden
hide-ops: true
squaremap przez player-tracker.yml:
player-tracker:
enabled: true
hidden-players: []
nameplate:
enabled: true
show-head: true
Plus Essentials/CMI automatycznie chowa vanished.
Whitelist IP na endpointy admina
Jeśli mapa jest otwarta dla graczy, ale panel Dynmap ma niebezpieczne komendy, zabezpiecz go:
location /up/sendmessage {
allow 192.168.1.0/24;
allow your.admin.ip/32;
deny all;
proxy_pass http://127.0.0.1:8123;
}
Albo wyłącz webchat całkowicie, jeśli nie potrzebny:
# Dynmap configuration.txt
allowwebchat: false
webchat-interval: 5
webchat-requires-login: true
Rate-limit przeciw scraperom
Scraper może zassać wszystkie kafelki i zarżnąć serwer. W nginx:
limit_req_zone $binary_remote_addr zone=mapzone:10m rate=30r/s;
server {
location / {
limit_req zone=mapzone burst=50 nodelay;
proxy_pass http://127.0.0.1:8100;
}
}
30 requestów na sekundę jest ok dla interaktywnego przeglądania, ale zatrzyma agresywny scraping.
Kiedy co wybrać
Weź BlueMap jeśli:
- Ważny jest ładny widok 3D, mapa jako narzędzie marketingowe
- Masz mocny serwer (4+ rdzenie, 8+ GB RAM) i wolny dysk
- Serwer na Paper, Fabric, Forge lub Sponge
- Potrzebujesz efektownej wizualizacji do zrzutów i video
- Nie zależy ci na zaawansowanych funkcjach web typu chat
Weź Dynmap jeśli:
- Masz WorldGuard, Towny, Factions i chcesz automatyczne rysowanie regionów
- Potrzebujesz web-chatu między stroną a serwerem
- Serwer na Forge lub Fabric i opcji jest mało
- Masz CPU i dysk na max funkcje
- Nie przeszkadza ci stary UI
Weź squaremap jeśli:
- Potrzebujesz prostej, szybkiej mapy 2D
- Serwer na Paper lub Folia
- Mało CPU lub słaby hosting
- Nie chce ci się grzebać w configach i perspektywach
- Ważny czysty, nowoczesny stack
Można postawić dwie
Nic nie stoi na przeszkodzie, żeby postawić squaremap do szybkiej nawigacji 2D i BlueMap do zrzutów 3D. Po prostu na osobne porty:
# squaremap
port: 8080
# BlueMap
port: 8100
I na osobne subdomeny w nginx. Obciążenie trochę większe, ale na dużym serwerze to żaden problem.
Integracja z Discordem
Mapy często pokazuje się przez Discord. Opcje:
- Link w webhooku: wysyłasz update'y z linkiem do mapy przy ważnych eventach
- Embed ze zrzutem: skrypt robi zrzut mapy i wrzuca na kanał
- iFrame na stronie serwera: gracze otwierają mapę w sekcji "World Map"
DiscordSRV (popularny mostek Minecraft-Discord) może przenosić wiadomości z web-chatu Dynmap do kanału Discord i z powrotem. Ustawia się to w DiscordSRV config, sekcja DynmapHook.
Wydajność: rady z praktyki
Nie renderuj wszystkiego
Jeśli masz świat 60k x 60k, ale gracze kręcą się w promieniu 5k od spawnu, nie ma sensu renderować wszystkiego. Użyj radiusrender albo granic w configu:
# squaremap world-settings
world-settings:
world:
zoom:
max-out: 3
max-in: 5
render:
visible-areas:
- center: [0, 0]
radius: 5000
Nocny fullrender
Render jest czuły na TPS. Ustaw fullrender przez cron o 4 rano, kiedy online jest minimalny:
# crontab
0 4 * * * rcon -H localhost -p 25575 -P yourpass "bluemap fullrender world"
SSD na kafelki
Kafelki są stale czytane i zapisywane. HDD zamienia mapę w pokaz slajdów. SSD jest obowiązkowe dla aktywnej mapy.
Dedykowane wątki dla rendera
Na wielordzeniowym CPU daj 2-4 rdzenie na render, reszta dla gry. BlueMap:
render-thread-count: 4
Dynmap:
render-triggers:
- chunkloaded
- blockupdate
render-max-threads: 2
squaremap:
render:
max-render-threads: 4
Częste problemy
BlueMap: biała strona
Zwykle znaczy, że przeglądarka nie może załadować zasobów WebGL. Sprawdź:
- HTTPS zamiast HTTP (niektóre funkcje WebGL wymagają secure origin)
- Konsolę przeglądarki (F12) na błędy ładowania kafelków
- CORS: jeśli mapa jest na innej domenie, ustaw
allow-origins: "*"w webserver.conf
Dynmap: mapa się nie aktualizuje
Sprawdź log na błędy "Render queue full". Znaczy, że serwer nie nadąża. Zmniejsz liczbę aktywnych map albo dostrój:
timesliceinterval: 0.5
maxchunkspertick: 200
parallelrendercnt: 2
squaremap: 404 na kafelkach
Webserver działa, ale kafelków brak. Sprawdź, czy świat jest enabled w plugins/squaremap/config.yml i czy puszczałeś chociaż raz /squaremap fullrender world.
Duże obciążenie po włączeniu
Pierwszy fullrender jest zawsze ciężki. Później update'y są inkrementalne i lekkie. Nie wyłączaj plugina w połowie, przy następnym włączeniu render zaczyna się od zera.
Krótka uwaga o DDoS
Twoja mapa webowa to publiczny endpoint HTTP/HTTPS. Można go zaatakować osobno od portu gry - nie Layer-4 UDP flood, a Layer-7 HTTP flood: tysiące requestów do kafelków na sekundę położą nginx i plugin.
Rozwiązuje się to Cloudflare przed nginx (za darmo, basic WAF) lub osobnym chronionym proxy. MineGuard chroni port gry Minecraft, ale mapa webowa wymaga ochrony warstwy HTTP. Miej to w głowie, jeśli mapa stanie się celem ataku albo po prostu bardzo popularną.
Podsumowanie
- Potrzebujesz efektownej mapy 3D do promo - BlueMap
- Chcesz maksymalnej liczby funkcji i integracji - Dynmap
- Chcesz szybkiej minimalistycznej mapy 2D na Paperze - squaremap
Wszystkie trzy są darmowe, aktywne i mają duże społeczności. Wybierz ten, który pasuje do zadania, a nie najmodniejszy. Dobra mapa serwera to taka, która działa, nie zabija TPS i pokazuje graczom to, co chcesz żeby widzieli.
Chroń swój serwer przed atakami DDoS
Darmowa ochrona z konfiguracją w 5 minut. 1 TB ruchu w zestawie.
Wypróbuj za darmoPowiązane artykuły
Ochrona serwerów Minecraft przed DDoS w Rosji - po co lokalna filtracja
Dlaczego filtracja ruchu przez Europę dokłada 30-40ms każdemu graczowi z WNP, jak to wpływa na PvP i gameplay, i co zmienia lokalna node w Moskwie.
Jak skalować serwer Minecraft: od 10 do 1000 graczy
Szczegółowy przewodnik po skalowaniu serwera Minecraft. Rozkładamy wymagania sprzętowe, transferowe i ochronne na każdym etapie wzrostu: 10, 50, 100, 500 i 1000 graczy online.
Wykrywanie VPN i proxy na serwerze Minecraft: po co i jak
Kompletny przewodnik po wykrywaniu połączeń VPN i proxy na serwerze Minecraft. Metody detekcji, serwisy API, pluginy, problem fałszywych alarmów i balans między bezpieczeństwem a dostępnością.