Skip to content

Kapitola 4.6: Balení PBO

Domů | << Předchozí: Pracovní postup s DayZ Tools | Balení PBO | Další: Průvodce Workbench >>


Úvod

PBO (Packed Bank of Objects) je archivní formát DayZ -- ekvivalent souboru .zip pro herní obsah. Každý mod, který hra načítá, je dodáván jako jeden nebo více souborů PBO. Když se hráč přihlásí k odběru modu na Steam Workshopu, stahuje PBO. Když server načítá mody, čte PBO. PBO je konečný výstup celé moddingové pipeline.

Pochopení, jak správně vytvářet PBO -- kdy binarizovat, jak nastavit prefixy, jak strukturovat výstup a jak automatizovat proces -- je posledním krokem mezi vašimi zdrojovými soubory a funkčním modem. Tato kapitola pokrývá vše od základního konceptu po pokročilé automatizované build postupy.


Obsah


Co je PBO?

PBO je plochý archivní soubor, který obsahuje adresářový strom herních assetů. Neobsahuje kompresi (na rozdíl od ZIP) -- soubory uvnitř jsou uloženy v původní velikosti. "Balení" je čistě organizační: mnoho souborů se stane jedním souborem s interní strukturou cest.

Klíčové charakteristiky

  • Bez komprese: Soubory jsou uloženy doslovně. Velikost PBO se rovná součtu jeho obsahu plus malé záhlaví.
  • Ploché záhlaví: Seznam položek souborů s cestami, velikostmi a offsety.
  • Metadata prefixu: Každé PBO deklaruje interní prefix cesty, který mapuje jeho obsah do virtuálního souborového systému enginu.
  • Pouze ke čtení za běhu: Engine čte z PBO, ale nikdy do nich nezapisuje.
  • Podepsané pro multiplayer: PBO mohou být podepsány párem klíčů ve stylu Bohemia pro ověření podpisů serverem.

Proč PBO místo volných souborů

  • Distribuce: Jeden soubor na komponentu modu je jednodušší než tisíce volných souborů.
  • Integrita: Podepisování klíčem zajišťuje, že mod nebyl pozměněn.
  • Výkon: I/O operace enginu jsou optimalizovány pro čtení z PBO.
  • Organizace: Systém prefixů zajišťuje, že nedojde ke kolizím cest mezi mody.

Interní struktura PBO

Když otevřete PBO (pomocí nástroje jako PBO Manager nebo MikeroTools), uvidíte adresářový strom:

MyMod.pbo
  $PBOPREFIX$                    <-- Textový soubor obsahující cestu prefixu
  config.bin                      <-- Binarizovaný config.cpp (nebo config.cpp při -packonly)
  Scripts/
    3_Game/
      MyConstants.c
    4_World/
      MyManager.c
    5_Mission/
      MyUI.c
  data/
    models/
      my_item.p3d                 <-- Binarizovaný ODOL (nebo MLOD při -packonly)
    textures/
      my_item_co.paa
      my_item_nohq.paa
      my_item_smdi.paa
    materials/
      my_item.rvmat
  sound/
    gunshot_01.ogg
  GUI/
    layouts/
      my_panel.layout

$PBOPREFIX$

Soubor $PBOPREFIX$ je malý textový soubor v kořenu PBO, který deklaruje prefix cesty modu. Například:

MyMod

To říká enginu: "Když něco odkazuje na MyMod\data\textures\my_item_co.paa, hledej uvnitř tohoto PBO na data\textures\my_item_co.paa."

config.bin vs. config.cpp

  • config.bin: Binarizovaná (binární) verze config.cpp, vytvořená Binarize. Rychlejší parsování při načítání.
  • config.cpp: Původní textový formát konfigurace. Funguje v enginu, ale je mírně pomalejší na parsování.

Když buildíte s binarizací, config.cpp se stane config.bin. Když použijete -packonly, config.cpp je zahrnut tak, jak je.


