Postać 3D#
Ta strona opisuje, jak dokładnie zbudowana jest postać: z czego składa się jej wygląd, jakie ma wymiary, jak jest animowana i co można zmienić w szafie.
Postać to ludzik w stylu blocky — siatka prostopadłościanów. Ten sam ludzik stoi w aplikacji, na stronie i w panelu, a składa go jedna wspólna specyfikacja opisana dwa razy: raz w JavaScripcie (dla przeglądarki), raz w Kotlinie (dla aplikacji). Rozjazd tych dwóch opisów wyłapuje kontrola parytetu (Jakość i kontrole).
Trzy warstwy wyglądu#
- Atlas (malunek) — jeden obraz 1024 × 1024 px rozciągnięty na ciało. Tu powstają twarz (oczy, brwi, uśmiech), wzory ubrań, kieszenie, przeszycia i frędzle. Skala: 1 px = 0,1 jednostki, czyli ciało o szerokości 8 px ma 0,80 jednostki.
- Bryły (geometria) — dokładane prostopadłościany: czapki, kurtki, spódnice, plecaki, szaliki. Każda bryła wie, do której kości należy (głowa, tors, ramię, noga), więc porusza się razem z animacją.
- Kolory — jeden kolor bazowy na element. Ciemniejsze odcienie (ściągacze, kołnierze, opaski, frędzel) wylicza aplikacja sama, mnożąc kolor przez stały współczynnik — dzięki temu w interfejsie nie ma osobnego pola na „ciemniejszy odcień tego samego koloru”.
Kolejność malowania atlasu też jest ustalona: najpierw kolory bazowe (skóra, spodnie, buty), potem ubranie, dalej cienie, twarz zawsze na końcu, a na wierzchu akcesoria. Bez tej kolejności ubranie potrafiło zasłonić twarz, bo malowanie idzie warstwami po tym samym obrazie.
Malunek albo bryła#
Każdy element jest albo namalowany na atlasie, albo zbudowany z brył — nigdy jedno i drugie naraz. Wyjątkiem są celowe kotwice (na przykład czapka ukrywa czubek głowy, żeby włosy nie prześwitywały przez materiał).
Ta zasada powstała po audycie, który wykrył podwójne reprezentacje: ten sam element istniał i jako malunek, i jako bryła. Efekt widoczny był dopiero w ruchu — elementy „przebijały się” przez siebie przy obrocie stawu, mimo że w pozycji stojącej wyglądały poprawnie.
Wymiary i skala#
Jednostka świata jest wspólna dla wszystkich elementów, a ciało bazowe pochodzi z darmowego zestawu postaci blocky. Wymiary pilnowane w obu implementacjach:
| Część | Wymiar (jednostki) | Uwaga |
|---|---|---|
| Cała postać | ≈ 2,78 | Stoi na ziemi w punkcie zerowym układu |
| Tors | 0,80 × 0,90 × 0,60 | Do niego należą górne elementy garderoby |
| Głowa | 0,80 × 0,80 × 0,80 | Fryzury i czapki liczą pozycje w skali głowy (8 px = 0,80 jednostki) |
| Ramię | 0,34 × 0,935 × 0,40 | Węższe i krótsze od torsu, wsunięte w nie 0,015 jednostki |
| Noga | 0,34 × 0,87 × 0,36 | Węższa w głębi, żeby nogi się nie zlewały |
| Atlas | 1024 × 1024 px | Współrzędne wszystkich ścian opisane w specyfikacji projektowej |
Szkielet ma sześć kości z zestawu bazowego — tors, głowa, dwa ramiona i dwie nogi — plus dwa stawy dłoni dodane w kodzie (pivoty nadgarstków), których zestaw bazowy nie ma. Postać nie ma szyi: głowa stoi bezpośrednio na torsie, a tors jest jednym klockiem. To ma konsekwencję projektową — każda poprzeczka na piersi czyta się jak litera „T”, dlatego na przykład szalik jest kominem z końcem z tyłu, a nie chustą zawiązaną z przodu.
Bryły dodatków są wyrównane do powierzchni ciała (na przykład dłoń jest przedłużeniem rękawa), więc leżą w tej samej głębi co ciało i bez dodatkowego przesunięcia w głąb migotałyby. Oba klienty stosują ten sam zabieg.
Animacje#
| Sprawa | Jak jest |
|---|---|
| Klipy używane w grze | idle (stanie), walk (chód), sit (siad), die (upadek), emote-yes (emotka) |
| Zasób bazowy | Plik modelu zawiera pełny zestaw klipów z zestawu postaci blocky — między innymi bieg i emotki; gra używa z niego to, co potrzebne na mapie i w kreatorze |
| Pionek na mapie | Klipy liczone natywnie, z płynnym przejściem między nimi; brak pośrednictwa przeglądarki |
| Podgląd w kreatorze | Ta sama postać, podgląd na żywo — to, co ustawisz, od razu widać |
| Weryfikacja | Ubrania i dodatki sprawdzane pod kątem kolizji w ruchu, nie tylko w pozycji stojącej |
| Cień | Rysowany ręcznie pod postacią (miękka plama na ziemi), bo na mapie nie ma go z czego wziąć |
Postać jest bez oświetlenia (unlit): całe cieniowanie jest wmalowane w atlas, a renderer na mapie rysuje kolor z tekstury 1:1 tak samo jak kreator. Wcześniej shader liczył światło — słońce z otoczeniem przepalało kurtkę do prawie białej, a boki sylwetki robiły się niemal czarne.
Szafa i kolory#
Kategorie elementów: fryzura, czapka, góra, dół, buty, dodatki (szalik, plecak, torba, okulary, rękawiczki). Cała szafa i wszystkie kolory są dostępne w kreatorze w aplikacji, na stronie postaci oraz w panelu staff — z jednej tabeli elementów.
| Wybór koloru | Jak działa |
|---|---|
| Gotowe presety | Paski kolorów przy każdej rzeczy: skóra 6, włosy 9, oczy 7, ubrania 18, buty 6, podeszwa 6 |
| Własny kolor | Tęczowy kafelek otwiera okno z kołem barw (kąt = barwa, promień = nasycenie) i paskiem jasności |
| Wartości dokładne | Pole HEX (przyjmuje zapis z krzyżykiem, bez niego i skrócony) oraz odczyt i suwaki składowych RGB |
| Pipeta z ekranu | Tylko w przeglądarce na komputerze; w aplikacji jej nie ma i to świadome — wymagałaby zgody na nagrywanie ekranu, co jest zbyt inwazyjne dla kreatora postaci |
| Czerń | Kołem barw nie da się jej wybrać (koło zawsze ma jakąś barwę), dlatego wybiera się ją paskiem jasności albo wpisaniem koloru |
| Kod wyglądu | Cały wygląd można skopiować i wkleić jako tekst (ok. 266 znaków), bez udziału serwera |
Podgląd zmian działa w obu klientach bez przerysowywania całego okna, a palety kolorów są porównywane maszynowo między wersją przeglądarkową i aplikacją — dodanie koloru tylko po jednej stronie kończy się nieudaną kontrolą, a nie cichą różnicą w wyglądzie. Opis dla gracza: Postać i kreator.
Opis zgodny z aplikacją 0.120.1 (zaktualizowano 2026-09-26).