Wat is het XNB-bestandsformaat?
.xnb is een gecompileerd binair bestand dat een enkele game-resource opslaat die is geproduceerd door de XNA Game Studio Content Pipeline. .xnb is een binair formaat en kan afbeeldingen, audiogegevens, 3D-modellen, lettertypen en vele andere bronnen bevatten. Bronbestanden zoals .png texturen of .wav audioclips worden tijdens het bouwen gecompileerd naar platform-geoptimaliseerde .xnb-bestanden die de game tijdens runtime laadt via Content.Load<T>().
Elk .xnb-bestand opent met de ASCII-tag XNB, gevolgd door een byte voor het doelplatform (w voor Windows, x for Xbox 360, m voor Windows Phone) en een byte voor de formaatversie. Een optionele LZX- of LZ4-compressievlag is gecodeerd in dezelfde header.
XNA is een set ontwikkeltools voor het maken van games voor Microsoft Windows, Windows Phone en Xbox-systemen. De XNA-ontwikkelomgeving was gebaseerd op Visual Studio Express en was gratis beschikbaar, met een rijke set tools en functies voor game-ontwikkelaars. Microsoft is in 2010 gestopt met XNA bij versie 4.0 en beëindigde de ondersteuning rond 2014. De open-source frameworks MonoGame en FNA blijven hetzelfde .xnb-formaat lezen en schrijven, waardoor het relevant blijft voor titels als *Terraria*, *Stardew Valley* en *Celeste*, die hun artwork en audio als .xnb-bestanden leveren.
Tools van derden, waaronder xnbcli en XnbExtract, kunnen .xnb-inhoud uitpakken naar bewerkbare bronbestanden. Gerelateerde XNA-audiobankbestanden gebruiken de extensies .xsb en .xwb.
Beveiliging & veiligheid
RISICO: LOWEen XNB is inerte gecompileerde game-data - een textuur, geluid of datatabel - zonder scripting of uitvoerbare inhoud, dus het openen of extraheren ervan is op zichzelf niet gevaarlijk. Twee praktische waarschuwingen: het extraheren of herdistribueren van de assets van een game valt onder het auteursrecht/EULA van die game (prima voor persoonlijke mods, niet voor herdistributie), en je moet XNB-tools downloaden van hun officiële repositories (GitHub) in plaats van willekeurige „xnb opener”-sites, die vaak ad/PUP-vallen zijn aangezien er geen legitieme standalone viewer voor dubbelklikken bestaat.
Formaatdetails
in een notendopProgramma's die XNB-bestanden openen
Technische details
diepe specificaties| Bestandscodering | Binair, little-endian bytevolgorde |
| Magic bytes | 0x58 0x4E 0x42 (ASCII „XNB”) op offset 0 |
| Header-indeling | 3-byte ASCII-tag „XNB” + 1-byte platformcode + 1-byte formaatversie + 1-byte vlaggen + 4-byte totale bestandsgrootte (little-endian uint32) |
| Platformcodes | „w” (0x77) = Windows, „x” (0x78) = Xbox 360, „m” (0x6D) = Windows Phone/Mobile - gecodeerd in byte 3 van elke header |
| Formaatversie | Versies 1-5; versie 5 komt overeen met XNA Game Studio 4.0 en is de versie die wordt gebruikt door MonoGame en FNA |
| Compressie | Optioneel - LZX (XNA 4.0) of LZ4 (sommige MonoGame-builds); gesignaleerd door een vlag-bit in de header-vlaggenbyte; payload wordt vaak ongecomprimeerd opgeslagen |
| Ondersteunde inhoudstypen | Texturen (DXT1/DXT3/DXT5/Color RGBA), audio (PCM/ADPCM), 3D-modellen, bitmap-lettertypen, gecompileerde effect-shaders, sprite-sheets |
| Type-reader manifest | Header bevat een geserialiseerde lijst van ContentTypeReader-class-namen die de runtime gebruikt om de asset-objectgrafiek te deserialiseren |
| Assets per bestand | Eén primaire asset per .xnb-bestand; gedeelde sub-resources zijn genest binnen de geserialiseerde objectgrafiek van hetzelfde bestand |
| Textuuroppervlak-formaten | Color (32-bit RGBA), DXT1 (opaque 4:1 block-compressed), DXT3, DXT5 - GPU-native formaten die de VRAM-voetafdruk tijdens het laden verkleinen |
| Typische bestandsgrootte | Enkele KB voor kleine lettertypen of sprites; tot tientallen MB voor texturen met hoge resolutie of ongecomprimeerde audiotracks |
| Integriteitscontrole | Totale bestandsgrootte opgeslagen als een 4-byte little-endian veld in de header voor basisvalidatie; geen cryptografische checksum of hash inbegrepen |
| Versleuteling | Niet versleuteld - gecompileerde assets worden opgeslagen als platte binaire gegevens die leesbaar zijn voor elke implementatie die de juiste ContentTypeReader levert |
| MIME-type | application/octet-stream (geen specifiek MIME-type geregistreerd voor .xnb) |
| Rol in Content Pipeline | Runtime-output van de XNA/MonoGame Content Pipeline - bronbestanden (.png, .wav, .fbx, .spritefont) worden tijdens het bouwen gecompileerd naar .xnb en tijdens runtime geladen via Content.Load<T>() |
| Opmerkelijke gebruikers | MonoGame en FNA (open-source XNA-opvolgers); gebruikt voor assets in Terraria, Stardew Valley, Bastion, Fez en Celeste |
| Uitgebracht | 2006 (XNA Game Studio Express / XNA Framework 1.0) |
| Laatste versie | XNB format 5 (XNA Game Studio 4.0, 2010); same format reused by MonoGame/FNA |
| Specificatie | en.wikipedia.org |
XNB conversies
Community V&A
gevraagd door gebruikersNog geen vragen - wees de eerste om iets te vragen over XNB-bestanden.