AddonBuilder: Nástroj pro balení

AddonBuilder je oficiální nástroj Bohemia pro balení PBO, zahrnutý v DayZ Tools. Může pracovat v GUI režimu nebo v režimu příkazového řádku.

GUI režim

  1. Spusťte AddonBuilder z DayZ Tools Launcheru.
  2. Source directory: Procházejte do složky vašeho modu na P: (např. P:\MyMod).
  3. Output directory: Procházejte do vaší výstupní složky (např. P:\output).
  4. Options:
    • Binarize: Zaškrtněte pro spuštění Binarize na obsahu (konvertuje P3D, textury, configy).
    • Sign: Zaškrtněte a vyberte klíč pro podepsání PBO.
    • Prefix: Zadejte prefix modu (např. MyMod).
  5. Klikněte na Pack.

Režim příkazového řádku

Režim příkazového řádku je preferován pro automatizované buildy:

bash
AddonBuilder.exe [source_path] [output_path] [options]

Kompletní příklad:

bash
"P:\DayZ Tools\Bin\AddonBuilder\AddonBuilder.exe" ^
    "P:\MyMod" ^
    "P:\output" ^
    -prefix="MyMod" ^
    -sign="P:\keys\MyKey"

Možnosti příkazového řádku

PříznakPopis
-prefix=<path>Nastaví interní prefix PBO (kritický pro rozlišení cest)
-packonlyPřeskočí binarizaci, zabalí soubory tak, jak jsou
-sign=<key_path>Podepíše PBO specifikovaným BI klíčem (cesta k privátnímu klíči, bez přípony)
-include=<path>Seznam zahrnutých souborů -- zabalí pouze soubory odpovídající tomuto filtru
-exclude=<path>Seznam vyloučených souborů -- přeskočí soubory odpovídající tomuto filtru
-binarize=<path>Cesta k Binarize.exe (pokud není ve výchozím umístění)
-temp=<path>Dočasný adresář pro výstup Binarize
-clearVyčistí výstupní adresář před balením
-project=<path>Cesta k projektovému disku (obvykle P:\)

Příznak -packonly

Příznak -packonly je jednou z nejdůležitějších možností v AddonBuilderu. Říká nástroji, aby přeskočil veškerou binarizaci a zabalil zdrojové soubory přesně tak, jak jsou.

Kdy použít -packonly

Obsah moduPoužít -packonly?Důvod
Pouze skripty (.c soubory)AnoSkripty se nikdy nebinarizují
UI layouty (.layout)AnoLayouty se nikdy nebinarizují
Pouze audio (.ogg)AnoOGG je již připravený pro hru
Předem konvertované textury (.paa)AnoJiž v konečném formátu
Config.cpp (bez CfgVehicles)AnoJednoduché configy fungují nebinarizované
Config.cpp (s CfgVehicles)NeDefinice předmětů vyžadují binarizovaný config
P3D modely (MLOD)NeMěly by být binarizovány do ODOL pro výkon
TGA/PNG textury (potřebují konverzi)NeMusí být konvertovány do PAA

Praktické vodítko

Pro mod obsahující pouze skripty (jako framework nebo utilitní mod bez vlastních předmětů):

bash
AddonBuilder.exe "P:\MyScriptMod" "P:\output" -prefix="MyScriptMod" -packonly

Pro mod předmětů (zbraně, oblečení, vozidla s modely a texturami):

bash
AddonBuilder.exe "P:\MyItemMod" "P:\output" -prefix="MyItemMod" -sign="P:\keys\MyKey"

Tip: Mnoho modů se dělí do více PBO právě kvůli optimalizaci procesu buildu. Skriptová PBO používají -packonly (rychlé), zatímco datová PBO s modely a texturami procházejí plnou binarizací (pomalejší, ale nezbytná).


Příznak -prefix

Příznak -prefix nastavuje interní prefix cesty PBO, který je zapsán do souboru $PBOPREFIX$ uvnitř PBO. Tento prefix je kritický -- určuje, jak engine rozlišuje cesty k obsahu uvnitř PBO.

