MC Toolkit

Hướng dẫn / Xây dựng & tài nguyên

Mảnh khảnh hay cổ điển: trò chơi đọc tài khoản của bạn, còn công cụ phải đoán từ 24 pixel

Trò chơi lấy mảnh khảnh hay cổ điển từ cài đặt skin của tài khoản, không phải từ file PNG. Một công cụ chỉ được đưa file PNG trần phải đoán dựa vào hai cột mà cánh tay mảnh khảnh để trống. Kèm theo bản đồ UV đầy đủ và lý do skin 64×32 cũ bị lật gương.

Không có gì trong file PNG skin ghi là "mảnh khảnh". Không có cờ đánh dấu, không có quy ước tên file — và trò chơi cũng không bao giờ nhìn vào các pixel để tìm ra. Nó lấy kiểu mẫu từ cài đặt model mà tài khoản của bạn gắn vào skin (lựa chọn bạn thực hiện khi tải lên), còn hồ sơ không có skin sẽ nhận một trong 18 skin mặc định, 9 mảnh khảnh và 9 cổ điển, chọn theo UUID của nó.

Chỉ có công cụ được đưa file PNG trần — trình chỉnh sửa, trình tạo gói, trình xem — mới phải suy ra kiểu mẫu, và nó làm điều đó bằng cách nhìn vào một hình chữ nhật 2 × 12 cụ thể rồi đếm xem có bao nhiêu pixel thực sự hiện diện ở đó.

Phép thử

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

Cánh tay cổ điển rộng 4 pixel; cánh tay mảnh khảnh rộng 3. Các mặt của cánh tay mảnh khảnh được xếp hẹp hơn một pixel, nên mặt bên và mặt sau dịch sang trái và hai cột cuối của khối cánh tay, x 54–55, bị để trống. Trên chính các skin mặc định của Mojang, hình chữ nhật đó có 0 trên 24 pixel đục ở cả chín skin mảnh khảnh và 24 trên 24 ở cả chín skin cổ điển — hai mươi tư pixel là đủ để phân biệt.

Ngưỡng là 6 trên 24, không phải 1 — một phần tư cột phải được lấp đầy thì mới tính là cổ điển. Độ dung sai đó quan trọng: một skin mảnh khảnh có vài pixel lạc trong cột chết vẫn đọc ra là mảnh khảnh, đúng như bạn muốn, vì những pixel lạc đó gần như luôn là tai nạn khi chỉnh sửa chứ không phải ý định.

Điều đó cũng có nghĩa là kiểu hỏng hóc này diễn ra âm thầm. Nếu bạn vẽ một skin cổ điển nhưng chỉ dùng nhẹ những cột đó — một đường viền mảnh, vài pixel đổ bóng — bạn có thể xuống dưới 6 và bị tự động nhận là mảnh khảnh, mất một pixel chiều rộng cánh tay mà không có gì giải thích tại sao. Nếu một skin ra sai kiểu mẫu trong công cụ, những cột đó là nơi cần xem — còn trong trò chơi, cài đặt trên tài khoản của bạn mới là nơi cần xem.

Bản đồ UV, đầy đủ

Mỗi phần của skin là một hình chữ nhật cố định, và mỗi phần có một lớp phủ nằm ở đâu đó khác trên tấm hình:

phầnnềnlớp phủđộ lệchkích thước
đầu(8, 8)mũ (40, 8)32 sang phải8 × 8
thân(20, 20)áo khoác (20, 36)16 xuống8 × 12
tay phải(44, 20)tay áo (44, 36)16 xuống4 × 12
chân phải(4, 20)quần (4, 36)16 xuống4 × 12
tay trái(36, 52)tay áo (52, 52)16 sang phải4 × 12
chân trái(20, 52)quần (4, 52)16 sang trái4 × 12

Năm trong sáu lớp phủ nằm cách nền đúng 16 pixel — nhưng không cùng hướng. Ba phần gốc đi 16 xuống. Tay trái và chân trái, được thêm sau và bị nhét vào nửa dưới nơi không còn chỗ bên dưới chúng, lại đi 16 sang ngang — và theo hướng ngược nhau.

Mũ là phần duy nhất không cách 16 theo bất kỳ hướng nào: nó cách 32 sang phải, cùng hàng với đầu.

Vậy nên "lớp phủ nằm dưới nền" là quy tắc chỉ đúng với đúng một nửa tấm hình. Sao chép một hình chữ nhật nền rồi dịch xuống dưới để tìm lớp phủ của nó thì đúng với thân, tay phải và chân phải, nhưng lại âm thầm rơi vào sai phần với ba phần còn lại.

Trên skin mảnh khảnh, mọi hình chữ nhật cánh tay rộng 4 được đọc thành rộng 3 thay vào đó. Các mặt trước không dịch, nhưng mọi thứ sau chúng thì có: mặt bên và mặt sau đều bắt đầu lệch sang trái một pixel, và mặt sau hẹp hơn một pixel, đó là lý do khiến x 54–55 bị để trống.

Skin 64 × 32 cũ hoàn toàn không có phần bên trái

Skin trước 1.8 có kích thước 64 × 32 — nửa dưới của tấm hình đơn giản là không tồn tại, mà đó lại là nơi tay trái và chân trái nằm. Không có gì để vẽ chúng ra cả.

Cách khắc phục là lật gương: chân phải (0, 16) được sao chép sang (16, 48) và tay phải (40, 16) sang (32, 48), cả hai đều lật ngang. Đó là lý do skin cũ hoàn toàn đối xứng còn skin hiện đại thì không cần phải vậy — bất đối xứng là thứ duy nhất mà định dạng 64 × 32 không thể diễn đạt, và bất kỳ skin cũ nào bạn chuyển đổi đều bị áp đặt tính đối xứng dù nó muốn hay không.

File chỉnh sửa 128 × 128 có cùng bố cục, gấp đôi kích thước

Java chấp nhận 64 × 64 hoặc 64 × 32 kiểu cũ và từ chối mọi thứ khác. Trình chỉnh sửa skin Bedrock của trang này hoạt động ở 128 × 128 và không chấp nhận gì khác — nhưng file đó có cùng bố cục UV được vẽ ở độ phân giải gấp đôi, mọi phần đều ở tọa độ gấp đôi so với Java, chứ không phải một định dạng khác.

Rào cản nằm ở công cụ, không phải ở bố cục. Đường ống xử lý texture của mỗi bản trình chỉnh sửa được thiết kế theo con số riêng của nó, nên không bên nào mở được file của bên kia, và một file PNG 128 × 128 đưa cho Java sẽ bị từ chối chứ không được hiển thị ở nửa kích thước. Chuyển đổi chỉ là phép nhân tỉ lệ 2× mang tính máy móc, đó là lý do trình chỉnh sửa skin coi hai định dạng này là hai bản dựng riêng biệt chứ không phải một khung vẽ.

Trình tạo avatar →

Hướng dẫn khác

Xem tất cả →