Co to jest format pliku XNB?
.xnb to skompilowany plik binarny, który przechowuje pojedynczy zasób gry wyprodukowany przez potok zawartości (Content Pipeline) XNA Game Studio. .xnb jest formatem binarnym i może zawierać obrazy, dane audio, modele 3D, czcionki i wiele innych zasobów. Zasoby źródłowe, takie jak tekstury .png lub klipy audio .wav, są kompilowane w czasie budowania do zoptymalizowanych pod kątem platformy plików .xnb, które gra ładuje w czasie rzeczywistym za pomocą Content.Load<T>().
Każdy plik .xnb zaczyna się od znacznika ASCII XNB, po którym następuje bajt platformy docelowej (w dla Windows, x dla Xbox 360, m dla Windows Phone) oraz bajt wersji formatu. Opcjonalna flaga kompresji LZX lub LZ4 jest zakodowana w tym samym nagłówku.
XNA to zestaw narzędzi programistycznych do tworzenia gier na systemy Microsoft Windows, Windows Phone i Xbox. Środowisko programistyczne XNA opierało się na Visual Studio Express i było dostępne bezpłatnie, oferując bogaty zestaw narzędzi i funkcji dla twórców gier. Microsoft zaprzestał rozwoju XNA wraz z wersją 4.0 w 2010 roku, kończąc wsparcie około 2014 roku. Otwarte frameworki MonoGame i FNA nadal odczytują i zapisują ten sam format .xnb, utrzymując jego znaczenie dla tytułów takich jak *Terraria*, *Stardew Valley* i *Celeste*, które dostarczają swoją grafikę i dźwięk jako pliki .xnb.
Narzędzia firm trzecich, w tym xnbcli i XnbExtract, mogą rozpakować zawartość .xnb z powrotem do edytowalnych zasobów źródłowych. Powiązane pliki banków audio XNA używają rozszerzeń .xsb i .xwb.
Bezpieczeństwo
RYZYKO: LOWPlik XNB to obojętne, skompilowane dane gry - tekstura, dźwięk lub tabela danych - bez skryptów ani zawartości wykonywalnej, więc samo otwieranie lub wyodrębnianie go nie jest niebezpieczne. Dwie praktyczne uwagi: wyodrębnianie lub redystrybucja zasobów gry podlega prawu autorskiemu/EULA danej gry (dopuszczalne dla osobistych modów, nie do redystrybucji), a narzędzia XNB należy pobierać z ich oficjalnych repozytoriów (GitHub), a nie z przypadkowych stron typu „xnb opener”, które często są pułapkami na reklamy/PUP, ponieważ nie istnieje legalna, samodzielna przeglądarka działająca po dwukrotnym kliknięciu.
Szczegóły formatu
w pigułceProgramy otwierające pliki XNB
Szczegóły techniczne
specyfikacja| Kodowanie pliku | Binarne, kolejność bajtów little-endian |
| Magiczne bajty | 0x58 0x4E 0x42 (ASCII „XNB”) na offsetcie 0 |
| Układ nagłówka | 3-bajtowy znacznik ASCII „XNB” + 1-bajtowy kod platformy + 1-bajtowa wersja formatu + 1-bajtowe flagi + 4-bajtowy całkowity rozmiar pliku (little-endian uint32) |
| Kody platform | „w” (0x77) = Windows, „x” (0x78) = Xbox 360, „m” (0x6D) = Windows Phone/Mobile - zakodowane w 3. bajcie każdego nagłówka |
| Wersja formatu | Wersje 1-5; wersja 5 odpowiada XNA Game Studio 4.0 i jest wersją docelową dla MonoGame i FNA |
| Kompresja | Opcjonalna - LZX (XNA 4.0) lub LZ4 (niektóre kompilacje MonoGame); sygnalizowana przez bit flagi w bajcie flag nagłówka; dane są często przechowywane bez kompresji |
| Obsługiwane typy zawartości | Tekstury (DXT1/DXT3/DXT5/Color RGBA), audio (PCM/ADPCM), modele 3D, czcionki bitmapowe, skompilowane shadery efektów, arkusze duszków (sprite sheets) |
| Manifest czytnika typów | Nagłówek zawiera zserializowaną listę nazw klas ContentTypeReader, których środowisko uruchomieniowe używa do deserializacji grafu obiektów zasobu |
| Zasoby na plik | Jeden główny zasób na plik .xnb; współdzielone podzasoby są zagnieżdżone w tym samym zserializowanym grafie obiektów pliku |
| Formaty powierzchni tekstur | Color (32-bit RGBA), DXT1 (nieprzezroczysty 4:1 skompresowany blokowo), DXT3, DXT5 - formaty natywne dla GPU, które zmniejszają zużycie VRAM w czasie ładowania |
| Typowy rozmiar pliku | Kilka KB dla małych czcionek lub duszków; do kilkudziesięciu MB dla tekstur o wysokiej rozdzielczości lub nieskompresowanych ścieżek audio |
| Kontrola integralności | Całkowity rozmiar pliku przechowywany jako 4-bajtowe pole little-endian w nagłówku do podstawowej walidacji; brak kryptograficznej sumy kontrolnej lub hasha |
| Szyfrowanie | Brak szyfrowania - skompilowane zasoby są przechowywane jako czyste dane binarne, czytelne dla każdej implementacji dostarczającej poprawny ContentTypeReader |
| Typ MIME | application/octet-stream (brak zarejestrowanego dedykowanego typu MIME dla .xnb) |
| Rola w Content Pipeline | Wyjście wykonawcze XNA/MonoGame Content Pipeline - pliki źródłowe (.png, .wav, .fbx, .spritefont) są kompilowane w czasie budowania do .xnb i ładowane w czasie rzeczywistym przez Content.Load<T>() |
| Znani użytkownicy | MonoGame i FNA (otwartoźródłowi następcy XNA); używany do dostarczania zasobów w Terraria, Stardew Valley, Bastion, Fez i Celeste |
| Wydano | 2006 (XNA Game Studio Express / XNA Framework 1.0) |
| Najnowsza wersja | XNB format 5 (XNA Game Studio 4.0, 2010); same format reused by MonoGame/FNA |
| Specyfikacja | en.wikipedia.org |
Konwersje XNB
Pytania i odpowiedzi społeczności
pytania użytkownikówBrak pytań - bądź pierwszą osobą, która zapyta o pliki XNB.