Jak prefix funguje

Zdroj: P:\MyMod\data\textures\item_co.paa
Prefix: MyMod
Interní cesta PBO: data\textures\item_co.paa

Rozlišení enginem: MyMod\data\textures\item_co.paa
  --> Hledá v MyMod.pbo: data\textures\item_co.paa
  --> Nalezeno!

Víceúrovňové prefixy

Pro mody, které používají strukturu podsložek, může prefix obsahovat více úrovní:

bash
# Zdroj na disku P:
P:\MyMod\MyMod\Scripts\3_Game\MyClass.c

# Pokud je prefix "MyMod\MyMod\Scripts"
# Interní PBO: 3_Game\MyClass.c
# Cesta enginu: MyMod\MyMod\Scripts\3_Game\MyClass.c

Prefix musí odpovídat referencím

Pokud váš config.cpp odkazuje na MyMod\data\texture_co.paa, pak PBO obsahující tuto texturu musí mít prefix MyMod a soubor musí být na data\texture_co.paa uvnitř PBO. Nesoulad způsobí, že engine soubor nenajde.

Běžné vzory prefixů

Struktura moduZdrojová cestaPrefixReference v configu
Jednoduchý modP:\MyMod\MyModMyMod\data\item.p3d
Mod s prostorem jmenP:\MyMod_Weapons\MyMod_WeaponsMyMod_Weapons\data\rifle.p3d
Skriptový pod-balíčekP:\MyFramework\MyMod\Scripts\MyFramework\MyMod\Scripts(odkazováno přes config.cpp CfgMods)

Binarizace: kdy je potřeba a kdy ne

Binarizace je konverze lidsky čitelných zdrojových formátů do binárních formátů optimalizovaných pro engine. Je to nejčasově náročnější krok v procesu buildu a nejčastější zdroj chyb buildu.

Co se binarizuje

Typ souboruBinarizuje se naPovinné?
config.cppconfig.binPovinné pro mody definující předměty (CfgVehicles, CfgWeapons)
.p3d (MLOD).p3d (ODOL)Doporučeno -- ODOL se načítá rychleji a je menší
.tga / .png.paaPovinné -- engine potřebuje PAA za běhu
.edds.paaPovinné -- stejné jako výše
.rvmat.rvmat (zpracovaný)Vyřešení cest, menší optimalizace
.wrp.wrp (optimalizovaný)Povinné pro mody terénů/map

Co se NEBINARIZUJE

Typ souboruDůvod
.c skriptySkripty se načítají jako text enginem
.ogg audioJiž ve formátu připraveném pro hru
.layout souboryJiž ve formátu připraveném pro hru
.paa texturyJiž v konečném formátu (předem konvertované)
.json dataČteny jako text skriptovým kódem

Detaily binarizace Config.cpp

Binarizace config.cpp je krok, se kterým se většina modderů setkává s problémy. Binarizér parsuje text config.cpp, validuje jeho strukturu, řeší řetězce dědičnosti a výstupem je binární config.bin.

Kdy je binarizace povinná pro config.cpp:

  • Config definuje položky CfgVehicles (předměty, zbraně, vozidla, budovy).
  • Config definuje položky CfgWeapons.
  • Config definuje položky, které odkazují na modely nebo textury.

Kdy binarizace NENÍ povinná:

  • Config pouze definuje CfgPatches a CfgMods (registrace modu).
  • Config pouze definuje zvukové konfigurace.
  • Mody obsahující pouze skripty s minimálním configem.

Pravidlo: Pokud váš config.cpp přidává fyzické předměty do herního světa, potřebujete binarizaci. Pokud pouze registruje skripty a definuje data, která nejsou předměty, -packonly funguje bez problémů.


Podepisování klíčem

PBO mohou být podepsány kryptografickým párem klíčů. Servery používají ověření podpisů k zajištění, že všichni připojení klienti mají stejné (nemodifikované) soubory modů.

