Poradniki / Budowanie i zasoby
Slim czy classic: gra odczytuje to z twojego konta, a narzędzie musi zgadywać z 24 pikseli
Gra bierze slim albo classic z ustawienia skina na twoim koncie, a nie z pliku PNG. Narzędzie dostające sam PNG musi zgadywać po dwóch kolumnach, które slim ramię zostawia puste. Do tego pełna mapa UV i dlaczego stare skiny 64×32 są lustrzane.
Nic w pliku PNG skina nie mówi „slim". Nie ma żadnej flagi ani konwencji nazewnictwa — a gra nigdy nie zagląda w piksele, żeby to ustalić. Model bierze z ustawienia model, które twoje konto przypisuje do skina (wybór, którego dokonujesz przy wgrywaniu), a profil bez skina dostaje jeden z 18 domyślnych skinów, 9 slim i 9 classic, wybrany na podstawie swojego UUID.
Tylko narzędzie dostające sam plik PNG — edytor, twórca paczek, przeglądarka — musi wywnioskować model, i robi to, patrząc na konkretny prostokąt 2 × 12 i licząc, ile jego pikseli faktycznie istnieje.
Test
sample x 54–55, y 20–31 — 2 wide, 12 tall = 24 pixels
count pixels with alpha > 0
slim if fewer than 6 are opaque
Ramię classic ma 4 piksele szerokości; ramię slim ma 3. Ściany ramienia slim są upakowane o jeden piksel węziej, więc ściana boczna i tylna przesuwają się w lewo, a dwie ostatnie kolumny bloku ramienia, x 54–55, zostają puste. W domyślnych skinach samego Mojangu ten prostokąt ma 0 z 24 nieprzezroczystych pikseli we wszystkich dziewięciu slim i 24 z 24 we wszystkich dziewięciu classic — dwadzieścia cztery piksele wystarczą, żeby to rozpoznać.
Próg to 6 z 24, nie 1 — jedna czwarta kolumny musi być wypełniona, żeby liczyła się jako classic. Ta tolerancja ma znaczenie: skin slim z kilkoma zabłąkanymi pikselami w martwej kolumnie nadal jest odczytywany jako slim, i dobrze, bo takie zabłąkane piksele to prawie zawsze przypadkowa pozostałość po edycji, a nie zamysł.
To oznacza też, że tryb awarii jest cichy. Jeśli narysujesz skin classic, ale tych kolumn użyjesz tylko oszczędnie — cienki kontur, kilka pikseli cieniowania — możesz zejść poniżej 6 i zostać automatycznie wykryty jako slim, tracąc piksel szerokości ramienia bez żadnego wyjaśnienia. Jeśli skin w jakimś narzędziu wychodzi w złym modelu, właśnie tam trzeba zajrzeć — a w grze: w ustawieniu na swoim koncie.
Pełna mapa UV
Każda część skina to stały prostokąt, a każda ma warstwę nakładki gdzie indziej na arkuszu:
| część | baza | nakładka | przesunięcie | rozmiar |
|---|---|---|---|---|
| głowa | (8, 8) | kapelusz (40, 8) | 32 w prawo | 8 × 8 |
| tułów | (20, 20) | kurtka (20, 36) | 16 w dół | 8 × 12 |
| prawe ramię | (44, 20) | rękaw (44, 36) | 16 w dół | 4 × 12 |
| prawa noga | (4, 20) | spodnie (4, 36) | 16 w dół | 4 × 12 |
| lewe ramię | (36, 52) | rękaw (52, 52) | 16 w prawo | 4 × 12 |
| lewa noga | (20, 52) | spodnie (4, 52) | 16 w lewo | 4 × 12 |
Pięć z sześciu nakładek leży dokładnie 16 pikseli od swojej bazy — ale nie w tym samym kierunku. Trzy oryginalne części idą 16 w dół. Lewe ramię i lewa noga, dodane później i wciśnięte w dolną połowę, gdzie nie było miejsca pod nimi, idą 16 w bok — i to w przeciwnych kierunkach względem siebie.
Kapelusz jako jedyny nie jest oddalony o 16: jest 32 w prawo, w tym samym rzędzie co głowa.
Więc „nakładka jest pod bazą" to zasada, która obowiązuje dokładnie w połowie arkusza. Skopiowanie prostokąta bazy i przesunięcie go w dół, żeby znaleźć nakładkę, działa dla tułowia, prawego ramienia i prawej nogi, a w pozostałych trzech przypadkach po cichu trafia w złą część.
Na skinie slim każdy prostokąt ramienia o szerokości 4 jest czytany jako 3 szerokości. Ściany przednie się nie przesuwają, ale wszystko po nich już tak: ściana boczna i ściana tylna zaczynają się o piksel dalej w lewo, a ściana tylna jest o piksel węższa — i to zostawia puste x 54–55.
Stare 64 × 32 nie ma lewej strony w ogóle
Skin sprzed 1.8 ma 64 × 32 — dolna połowa arkusza po prostu nie istnieje, a właśnie tam mieszkają lewe ramię i lewa noga. Nie ma z czego ich narysować.
Ratunkiem jest lustrzenie: prawa noga (0, 16) jest kopiowana do (16, 48), a prawe ramię (40, 16) do (32, 48), oba odbite poziomo. Dlatego stare skiny są idealnie symetryczne, a nowe nie muszą być — asymetria to jedyna rzecz, której format 64 × 32 nie potrafi wyrazić, i każdy stary skin, który konwertujesz, dostaje symetrię narzuconą, czy tego chce, czy nie.
Plik edytora 128 × 128 to ten sam układ w dwukrotnym rozmiarze
Java przyjmuje 64 × 64 albo stare 64 × 32 i odrzuca wszystko inne. Edytor skinów Bedrock na tej stronie działa w 128 × 128 i nie przyjmuje niczego innego — ale ten plik to ten sam układ UV narysowany w dwukrotnej rozdzielczości, każda część we współrzędnych dwa razy większych niż w Java, a nie inny format.
Ściana stoi w narzędziach, nie w układzie. Potok tekstur każdej kompilacji edytora jest dopasowany do własnej liczby, więc żaden nie otworzy pliku drugiego, a PNG 128 × 128 podany Javie zostaje odrzucony, a nie wyświetlony w połowie rozmiaru. Konwersja to mechaniczne przeskalowanie 2×, dlatego edytor skinów traktuje te dwa formaty jako osobne kompilacje, a nie jedno płótno.