Mapa i znaczniki#
Ta strona opisuje, jak narysowane są znaczniki na mapie: dlaczego nie są zwykłymi pinezkami, jakie rodzaje i kolory występują oraz ile to kosztuje wydajności.
Jedna warstwa znaczników#
Znaczniki nie są adnotacjami mapy — nie ma pinezek, kółek ani emoji zawieszonych nad ludzikiem. Rysuje je jedna własna warstwa graficzna w aplikacji i przygotowane rysunki (sprite'y) z tej samej palety na stronie. Powody są trzy:
- pełna kontrola nad wyglądem — znacznik wygląda tak samo w aplikacji i w przeglądarce,
- zero źródeł i warstw stylu mapy na znaczniki (nic nie wpada do stylu kafelków i nic go nie spowalnia),
- jeden dodatkowy koszt rysowania na wszystkie ludziki i znaczniki zamiast kilkunastu osobnych warstw.
To była zmiana z wcześniejszego podejścia: pierwsza wersja rysowała znajdźki bitmapą „naklejoną” na mapę i kółka klastrów z liczbami, przez co styl znaczników odstawał od postaci. Teraz wszystko jest w stylu blocky — tak samo jak ludziki, więc mapa czyta się jednym językiem.
Ludziki (gracz, inni gracze, lobby, boty) to jeden zbiorczy layer zamiast kilkunastu osobnych warstw, a pionek postaci rysowany jest tym samym rendererem 3D co na mapie głównej i w mini-mapie widoku AR.
Rodzaje i kolory#
Znajdźki#
Klocek złożony z trzech części: ciemnogranatowa podstawa, złota skrzynka i kremowa iskra nad nią.
| Stan | Jak wygląda i kiedy |
|---|---|
| Niezebrana | Pełny klocek z iskrą, delikatny obrót, unoszenie i błysk — widoczna przy każdym zbliżeniu, także z lotu ptaka |
| Zebrana | Ten sam klocek w 55% rozmiaru, wyszarzony i bez iskry; wraca na mapę dopiero od zbliżenia 17 |
| Etykieta z nazwą | Sam tekst, bez tła; pojawia się od zbliżenia 16,5, gdy klocki są już rozdzielone |
Rozmiar na ekranie to 14–30 px: z bliska znacznik trzyma górny wymiar, z daleka działa podłoga rozmiaru, żeby znajdźka nie zamieniła się w pół piksela. To poprawka po zgłoszeniu „znajdźki nie są widoczne, dopiero po przybliżeniu”.
Punkty trasy#
Pięć stanów, każdy z własną bryłą, wysokością i kolorem:
| Stan | Model | Wysokość | Kolory |
|---|---|---|---|
| start | proporzec na słupku ze złotym kapturkiem | 1,00 m | flaga #2A9D8F, złoto #E9C46A |
| następny stop | wyższy słupek ze złotą obręczą i iskrą, pulsuje | 0,96 m | turkus i złoto, krem #FFF3C4 |
| pierwszy stop | słupek ze złotą obręczą | 0,56 m | #1D6B63 i złoto |
| zwykły stop | słupek | 0,52 m | #1D6B63 z jaśniejszą głowicą |
| zaliczony | niski, wygaszony, bez złota | 0,24 m | #6B7280, przezroczysty |
Rozmiar liczony jest w pikselach ekranu, nie w metrach: od 14 px przy zbliżeniu 12,5 do 34 px przy zbliżeniu 17 (z zapasem na pulsowanie). Dzięki temu koniec z „flagą wielkości budynku” przy oddalaniu. Etykietę dostaje stop wyróżniony (ten, do którego prowadzi nawigacja) albo dotknięty; na stronie nazwa ląduje pod znacznikiem, żeby nie zasłaniać modelu.
Boty NPC#
Bot to ludzik chodzący po drogach. Żeby dało się go znaleźć z miasta, dostaje pierścień pod stopami i nazwę — i tylko tyle, bez żadnej adnotacji zawieszonej nad głową.
| Element | Zasada |
|---|---|
| Pierścień | Owal pod stopami, w kolorze akcentu aplikacji (jaśniejszy na ciemnej mapie), z pustym środkiem, żeby było widać cień i buty |
| Rozmiar | Twardy dolny limit 26 px średnicy, rośnie do 52 px przy zbliżeniu spacerowym |
| Nazwa | Pigułka z nazwą bota od zbliżenia 14,4; najwyżej trzy najbliższe boty, nachodzące etykiety są pomijane |
| Ikona rodzaju | Na stronie, gdzie nie ma modelu 3D postaci, w środku pierścienia stoi mała plakietka z emoji z danych bota |
| Dotknięcie | Otwiera kartę bota z darem, trasą i godzinami służby (boty) |
Ikony z jednego źródła#
Znacznik znajdźki pojawia się w trzech miejscach: na mapie w aplikacji, na mapie w przeglądarce i jako ikona w plecaku. Żeby nie powstał drugi, „podobny” rysunek, każde z nich pochodzi z jednego planu:
- plan rysunku znajdźki opisany jest w module mapy strony: z niego powstaje obrazek wstrzykiwany do mapy, i z niego generowana jest ikona wektorowa dla aplikacji (jedna definicja obsługuje każdą gęstość ekranu),
- paleta kolorów jest wspólna dla tych rysunków i dla brył 3D w aplikacji,
- test pilnuje, że ikona w plecaku to wariant niezebranej (kolorowej) znajdźki, a nie odbarwiony.
Zasada jest szersza: paleta, progi zbliżenia i kolejność stanów znaczników są porównywane maszynowo między aplikacją a stroną. Rozjazd (na przykład dodanie koloru tylko po jednej stronie) kończy się nieudaną kontrolą, a nie cichą różnicą w wyglądzie.
Wydajność mapy#
Wydajność mierzymy przed i po każdej optymalizacji, dokładając kolejne warstwy: pionek → znajdźki → trasa → gracze → lobby → boty. Zmierzone i pilnowane liczby:
| Element | Zasada |
|---|---|
| Warstwy znaczników w stylu mapy | 0 źródeł i 0 warstw stylu — znaczniki są własnym rysowaniem, nie warstwą kafelków |
| Boty | Trzy boty kosztują +1 wywołanie rysowania na klatkę (wszystkie ludziki w jednej partii) |
| Plan znaczników | Przeliczany około 4 razy na sekundę i tylko wtedy, gdy kamera naprawdę się przesunęła |
| Kamera | Jedna klatka = jeden zapis kamery, żeby pętla rysowania, gesty i podążanie za graczem nie walczyły o stan |
| Limit rysowania | Najwyżej 40 znaczników; przy większej liczbie rysowane są najbliższe środkowi zbioru, a „następny stop” nigdy nie wypada |
| Rozmiary | W pikselach ekranu, z dolnymi limitami — znacznik nie zniknie z daleka ani nie zamieni się w płachtę setek metrów z bliska |
| Oddalona mapa | Animacje i cienie tylko z bliska; z daleka znacznik nie renderuje kilkudziesięciu klatek na sekundę bez potrzeby |
Opis zgodny z aplikacją 0.120.1 (zaktualizowano 2026-09-26).