Komponenty páru klíčů

SouborPříponaÚčelKdo ho má
Privátní klíč.biprivatekeyPodepisuje PBO během builduPouze autor modu (UCHOVÁVEJTE V TAJNOSTI)
Veřejný klíč.bikeyOvěřuje podpisyAdministrátoři serverů, distribuováno s modem

Generování klíčů

Použijte utility DSSignFile nebo DSCreateKey z DayZ Tools:

bash
# Generování páru klíčů
DSCreateKey.exe MyModKey

# Toto vytvoří:
#   MyModKey.biprivatekey   (uchovávejte v tajnosti, nedistribuujte)
#   MyModKey.bikey          (distribuujte administrátorům serverů)

Podepisování během buildu

bash
AddonBuilder.exe "P:\MyMod" "P:\output" ^
    -prefix="MyMod" ^
    -sign="P:\keys\MyModKey"

Toto vytvoří:

P:\output\
  MyMod.pbo
  MyMod.pbo.MyModKey.bisign    <-- Soubor podpisu

Instalace klíče na straně serveru

Administrátoři serverů umístí veřejný klíč (.bikey) do adresáře keys/ serveru:

DayZServer/
  keys/
    MyModKey.bikey             <-- Povolí klientům s tímto modem připojení

Struktura složky @mod

DayZ očekává, že mody budou organizovány ve specifické adresářové struktuře s konvencí prefixu @:

@MyMod/
  addons/
    MyMod.pbo                  <-- Zabalený obsah modu
    MyMod.pbo.MyKey.bisign     <-- Podpis PBO (volitelné)
  keys/
    MyKey.bikey                <-- Veřejný klíč pro servery (volitelné)
  mod.cpp                      <-- Metadata modu

mod.cpp

Soubor mod.cpp poskytuje metadata zobrazená v launcheru DayZ:

cpp
name = "My Awesome Mod";
author = "ModAuthor";
version = "1.0.0";
url = "https://steamcommunity.com/sharedfiles/filedetails/?id=XXXXXXXXX";

Mody s více PBO

Velké mody se často dělí do více PBO v rámci jedné složky @mod:

@MyFramework/
  addons/
    MyMod_Core_Scripts.pbo        <-- Vrstva skriptů
    MyMod_Core_Data.pbo           <-- Textury, modely, materiály
    MyMod_Core_GUI.pbo            <-- Soubory layoutů, imagesety
  keys/
    MyMod.bikey
  mod.cpp

Načítání modů

Mody se načítají přes parametr -mod:

bash
# Jeden mod
DayZDiag_x64.exe -mod="@MyMod"

# Více modů (oddělené středníkem)
DayZDiag_x64.exe -mod="@MyFramework;@MyMod_Weapons;@MyMod_Missions"

Složka @ musí být v kořenovém adresáři hry, nebo musí být poskytnuta absolutní cesta.


Automatizované build skripty

Ruční balení PBO přes GUI AddonBuilderu je přijatelné pro malé, jednoduché mody. Pro větší projekty s více PBO jsou automatizované build skripty nezbytné.

Vzor batch skriptu

Typický build_pbos.bat:

batch
@echo off
setlocal

set TOOLS="P:\DayZ Tools\Bin\AddonBuilder\AddonBuilder.exe"
set OUTPUT="P:\@MyMod\addons"
set KEY="P:\keys\MyKey"

echo === Building Scripts PBO ===
%TOOLS% "P:\MyMod\Scripts" %OUTPUT% -prefix="MyMod\Scripts" -packonly -clear

echo === Building Data PBO ===
%TOOLS% "P:\MyMod\Data" %OUTPUT% -prefix="MyMod\Data" -sign=%KEY% -clear

echo === Build Complete ===
pause

Vzor Python build skriptu (dev.py)

Pro sofistikovanější buildy poskytuje Python skript lepší zpracování chyb, logování a podmíněnou logiku:

