NWN2 PW svět bez lagů (1.část)

Tvorba Neverwinter Nights 2 PW světa je časově náročný koníček, kde tvůrce musí řešit, krom běžných problémů kolem stavby lokací, psaní scriptů a dialogů, také optimalizaci modulu. Tedy, aby to co vytvoří nezatěžovalo až příliš Hardware serveru. Což vůbec není jednoduchý úkol a od tvůrce to většinou vyžaduje dělat velké kompromisy. Někteří WB nad optimalizací PW serveru mávnou rukou, nebo některé aspekty optimalizace zlehčují, jelikož se jim nehodí do krámu. Ale zde bych všechny tvůrce PW předem varoval, hlavním aspektem úspěšnosti serveru, je jeho návštěvnost a pokud server příliš laguje, jeho hratelnost se přibližuje bodu nula a výsledkem je minimální návštěvnost tohoto PW světa. Tento článek tak trochu nakousne tento problém, ale nejedná se o komplexní podrobný návod jak správně stavět a ladit váš PW.

Než začnete tvořit nový svět měli by jste si velmi dobře promyslet koncepci vašeho světa. Nebuďte příliš optimističtí, stavba PW světa zabere několik let tvrdé práce, není to legrace na pár měsíců. Plán by měl obsahovat nějakou časovou osnovu toho co chcete postavit. Například prvních šest měsíců budete pracovat na Alfa verzi, která bude obsahovat startovní lokaci, tři exteriéry, tři dungeony, nějaké lokace pro obchodníky, základní herní systémy atd. Je třeba mít nějaký základ pro první zátěžové testy, udělat si představu o tom kolik času procesoru vám sežerou vaše scripty, lokace a další obsah modulu. Zamyslete se především nad tím, které části modulu přispívají k největší hratelnosti. Podle toho navrhněte jednotlivé díly modulu.

Optimální velikost lokací
Jeden z největších problémů na který při stavbě světa narazíte je velikost lokací. Exteriérové lokace zabírají o proti NWN1 mnohem více místa na disku. Pro mnoho z vás to není nová informace, ale pojďme si to rozebrat více do hloubky. Ti z vás kdo trošku rozumí tomu jak to funguje uvnitř počítače a znají funkci jednotlivých jeho dílu asi vědí jaký vliv na výkon serveru mají velké soubory. Soubory, které se nevejdou do vaší operační paměti se budou stránkovat na disku a tím více se zatíží váš server. Jak váš modul poroste bude růst i zátěž serveru. Čím více hráčů bude v modulu tím víc bude zatížený váš hardware. Asi mi teď nadáváte, že vám tu píšu věci, které jsou jasné jak facka, ale pořád narážím na tvůrce, kteří buď neumí počítat, nebo prostě nechtějí si připustit, že jejich vymazlený 2GB modul bude s 20 hráči online lagovat tak, že bude hra nehratelná.

Takže jakou velikostí exteriérové lokace bych vám doporučil? Tak na tohle neexistuje jednoduchá odpověď. Opravdu moc záleží na koncepci vašeho modulu a především na tom jakou lokace budou plnit funkci. Například v modulu Demona 2 jsme se rozhodli pro Exteriérové lokace o velikosti 12×12.

Na forumu BioWare jsem našel tento příspěvek od tvůrce Demarii, který zde tento problém do detailů rozebral:

Demarii píše:
Zde jsou vypsané některé velikosti prázdných exteriérových lokací. Existuje více kombinací, ale tyto zde uvedené vám dají určitou představu o velikosti lokací.

  • 4×4 = 8.7 MB
  • 4×8 = 10.4 MB
  • 8×8 = 12.6 MB
  • 4×12 = 12.2 MB
  • 12×12 = 17.3 MB
  • 16×8 = 16.9 MB
  • 16×12 = 19.8 MB
  • 16×16 = 22.7 MB
  • 8×24 = 21.2 MB
  • 12×20 = 22.4 MB
  • 24×24 = 36 MB
  • 28×20 = 35.6 MB
  • 32×16 = 34.4 MB
  • 32×32 = 52.4 MB

Také umístitelné objekty(placeable), voda, deformace terénu a další podobný obsah zvětší velikost lokace na disku, ale není to tak dramatické zvětšení oproti této základní velikosti.

Někteří lidé se podívají na tyto čísla a začnou dělat závěry, menší lokace zabere méně paměti, takže stavět více menších lokací je lepší. Ale pojďme se na tuto otázku podívat z jiného pohledu. Vytvořte v toolsetu exteriérovou lokaci 4×4 a všimněte si jak velká je dostupná sekce (walkable area) a teď vytvořte exteriérovou lokaci 8×8. Lokace 8×8 je čtyři krát větší nežli 4×4 lokace. Teď se podívejte na využití paměti.

