MC Toolkit

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ęśćbazanakładkaprzesunięcierozmiar
głowa(8, 8)kapelusz (40, 8)32 w prawo8 × 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 prawo4 × 12
lewa noga(20, 52)spodnie (4, 52)16 w lewo4 × 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.

Kreator awatarów →

Więcej poradników

Zobacz wszystkie →