python
import subprocess
import os
import sys

ADDON_BUILDER = r"P:\DayZ Tools\Bin\AddonBuilder\AddonBuilder.exe"
OUTPUT_DIR = r"P:\@MyMod\addons"
KEY_PATH = r"P:\keys\MyKey"

PBOS = [
    {
        "name": "Scripts",
        "source": r"P:\MyMod\Scripts",
        "prefix": r"MyMod\Scripts",
        "packonly": True,
    },
    {
        "name": "Data",
        "source": r"P:\MyMod\Data",
        "prefix": r"MyMod\Data",
        "packonly": False,
    },
]

def build_pbo(pbo_config):
    """Build a single PBO."""
    cmd = [
        ADDON_BUILDER,
        pbo_config["source"],
        OUTPUT_DIR,
        f"-prefix={pbo_config['prefix']}",
    ]

    if pbo_config.get("packonly"):
        cmd.append("-packonly")
    else:
        cmd.append(f"-sign={KEY_PATH}")

    print(f"Building {pbo_config['name']}...")
    result = subprocess.run(cmd, capture_output=True, text=True)

    if result.returncode != 0:
        print(f"ERROR building {pbo_config['name']}:")
        print(result.stderr)
        return False

    print(f"  {pbo_config['name']} built successfully.")
    return True

def main():
    os.makedirs(OUTPUT_DIR, exist_ok=True)

    success = True
    for pbo in PBOS:
        if not build_pbo(pbo):
            success = False

    if success:
        print("\nAll PBOs built successfully.")
    else:
        print("\nBuild completed with errors.")
        sys.exit(1)

if __name__ == "__main__":
    main()

Integrace s dev.py

Projekt MyMod používá dev.py jako centrální build orchestrátor:

bash
python dev.py build          # Build všech PBO
python dev.py server         # Build + spuštění serveru + monitoring logů
python dev.py full           # Build + server + klient

Tento vzor je doporučen pro jakýkoli workspace s více mody. Jeden příkaz buildí vše, spustí server a zahájí monitoring -- eliminuje ruční kroky a snižuje lidské chyby.


Buildy modů s více PBO

Velké mody těží z rozdělení do více PBO. To má několik výhod:

Proč dělit do více PBO

  1. Rychlejší rebuildy. Pokud změníte pouze skript, rebuildíte pouze skriptové PBO (s -packonly, což trvá sekundy). Datové PBO (s binarizací) trvá minuty a nepotřebuje rebuilding.
  2. Modulární načítání. Serverová PBO mohou být vyloučena ze stahování klienty.
  3. Čistší organizace. Skripty, data a GUI jsou jasně odděleny.
  4. Paralelní buildy. Nezávislá PBO mohou být buildována současně.

Typický vzor rozdělení

@MyMod/
  addons/
    MyMod_Core.pbo           <-- config.cpp, CfgPatches (binarizované)
    MyMod_Scripts.pbo         <-- Všechny .c skriptové soubory (-packonly)
    MyMod_Data.pbo            <-- Modely, textury, materiály (binarizované)
    MyMod_GUI.pbo             <-- Layouty, imagesety (-packonly)
    MyMod_Sounds.pbo          <-- OGG audio soubory (-packonly)

Závislosti mezi PBO

Když jedno PBO závisí na jiném (např. skripty odkazují na předměty definované v config PBO), requiredAddons[] v CfgPatches zajišťuje správné pořadí načítání:

cpp
// V MyMod_Scripts config.cpp
class CfgPatches
{
    class MyMod_Scripts
    {
        requiredAddons[] = {"MyMod_Core"};   // Načíst po core PBO
    };
};

Časté chyby buildu a řešení

Chyba: "Include file not found"

Příčina: Config.cpp odkazuje na soubor (model, texturu), který neexistuje na očekávané cestě. Řešení: Ověřte, že soubor existuje na P: na přesné odkazované cestě. Zkontrolujte pravopis a velikost písmen.