Lokace 8×8 využívá 1,44 krát více paměti, ale získáte 4 krát větší velikost. Teď porovnejte 16×16 proti 32×32 lokaci. Využíváte 2,3 krát více paměti, ale vaše lokace zabírá 4x více místa.

Takže pokud máte obrovské město, které můžete zasadit do 32×32 lokace. Pak na rozdělení tohoto města na 16×16 lokace, potřebujete čtyři tyto lokace, aby jste získali stejné místo jako je v lokaci o rozměrech 32×32, takže nakonec skončíte na 90,8 MB místo 52,4 MB při vytvoření stejného města, navíc tu vzniká více load času, které hráč ztratí při přechodu mezi jednotlivými části města.

Takže závěr toho všeho je, pokud nebudete vytvářet velké čtverce, které nepotřebujete, můžete ušetřit nějaké místo. Pokud pro vaší lokaci bude stačit 16×12, nepoužívejte 16×16 a prostě ořízněte zbytečné místo.

Například jsem ušetřil 5MB, při tvorbě startovacího města, který jsem vytvořil pro náš PW. Tím, že jsem zahodil opravdu krásnou, ale nepotřebnou řadu megatile z lokace 32×32 a zmenšil jsem ji na 32×28. A dále jsem ušetřil další mega a půl vyčištěním nedostupné walkmesh.

Takže jde o to správně provést návrh exteriéru, a použít jen to co opravdu využijte. Nemusíte se obávat použít velké lokace, ale pokud je vytvoříte, tak si na nich dejte pořádně záležet a naplňte je velkým množstvím herního obsahu, tak aby zabraná operační paměť byla dobře využita.

Jindragon píše:
Pojďme se trochu nad příspěvkem od Damarii zamyslet. Jak už jsem psal na začátku, velmi důležitá je vaše koncepce modulu. Velká většina stavitelů světů si myslí, že nejlepší startovací lokací je velké město a někteří toto klišé ještě vylepšují druhým startovacím městem například pro určitou rasu. Otázka je zda taková koncepce je vhodná pro NWN2 PW svět? Z mého pohledu není, vzhledem k počtu hráčů a celkovou atmosférou NWN2. Tvůrci by neměli zapomínat na obrovskou konkurenci jiných podobných online her na hrdiny. Právě ona komorní atmosféra NWN2 přináší jiné herní zážitky. Pak se k nám pomalu vkrádá otázka, proč vytvářet velké mega lokace, kde se ani hráči nenajdou a město pak vypadá jako kdyby se právě přes něj přehnal mor. Nejsem zásadně proti takto navrženým světům, ale pak by takové město mělo obsahovat opravdu velké množství obsahu (dobrodružství a zábavy), aby se maximálně využil jeho prostor. Hráč, který vstoupí do takto obrovské lokace v té chvíli využívá mnohem více zdrojů serveru než například hráč ve velkém dungu. A teď si odpovězte na otázku, kterou lokaci hráči více využijí a kde je více herní zábavy? Jako nejsem proti velkým exteriérovým lokacím, ale opravdu musí mít v modul svůj smysl.

Pro Demonu 2 jsme se s Darkem dohodli na koncepci modulu, kde budou převažovat velké dungeony nad exteriérovými lokacemi o velikosti 12×12, tedy poměr 60:40.

Zpirit píše:
Optimalizace scény
I pro dnešní počítače může být NWN2 výzva hlavně pokud se nechají WB strhnout. Proto je v toolsetu několik věciček, které pomůžou zaplnit scénu a přitom nepřetěžovat HW počítače. Většinou se jedná o obdélníky tvořené několika málo polygony, které jsou pokryté texturou představující řadu domu nebo stromu. Můžete tak zaplnit vzdálené a pro hráče nedostupné části mapy a přitom ulehčit scéně o stovky polygonu.

Každý má svůj styl, například bych si mapu rozdělil do tří částí, v té první by byla aktivní plocha, kde se hráči pohybuji a na té bych moc nešetřil a udělal ji opravdu kvalitní, další část, jenž je sice nedostupná, ale stále je hráčům dost na očích by měla být o něco méně detailnéjší, ale stále musí vypadat pěkně a třetí, která má jen zakrýt prázdnou mapu by měla být co nejekonomičtější pro výpočet.

Jindragon píše:
Se Zpiritem celkem souhlasím, ale pozor na hráčům přístupnou sekci v lokaci, takzvaný walkmesh. Pro výpočet kudy se můžou pohybovat PC a NPC je důležité, aby byl walkmesh co nejjednodušší, tedy aby tu nebylo příliš zbytečných objektů, které by překáželi hráčům a NPC v pohybu. Více o optimalizaci lokace najdete na NWN2Wiki v článku PW Builders Guidelines.

2 responses on “NWN2 PW svět bez lagů (1.část)