Chyba: "Binarize failed" bez detailů

Příčina: Binarize havaroval na poškozeném nebo neplatném zdrojovém souboru. Řešení:

  1. Zkontrolujte, který soubor Binarize zpracovával (podívejte se na výstup logu).
  2. Otevřete problematický soubor v příslušném nástroji (Object Builder pro P3D, TexView2 pro textury).
  3. Zvalidujte soubor.
  4. Běžní viníci: textury, které nejsou mocninou 2, poškozené soubory P3D, neplatná syntaxe config.cpp.

Chyba: "Addon requires addon X"

Příčina: requiredAddons[] v CfgPatches uvádí addon, který není přítomen. Řešení: Buď nainstalujte požadovaný addon, přidejte ho do buildu, nebo odstraňte požadavek, pokud není skutečně potřebný.

Chyba: Chyba parsování Config.cpp (řádek X)

Příčina: Syntaktická chyba v config.cpp. Řešení: Otevřete config.cpp v textovém editoru a zkontrolujte řádek X. Běžné problémy:

  • Chybějící středníky po definicích tříd.
  • Neuzavřené závorky {}.
  • Chybějící uvozovky kolem řetězcových hodnot.
  • Zpětné lomítko na konci řádku (pokračování řádku není podporováno).

Chyba: Nesoulad prefixu PBO

Příčina: Prefix v PBO neodpovídá cestám použitým v config.cpp nebo materiálech. Řešení: Zajistěte, aby -prefix odpovídal struktuře cest očekávané všemi referencemi. Pokud config.cpp odkazuje na MyMod\data\item.p3d, prefix PBO musí být MyMod a soubor musí být na data\item.p3d uvnitř PBO.

Chyba: "Signature check failed" na serveru

Příčina: PBO klienta neodpovídá očekávanému podpisu serveru. Řešení:

  1. Zajistěte, aby server i klient měli stejnou verzi PBO.
  2. V případě potřeby znovu podepište PBO novým klíčem.
  3. Aktualizujte .bikey na serveru.

Chyba: "Cannot open file" během Binarize

Příčina: Disk P: není připojen nebo je cesta k souboru nesprávná. Řešení: Připojte disk P: a ověřte, že zdrojová cesta existuje.


Testování: File Patching vs. načítání PBO

Vývoj zahrnuje dva testovací režimy. Volba správného pro každou situaci šetří značný čas.

File Patching (Vývoj)

AspektDetail
RychlostOkamžité -- editace souboru, restart hry
NastaveníPřipojit disk P:, spustit s příznakem -filePatching
Spustitelný souborDayZDiag_x64.exe (vyžadován Diag build)
PodepisováníNeaplikuje se (žádná PBO k podepsání)
OmezeníŽádné binarizované configy, pouze Diag build
Nejlepší proVývoj skriptů, iterace UI, rychlé prototypování

Načítání PBO (Testování vydání)

AspektDetail
RychlostPomalejší -- musí se rebuildovat PBO pro každou změnu
NastaveníBuildnout PBO, umístit do @mod/addons/
Spustitelný souborDayZDiag_x64.exe nebo retailový DayZ_x64.exe
PodepisováníPodporováno (povinné pro multiplayer)
OmezeníRebuild vyžadován pro každou změnu
Nejlepší proFinální testování, multiplayerové testování, validace vydání

Doporučený pracovní postup

  1. Vývoj s file patching: Pište skripty, upravujte layouty, iterujte na texturách. Restartujte hru pro test. Žádný krok buildu.
  2. Pravidelné buildy PBO: Testujte binarizovaný build pro zachycení problémů specifických pro binarizaci (chyby parsování configu, problémy s konverzí textur).
  3. Finální test pouze s PBO: Před vydáním testujte výhradně z PBO, abyste zajistili, že zabalený mod funguje identicky jako file-patchovaná verze.
  4. Podepište a distribuujte PBO: Vygenerujte podpisy pro kompatibilitu s multiplayerem.

Osvědčené postupy

  1. Používejte -packonly pro skriptová PBO. Skripty se nikdy nebinarizují, takže -packonly je vždy správné a mnohem rychlejší.

  2. Vždy nastavte prefix. Bez prefixu engine nemůže rozlišit cesty k obsahu vašeho modu. Každé PBO musí mít správný -prefix.

  3. Automatizujte vaše buildy. Vytvořte build skript (batch nebo Python) od prvního dne. Ruční balení se neškáluje a je náchylné k chybám.

  4. Udržujte zdroj a výstup odděleně. Zdroj na P:, buildnutá PBO v odděleném výstupním adresáři nebo @mod/addons/. Nikdy nebalte z výstupního adresáře.

  5. Podepisujte vaše PBO pro jakékoli multiplayerové testování. Nepodepsaná PBO jsou odmítnuta servery s povoleným ověřením podpisů. Podepisujte při vývoji, i když se to zdá zbytečné -- předchází problémům "u mě to funguje", když ostatní testují.

  6. Verzujte vaše klíče. Když provádíte zásadní změny, vygenerujte nový pár klíčů. To donutí všechny klienty a servery aktualizovat společně.

  7. Testujte oba režimy -- file patching i PBO. Některé chyby se objeví pouze v jednom režimu. Binarizované configy se chovají odlišně od textových configů v okrajových případech.

  8. Pravidelně čistěte výstupní adresář. Zastaralá PBO z předchozích buildů mohou způsobit matoucí chování. Používejte příznak -clear nebo ručně čistěte před buildem.

  9. Dělte velké mody do více PBO. Ušetřený čas na inkrementálních rebuildech se vyplatí již během prvního dne vývoje.

  10. Čtěte logy buildu. Binarize a AddonBuilder produkují log soubory. Když se něco pokazí, odpověď je téměř vždy v logách. Zkontrolujte %TEMP%\AddonBuilder\ a %TEMP%\Binarize\ pro podrobný výstup.


Pozorováno v reálných modech

VzorModDetail
20+ PBO na mod s jemným dělenímExpansion (všechny moduly)Dělí se do oddělených PBO pro Scripts, Data, GUI, Vehicles, Book, Market atd., umožňující nezávislé rebuildy a volitelné oddělení klient/server
Trojité dělení Scripts/Data/GUIStarDZ (Core, Missions, AI)Každý mod produkuje 2-3 PBO: _Scripts.pbo (packonly), _Data.pbo (binarizované modely/textury), _GUI.pbo (packonly layouty)
Jedno monolitické PBOJednoduché retexture modyMalé mody s pouze config.cpp a několika PAA texturami zabalí vše do jednoho PBO s binarizací
Verzování klíčů per hlavní vydáníExpansionGeneruje nové páry klíčů pro zásadní aktualizace, čímž nutí všechny klienty a servery aktualizovat synchronně

Kompatibilita a dopad

  • Více modů: Kolize prefixů PBO způsobí, že engine načte soubory jednoho modu místo druhého. Každý mod musí používat unikátní prefix. Pečlivě kontrolujte $PBOPREFIX$ při ladění chyb "file not found" v prostředí s více mody.
  • Výkon: Načítání PBO je rychlé (sekvenční čtení souborů), ale mody s mnoha velkými PBO zvyšují dobu startu serveru. Binarizovaný obsah se načítá rychleji než nebinarizovaný. Používejte ODOL modely a PAA textury pro release buildy.
  • Verze: Formát PBO sám o sobě se nezměnil. AddonBuilder dostává periodické opravy přes aktualizace DayZ Tools, ale příznaky příkazového řádku a chování balení jsou stabilní od DayZ 1.0.

PředchozíNahoruDalší
4.5 Pracovní postup s DayZ ToolsČást 4: Formáty souborů a DayZ ToolsDalší: Průvodce Workbench

Released under CC BY-SA 4.0 | Code examples under MIT License