Jak vytvořit mody pro World of Tanks. Jak nainstalovat mody pro tanky - pokyny krok za krokem Jaké mody pro wot jsou napsány
Příběh o vytvoření modifikace XVM (eXtended Visualization Mod) pro hru World of Tanks. V druhé části najdete popis historie vývoje serverové části modu.
starověké království
Jak jsem řekl v prvním díle, úplně první backend modu běžel na VPS, byl napsán v PHP a ukládal hráčskou základnu jako soubory v souborovém systému. Aby se zabránilo limitu 64 kB inodů (limit souborů v jednom adresáři je obvykle konfigurovatelný, ale zdálo se, že VPS má nastavení uzamčené), byla použita tříúrovňová struktura.První dvě písmena přezdívky hráče se stala názvem prvního adresáře z kořene databáze. Další dvě písmena jsou název adresáře v něm vnořeného. A už v něm byly plain-soubory s daty hráčů a jmény rovnými přezdívkám.
Požadavky vypadaly takto: http://domain.com/users/
Každý hráč poslal svou vlastní žádost. To znamená, že z jedné bitvy mohlo přijít až 30 požadavků. Pravda, na straně klienta bylo použito cachování již viděných hráčů, což zátěž mírně snížilo. Poté bylo toto ukládání do mezipaměti opuštěno kvůli extrémně nízkému procentu náhodných zásahů.
I přes primitivnost měla tato implementace značnou výhodu – fungovala i na VPS a „tahala“ sto nebo dva požadavky za vteřinu.
Naděje
Po přechodu na plnohodnotný server byla neméně rychle podána další implementace, tentokrát na PHP + MySQL. Tehdy se nám zdálo, že pro náš úkol (dotazování jednoho záznamu po indexu), a dokonce běh na tak „výkonném“ hardwaru (EQ4: Intel Core i7-920, 8 GB DDR3, 2x 750 GB SATA II HDD) , můžeme použít všechny antivzory návrhu – a stále to bude fungovat. Realita jako obvykle nezklamala.Co jsme tam tedy „farmovali“:
- Šablona žádosti byla samozřejmě ponechána tak, jak je.
- Požadavek byl zkontrolován běžným programem na podobnost s přezdívkou.
- Hledal jsem v databázi tuto přezdívku.
- Pokud to našli a nedávno to bylo aktualizováno, pak to uvedli v odpovědi.
- Pokud ho nenašli, nebo byl záznam příliš starý, pak začala zábava.
Request_data: ( echo: 0 filter_count: 210846 items: [ zkratka: "", account_url: "/community/accounts/27030462-Alex/", bitvy: 3737, clan_url: "", exp: 636853, id: 2703 "Alex", vyhraje: 1686 ], ….)
Vidíme, že nyní máme nejen id, ale i hotový odkaz. Vše se dá analyzovat.
Naštěstí se zhruba ve stejnou dobu objevila mobilní aplikace World of Tanks Assistant od Wargamingu. Aplikace docela zobrazovala statistiky libovolného hráče. Dobří lidé provedli průzkum a zjistili výměnný protokol.
Data byla nahrána do:
http://worldoftanks.ru/uc/accounts//api//?source_token=Intellect_Soft-WoT_Mobile-unofficial_stats
ApiVersion se rozrostla z 1,3 na 1,7 během doby, kdy jsme ji používali, a před objevením oficiálního API. U nás nebyly žádné rozdíly. Je pravda, že problém se získáním ID hráče před odesláním požadavku na API nezmizel.
A ano, pokud to někdo ještě nepochopil: požadavek na data hráče se objevil přímo při zpracování požadavku klienta.
Toto mistrovské dílo inženýrství fungovalo konzistentně při zatížení 200-300 požadavků za sekundu, což bylo jen o málo více než úplně první verze, která pracovala na statických souborech. Když se zátěž zvýšila, spočinuli jsme na CPU.
renesance
Chvíle, které server nezvládl, se zpočátku stávaly pouze v pátek a sobotu večer. Postupem času tyto "momenty" všechny přibývaly a přibývaly. Bylo zřejmé, že něco není v pořádku. Naše zatížení není rekordní, server není nejslabší. Problém zhoršoval fakt, že jsme neměli zkušené PHP specialisty. Stejně tak tam nebyli žádní zkušení * nix specialisté.Posaďte se a přemýšlejte. Mysleli jsme na následující:
- Nejdůležitější je, že jsme začali vylepšovat klientskou stránku a našli způsob, jak získat nejen přezdívky hráčů, ale také ID.
- Optimalizujte požadavky klientů, abyste z jedné bitvy nevyžadovali hráče po jednom, ale všechny najednou.
- Vyzkoušejte luxusní balíček NodeJS + Mongo.
Žádosti začaly vypadat takto:
http://domena.com/users/ První možnost vykazovala povzbudivé výsledky – vytáhla až 100–150 požadavků za sekundu. Nové požadavky, pro 30 hráčů, tzn. to odpovídá ~4000 starým požadavkům na hráče. Více než 10násobný nárůst v důsledku změny technologie nás velmi ohromil, a protože v té době byla rezerva bezpečnosti velmi solidní, začali jsme rozvíjet „statistické“ schopnosti XVM. Znovu se posadili k přemýšlení a rozhodli se udělat něco jako službu REST s následujícími metodami: Možnost vyvinout serverovou část pro takovou technickou specifikaci v procedurálním stylu vyvolala špatné myšlenky, a tak jsme se rozhodli vyzkoušet další trendovou věc: express . Musím říct, že předtím jsem s žádným MVC frameworkem neměl zkušenosti, ale i přes to jsem na to velmi rychle přišel a doslova za dva večery jsem udělal první funkční verzi. Obecně říkám nejvřelejší slova k vyjádření vývojářů pro možnost rychlého startu. Výsledný server zaprvé fungoval dobře a zadruhé jeho kód na rozdíl od staré verze lahodil oku. Na této vlně inspirace jsem se rozhodl „kráčet jako procházka!“ a přidal mangoose do projektu ODM. Kód se stal ještě krásnějším, když jsem prováděl testy na místním počítači, doslova jsem se nemohl nabažit toho, že vše krásně leží na svém místě a jak jednoduše a logicky vše funguje. Je čas nasadit tuto krásu na server. Nasazeno. Zkontrolováno - funguje! Odešel na 20 minut Přijdu, zkontroluji - nefunguje to. Dívám se do konzole - proces uzlu běží. restartuji. Funguje několik sekund, pak - tlumeně. Nebudu to dlouho natahovat: problém byl v CPU. Při tehdy obvyklé večerní zátěži varianta kódu bez mangusty tuto zátěž vtipně strávila, ale varianta s mangustou (přes všechnu její krásu) nikoliv. Musel jsem bohužel vrátit téměř všechny změny na několik dní. přestěhovali jsme se. Cítit se lépe. Pravda, ne na dlouho. Jakmile nastaly zimní prázdniny, problém nastal znovu. Za cenu jakéhokoli šamanismu nad kódem se nám podařilo dostat rychlost žádostí ze 150 na 180-200 za sekundu, ale stále to nestačilo. Jednoho z večerů, kdy vše téměř leželo, jsem kvůli ověření okomentoval blok kódu zodpovědný za aktualizaci „vypršelých“ hráčů pomocí WG API a ... fungovalo to. A není to špatné: dostali jsme stabilních 240 se špičkami až 260 požadavků/s. O několik dní později se zrodil kód, ve kterém byl aktualizátor hráčů rozdělen do samostatného nezávislého procesu a kód přímo interagující s klienty pouze přidal ID hráčů, které bylo třeba aktualizovat, do samostatné kolekce. Tento upgrade nám vydržel asi měsíc. A znovu jsme viděli všechny stejné problémy: po večerech začaly chybět požadavky klientů. Tentokrát jsme narazili na IOPS. Bez dlouhého přemýšlení jsme v březnu 2013 objednali další vybavení pro náš server: 240GB SSD disk. Tehdy neexistovala žádná řada serverů s předinstalovanými SSD disky. Pomohlo! Server začal stahovat až 380-400 požadavků/s. Asi půl roku vše fungovalo docela hladce a nezpůsobovalo žádné zvláštní stížnosti uživatelů. V srpnu 2013 jsme přešli na nově představený EX40-SSD, protože lépe vyhovoval našim účelům a byl levnější než EX-4S s přídavným SSD. A na konci roku 2013... uhodli jste správně, měli jsme stejný problém. Navíc tentokrát neexistovala žádná zjevná a jednoduchá řešení. Poslední čarodějnictví nad kódem je hotovo. Server je docela dobrý. q4x2, který *nix specialista zase „zkroutil“ server „jak nejlépe jsem uměl“. Obsah /etc/sysctl.conf pro zájemce # Konfigurační soubor sysctl jádra pro Red Hat Linux # Ovládá předávání IP paketů # Ovládá ověření zdrojové trasy # Neakceptujte směrování zdroje # Řídí funkci ladění systémových požadavků jádra # Řídí, zda výpisy jádra připojí PID k názvu souboru jádra. # Řídí používání TCP syncookies # Řídí výchozí maximální velikost fronty zpráv # Řídí maximální velikost zprávy v bajtech # Řídí maximální velikost sdíleného segmentu v bajtech # Řídí maximální počet segmentů sdílené paměti ve stránkách fs.file-max = 5000000 Jelikož jsem jako obvykle chtěl něco nového, padla volba na D a vibed framework. Kupodivu i mně, který se poslední tři roky věnuji téměř výhradně JS, se podařilo poměrně rychle vymýšlet pracovní verzi. Vyvinul jsem to pod Windows. Ale při nasazení pod Centos 6.5 jsme měli velké potíže s uspokojením závislostí. Linker musel ručně předepisovat samozřejmé věci. Obtíže se nepodařilo překonat až do konce, takže experiment s D byl předčasně ukončen. Samotný jazyk se nám velmi líbil, ale zatím má bohužel problémy se sadou nástrojů. Zatímco jsme to všechno psali, server to po večerech nezvládal: bylo málo CPU. Rozhodli jsme se tedy pro další přesun, tentokrát na PX90-SSD (Xeon E5-1650 v2, 64 GB ECC DDR3, 2 x 240 GB SSD). Právě v tuto chvíli jsme se rozhodli zavést aktivaci statistik na našem webu. To znamenalo, že přístupové tokeny přijaté klienty budou putovat po síti s každým požadavkem. Abychom je trochu zabezpečili, byl server hostován za HTTPS. A pak nás čekalo další překvapení. O něco výše jsem zmínil dětské boláky java kódu. Mezitím jsme je pár týdnů ošetřovali, java kód nefungoval o moc lépe než ten starý a bylo velmi pravděpodobné, že šestihlavý server nevytáhne proxy + https. Aby se nečekalo na zázrak, hned byl zakoupen další server: EX40 (i7-4770, 32 GB DDR3, 2 x 2 TB HDD), aby byl frontendem a tahal https. Němci vyrobili server, ale s jedním malým problémem, jak se později ukázalo: byla mu přidělena IP v rozsahu 5.x.x.x. Udělali jsme na něm frontend a vše fungovalo skvěle, ale na fóru se začaly hromadit stížnosti od lidí, kteří nefungovali. Po malém průzkumu tohoto problému jsme zjistili, že problém s 5.x.x.x je známá věc, souvisí s aplikací zvanou Hamachi. Navíc se nové verze Hamachi přesunuly na 25.x.x.x (zajímalo by mě, jestli tihle kluci v podstatě nechtějí používat privátní sítě pro své účely?), ale to nám to nijak neusnadnilo. Musel jsem se přesunout zpět na hlavní server, protože v té době už zvládal celou naši ekonomiku sám a dokonce se solidní zásobou. Celkově v tuto chvíli máme celý backend: náš kód + databáze běží na stejném serveru. Průměrné zatížení zřídka přesahuje jedničku. Nyní jsme ale vymysleli další reorganizaci serverové farmy s přesunem databáze na samostatný server. Jeden z důvodů: Mongo velmi špatně snáší studený start - po restartu neutáhne ani polovinu zátěže, kterou utáhne po zahřátí (kvůli tomu byly mimochodem 3. srpna problémy -4). Přenos na samostatný server vám umožní nedotýkat se jej. Dalším důvodem je, že máme nějaké nápady na vývoj modu, který bude vyžadovat výrazné zvětšení velikosti databáze. Současné 2*240GB nemusí stačit. Obecně lze říci, že problém backendu na naší straně je vyřešen. Ten druhý zůstává. Nejdůležitějším problémem je pro nás omezení počtu požadavků z jedné IP. V době, kdy ještě nebylo veřejné API, byl limit na IP cca 10 požadavků/sec. Byli jsme, mírně řečeno, málo. Proto se dostali ven, jak nejlépe mohli: měli jsme několik proxy serverů, přes které byly odesílány požadavky API. S příchodem API se to z hlediska dostupného limitu trochu zjednodušilo. Naší aplikaci byl přidělen prémiový status, který nám teoreticky dává právo provádět 50 žádostí/sec. A pak začíná ALE: Tím končí druhá část příběhu. Před námi bude další část, která bude vyprávět o tom nejzajímavějším - vývoji klientské části modifikace. Štítky: Příběh o vytvoření modifikace XVM (eXtended Visualization Mod) pro hru World of Tanks. V druhé části najdete popis historie vývoje serverové části modu. První dvě písmena přezdívky hráče se stala názvem prvního adresáře z kořene databáze. Další dvě písmena jsou název adresáře v něm vnořeného. A už v něm byly plain-soubory s daty hráčů a jmény rovnými přezdívkám. Požadavky vypadaly takto: http://domain.com/users/ Každý hráč poslal svou vlastní žádost. To znamená, že z jedné bitvy mohlo přijít až 30 požadavků. Pravda, na straně klienta bylo použito cachování již viděných hráčů, což zátěž mírně snížilo. Poté bylo toto ukládání do mezipaměti opuštěno kvůli extrémně nízkému procentu náhodných zásahů. I přes primitivnost měla tato implementace značnou výhodu – fungovala i na VPS a „tahala“ sto nebo dva požadavky za vteřinu. Co jsme tam tedy „farmovali“: Request_data: ( echo: 0 filter_count: 210846 items: [ zkratka: "", account_url: "/community/accounts/27030462-Alex/", bitvy: 3737, clan_url: "", exp: 636853, id: 2703 "Alex", vyhraje: 1686 ], ….) Naštěstí se zhruba ve stejnou dobu objevila mobilní aplikace World of Tanks Assistant od Wargamingu. Aplikace docela zobrazovala statistiky libovolného hráče. Dobří lidé provedli průzkum a zjistili výměnný protokol. Data byla nahrána do: A ano, pokud to někdo ještě nepochopil: požadavek na data hráče se objevil přímo při zpracování požadavku klienta. Toto mistrovské dílo inženýrství fungovalo konzistentně při zatížení 200-300 požadavků za sekundu, což bylo jen o málo více než úplně první verze, která pracovala na statických souborech. Když se zátěž zvýšila, spočinuli jsme na CPU. Posaďte se a přemýšlejte. Mysleli jsme na následující: Žádosti začaly vypadat takto: http://domena.com/users/ První možnost vykazovala povzbudivé výsledky – vytáhla až 100–150 požadavků za sekundu. Nové požadavky, pro 30 hráčů, tzn. to odpovídá ~4000 starým požadavkům na hráče. Více než 10násobný nárůst v důsledku změny technologie nás velmi ohromil, a protože v té době byla rezerva bezpečnosti velmi solidní, začali jsme rozvíjet „statistické“ schopnosti XVM. Znovu se posadili k přemýšlení a rozhodli se udělat něco jako službu REST s následujícími metodami: Možnost vyvinout serverovou část pro takovou technickou specifikaci v procedurálním stylu vyvolala špatné myšlenky, a tak jsme se rozhodli vyzkoušet další trendovou věc: express . Musím říct, že předtím jsem s žádným MVC frameworkem neměl zkušenosti, ale i přes to jsem na to velmi rychle přišel a doslova za dva večery jsem udělal první funkční verzi. Obecně říkám nejvřelejší slova k vyjádření vývojářů pro možnost rychlého startu. Výsledný server zaprvé fungoval dobře a zadruhé jeho kód na rozdíl od staré verze lahodil oku. Na této vlně inspirace jsem se rozhodl „kráčet jako procházka!“ a přidal mangoose do projektu ODM. Kód se stal ještě krásnějším, když jsem prováděl testy na místním počítači, doslova jsem se nemohl nabažit toho, že vše krásně leží na svém místě a jak jednoduše a logicky vše funguje. Je čas nasadit tuto krásu na server. Nasazeno. Zkontrolováno - funguje! Odešel na 20 minut Přijdu, zkontroluji - nefunguje to. Dívám se do konzole - proces uzlu běží. restartuji. Funguje několik sekund, pak - tlumeně. Nebudu to dlouho natahovat: problém byl v CPU. Při tehdy obvyklé večerní zátěži varianta kódu bez mangusty tuto zátěž vtipně strávila, ale varianta s mangustou (přes všechnu její krásu) nikoliv. Musel jsem bohužel vrátit téměř všechny změny na několik dní. přestěhovali jsme se. Cítit se lépe. Pravda, ne na dlouho. Jakmile nastaly zimní prázdniny, problém nastal znovu. Za cenu jakéhokoli šamanismu nad kódem se nám podařilo dostat rychlost žádostí ze 150 na 180-200 za sekundu, ale stále to nestačilo. Jednoho z večerů, kdy vše téměř leželo, jsem kvůli ověření okomentoval blok kódu zodpovědný za aktualizaci „vypršelých“ hráčů pomocí WG API a ... fungovalo to. A není to špatné: dostali jsme stabilních 240 se špičkami až 260 požadavků/s. O několik dní později se zrodil kód, ve kterém byl aktualizátor hráčů rozdělen do samostatného nezávislého procesu a kód přímo interagující s klienty pouze přidal ID hráčů, které bylo třeba aktualizovat, do samostatné kolekce. Tento upgrade nám vydržel asi měsíc. A znovu jsme viděli všechny stejné problémy: po večerech začaly chybět požadavky klientů. Tentokrát jsme narazili na IOPS. Bez dlouhého přemýšlení jsme v březnu 2013 objednali další vybavení pro náš server: 240GB SSD disk. Tehdy neexistovala žádná řada serverů s předinstalovanými SSD disky. Pomohlo! Server začal stahovat až 380-400 požadavků/s. Asi půl roku vše fungovalo docela hladce a nezpůsobovalo žádné zvláštní stížnosti uživatelů. V srpnu 2013 jsme přešli na nově představený EX40-SSD, protože lépe vyhovoval našim účelům a byl levnější než EX-4S s přídavným SSD. A na konci roku 2013... uhodli jste správně, měli jsme stejný problém. Navíc tentokrát neexistovala žádná zjevná a jednoduchá řešení. Poslední čarodějnictví nad kódem je hotovo. Server je docela dobrý. q4x2, který *nix specialista zase „zkroutil“ server „jak nejlépe jsem uměl“. Obsah /etc/sysctl.conf pro zájemce # Konfigurační soubor sysctl jádra pro Red Hat Linux # Ovládá předávání IP paketů # Ovládá ověření zdrojové trasy # Neakceptujte směrování zdroje # Řídí funkci ladění systémových požadavků jádra # Řídí, zda výpisy jádra připojí PID k názvu souboru jádra. # Řídí používání TCP syncookies # Řídí výchozí maximální velikost fronty zpráv # Řídí maximální velikost zprávy v bajtech # Řídí maximální velikost sdíleného segmentu v bajtech # Řídí maximální počet segmentů sdílené paměti ve stránkách fs.file-max = 5000000 Jelikož jsem jako obvykle chtěl něco nového, padla volba na D a vibed framework. Kupodivu i mně, který se poslední tři roky věnuji téměř výhradně JS, se podařilo poměrně rychle vymýšlet pracovní verzi. Vyvinul jsem to pod Windows. Ale při nasazení pod Centos 6.5 jsme měli velké potíže s uspokojením závislostí. Linker musel ručně předepisovat samozřejmé věci. Obtíže se nepodařilo překonat až do konce, takže experiment s D byl předčasně ukončen. Samotný jazyk se nám velmi líbil, ale zatím má bohužel problémy se sadou nástrojů. Zatímco jsme to všechno psali, server to po večerech nezvládal: bylo málo CPU. Rozhodli jsme se tedy pro další přesun, tentokrát na PX90-SSD (Xeon E5-1650 v2, 64 GB ECC DDR3, 2 x 240 GB SSD). Právě v tuto chvíli jsme se rozhodli zavést aktivaci statistik na našem webu. To znamenalo, že přístupové tokeny přijaté klienty budou putovat po síti s každým požadavkem. Abychom je trochu zabezpečili, byl server hostován za HTTPS. A pak nás čekalo další překvapení. O něco výše jsem zmínil dětské boláky java kódu. Mezitím jsme je pár týdnů ošetřovali, java kód nefungoval o moc lépe než ten starý a bylo velmi pravděpodobné, že šestihlavý server nevytáhne proxy + https. Aby se nečekalo na zázrak, hned byl zakoupen další server: EX40 (i7-4770, 32 GB DDR3, 2 x 2 TB HDD), aby byl frontendem a tahal https. Němci vyrobili server, ale s jedním malým problémem, jak se později ukázalo: byla mu přidělena IP v rozsahu 5.x.x.x. Udělali jsme na něm frontend a vše fungovalo skvěle, ale na fóru se začaly hromadit stížnosti od lidí, kteří nefungovali. Po malém průzkumu tohoto problému jsme zjistili, že problém s 5.x.x.x je známá věc, souvisí s aplikací zvanou Hamachi. Navíc se nové verze Hamachi přesunuly na 25.x.x.x (zajímalo by mě, jestli tihle kluci v podstatě nechtějí používat privátní sítě pro své účely?), ale to nám to nijak neusnadnilo. Musel jsem se přesunout zpět na hlavní server, protože v té době už zvládal celou naši ekonomiku sám a dokonce se solidní zásobou. Celkově v tuto chvíli máme celý backend: náš kód + databáze běží na stejném serveru. Průměrné zatížení zřídka přesahuje jedničku. Nyní jsme ale vymysleli další reorganizaci serverové farmy s přesunem databáze na samostatný server. Jeden z důvodů: Mongo velmi špatně snáší studený start - po restartu neutáhne ani polovinu zátěže, kterou utáhne po zahřátí (kvůli tomu byly mimochodem 3. srpna problémy -4). Přenos na samostatný server vám umožní nedotýkat se jej. Dalším důvodem je, že máme nějaké nápady na vývoj modu, který bude vyžadovat výrazné zvětšení velikosti databáze. Současné 2*240GB nemusí stačit. Obecně lze říci, že problém backendu na naší straně je vyřešen. Ten druhý zůstává. Nejdůležitějším problémem je pro nás omezení počtu požadavků z jedné IP. V době, kdy ještě nebylo veřejné API, byl limit na IP cca 10 požadavků/sec. Byli jsme, mírně řečeno, málo. Proto se dostali ven, jak nejlépe mohli: měli jsme několik proxy serverů, přes které byly odesílány požadavky API. S příchodem API se to z hlediska dostupného limitu trochu zjednodušilo. Naší aplikaci byl přidělen prémiový status, který nám teoreticky dává právo provádět 50 žádostí/sec. A pak začíná ALE: Tím končí druhá část příběhu. Před námi bude další část, která bude vyprávět o tom nejzajímavějším - vývoji klientské části modifikace. Štítky: Instalace modů do her může být skličující úkol. Ve World of Tanks ale vývojáři zpočátku přidali podporu pro vlastní úpravy, takže ve složce hry je speciální složka pro mody s názvem res_mods , která má úpravy na starosti. Podívejme se, jak to vše obecně ve Wotu funguje. Nejprve hra načte všechny prostředky ze složky res, která obsahuje herní soubory, jako je zvuk, textury, modely, skripty a další. To vše je ve World of Tanks zabaleno do archivů, aby se hra načítala o něco rychleji. Ve skutečnosti si odtud můžeme vzít soubor, který potřebujeme (například skin tanku) a změnit ho. Poté jej vložíme zpět a nahradíme stávající soubor. A všechno bude fungovat. Tato metoda je ale nepohodlná, za prvé bychom museli ukládat původní soubory pro případ, že by nic nefungovalo, a za druhé, když je hodně modů, nebudeme moci toto všechno smazat, protože si musíme pamatovat, co a kde hodili jsme to. K tomu existuje složka res_mods, poté, co hra načte soubory ze složky res, načte soubory z res_mods , a pokud existuje soubor, který již byl načten ze složky res, hra vezme poslední možnost, tedy náš upravený ze složky res_mods . Takto se vše dělá ve World of Tanks tak pohodlným způsobem. V tuto chvíli jsou ve World of Tanks dvě složky pro úpravy. První je mods , objevil se nedávno a je potřeba pro mody, které jsou zabalené a mají formát .wotmods. Druhá složka byla skoro od samého začátku, to je res_mods , je potřeba pro rozbalené mody. Obě tyto složky v sobě obsahují více složek s číslem aktuální verze hry nyní 1.6.1.0 a složky starších verzí lze jednoduše smazat, aby nepřekážely. Na našem webu v každém modu píšeme, jak jej nainstalovat. Úpravy ale často zveřejňujeme již spolu s potřebnými složkami, a proto stačí stažený archiv otevřít a zkopírovat (nebo rozbalit či přenést obsah myší, to je totéž) do složky, kde máte World of Tanks nainstalován. Poznámka: Pokud jste během instalace hry nic nezměnili, pak jsou tanky nainstalovány v C:\\Games\World_of_Tanks . Ve skutečnosti je to složka s hrou. Vždy si přečtěte popis k modu, VŽDY přesně napíšeme, jak ten či onen mod nainstalovat. Níže je uveden seznam možných nastavení. Možnosti instalace úprav Chcete-li odebrat konkrétní mod, musíte vědět, jaké soubory byly nainstalovány, a jednoduše je odstranit. A abyste odstranili VŠECHNY mody z tanků, stačí vymazat složky mods/1.6.1.0 a res_mods/1.6.1.0. Ale v žádném případě nemažte samotné složky 1.6.1.0, jinak se hra prostě nespustí. Každý hráč v moderních počítačových hrách používá mody. Může to být nový příběh, další strategie, funkce hráče nebo spuštění některých funkcí ve hře. World of Tanks nebyl výjimkou, takže naučit se nainstalovat mod ve World of Tanks nebude nikdy zbytečné. A i když se prozatím snadno obejdete bez dalších možností, možná si budete chtít v budoucnu zjednodušit život, spustit nové funkce svých tanků nebo udělat bitvy realističtější. A co je pro to potřeba udělat - na to hned přijdeme. Výběr dalších modů v Tanks je působivý. Všechny mody lze rozdělit do skupin. Zvažte nejvýznamnější z nich: Začněme tím nejzáhadnějším – posledním, kterému se říká sob. Říká se mu také „metr jelena“ a „metr uživatele“. Toto slovo označuje novou funkci ve světě, která vám umožní zjistit více o hráčích – jejich statistiky, počet vítězství a tak dále. Je považován za jeden z nejužitečnějších modů, protože hráč vždy ví, s kým má co do činění. Modifikátor „hangáry“, jak název napovídá, vám umožňuje zcela změnit vzhled vašeho hangáru ve strategii. Doplněk "zaměřovače" umožňuje změnit základní zaměřovač na nový. Například na zaměřovači od Jove, který si oblíbili především hráči, protože dokáže ukázat dobu nabíjení, přiblížení, dostupnou odolnost tanku, počet granátů v bubnu a mnoho dalšího. Úpravy zvuku vám umožní změnit hlasové hraní hry, takže vaše oblíbené „tanky“ zní novým způsobem. Vylepšují zvukový design, díky čemuž jsou exploze, výstřely, příkazy a řev housenek realističtější. Existuje jich několik typů a každý z nich může vytvořit svou vlastní bojovou atmosféru. Jsou instalovány stejným způsobem. Grafické úpravy se také dělí na několik poddruhů. Patří mezi ně funkce, která vám umožní vidět slabá místa v pancíři tanků. Funkce zvaná „bílé mrtvoly“ pomáhá vidět, jak se nepřítel po bitvě skrývá. Kromě toho můžete pomocí instalace zesvětlit železniční nástupiště, natřít sjeté koleje bílou barvou, zlepšit viditelnost na dálku a mnoho dalšího. To vše hodně pomáhá v boji. Chcete-li tyto možnosti použít, musíte je nejprve nainstalovat do herního klienta. Všechna dodatečná nastavení ve wot lze nastavit samostatně, ale mnohem jednodušší je pracovat s celým balíčkem najednou - tzv. modpacky. Obsahují různé herní modifikace navržené tak, aby zjednodušily strategii a učinily ji pohodlnější a pohodlnější. Nejoblíbenější je „Modpack od Jove“, ale existuje také spousta balíčků od jiných vývojářů. Každý si najde výběr podle svých představ. Jejich instalace je snadná – jako běžný program pomocí jednoduchého instalátoru. Výběr dalších modů v Tanks je působivý Takže začneme: Pro instalaci tedy budete muset projít následující cestou: D / World of Tanks / res_mods / 0. 9.13. Nové mody zlepšují kvalitu hry Ne vše je ale tak jednoduché jako ve výše popsaném případě. Některé upgrady, například mnoho oborů, budou vyžadovat vytvoření dalších složek. V důsledku toho se před instalací modů na wot vytvoří složka v dokumentu /0. 9. 13 a je v něm několik dalších. Celá cesta bude vypadat takto: Na vytváření dalších složek ve wotu vlastně není nic složitého, takže s instalací různých doplňků strategie většinou nebývají problémy. Zlepšení kvality recenze Instalace pokročilých nastavení zvuku je poměrně jednoduchá. Musíte si je stáhnout na webu, obvykle se soubor nazývá / audio. Soubor s herním klientem bude mít stejný soubor a vše je třeba zkopírovat do složky hry. Kopírujeme s výměnou aktuálních dokumentů tak, aby mod šel. Před instalací nezapomeňte zavřít herního klienta.
Mods pro World of Tanks: o tancích a doplňcích do hry. Typy úprav a důvody jejich instalace. Návod na instalaci modů + TOP 10 nejlepších + srovnání 3 nejlepších modpacků na internetu. Přestože má World of Tanks širokou škálu funkcí, většině hráčů chybí maličkosti, které mohou tankovací proces mnohonásobně zpestřit. K vyřešení tohoto problému mnoho řemeslníků v síti vyvíjí mody pro World of Tanks. O tancích a herním prostředí, jaké doplňky jsou k dispozici a jak je nainstalovat - na tyto a další otázky odpovíme v našem dnešním článku. Přehoz- softwarový doplněk do hlavního herního klienta, který umožňuje měnit/vylepšovat prvky mechaniky a vizuálních efektů. Zlepšení bojového výkonu, pomocné informační obrazovky – tyto a další transformace umožňují hráči upravit si herní rozhraní podle svých představ a preferencí designu. Proč dávat mody pro World of Tanks? Seznam je nekonečný - počet rozšíření je velmi velký. Na přání má uživatel možnost změnit design a mechaniku jednotlivých prvků tanku k nepoznání. Za dobu existence hry World of Tanks se počet modů exponenciálně rozrostl. Dnes může majitel tanku proměnit svou zbraň ve skutečnou nespoutanou sílu a zničit nepřítele jednou salvou. Některé mechanické změny jsou považovány za podvádění, následované zmrazením účtu, takže musíte rozlišovat mezi mody několika způsoby. Mody pro World of Tanks podle metody vývoje jsou: Pokud oficiální mody ovlivňují hru minimálně, pak se mody copyright dělí na přípustné a podvádění(tedy ty, které dávají převahu nad nepřátelským tankem kvůli změnám ve fyzice nebo herních mechanismech). Ty druhé jsou v používání zakázány, a pokud se jejich použití prokáže, uživatel bude čelit trvalému zákazu herního účtu. Chcete-li používat pokročilé funkce, musíte nejprve nainstalovat mody. Přidělit soukromé programy a celé sestavy("modpacky"). To druhé bude podrobněji probráno níže. Pokročilejší uživatelé dají klienta na disk bez OS – tím ušetří data při reinstalaci operačního systému. Příklad cesty - C:/World of Tanks/ Hodnota verze produktu není konstantní, protože nové záplaty jsou vydávány minimálně jednou měsíčně Například pro památky potřebujete další dvě podsložky - "/gui" a "/scaleform". Pak bude konečná cesta rozbalení prvků − "C:/World of Tanks/res_modes//0.9.22/gui/scaleform" Tento algoritmus pro instalaci modů se používá jak pro nádrž, tak pro další prvky rozhraní. Před instalací jakéhokoli modu pro tanky nebo pro účely dekorace nezapomeňte zavřít herního klienta. Pokud tato operace nebude provedena, může dojít ke konfliktům mezi modifikacemi a již zabudovaným softwarem, což povede k vyřazení ze hry nebo úplnému zastavení její práce. Konverze cíle. Základní zaměřovač nemůže poskytnout dostatek informací pro posouzení situace, proto má hráč pomocí vylepšení možnost výrazně pokročit v bojové taktice a zvýšit svou efektivitu. Doba nabíjení zbraně, zoom, protivník, kapacita/dostupnost munice – tyto a další údaje začátečníkovi výrazně pomohou orientovat se i v kritických situacích. Převod grafiky. Takové úpravy vám umožní vidět zranitelnost tanku, prostřílet rozbitá nepřátelská vozidla, zvýšit viditelnost obrněného vozidla a také mnoho dalších drobností, jejichž použití usnadní život běžnému hráči ve World of Nádrže. Zvukové transformace. To zahrnuje celou řadu zvukových efektů - výstřely, světlo, krity a tak dále. Transformace hangárů. Vizuální složka, která neovlivňuje samotnou hru. Slouží k dodání patřičné atmosféry hře. Transformujte statistiky obrazovky. Zvýšení informačního obsahu závěrečné obrazovky po bitvě + možnost sledovat velké množství parametrů v reálném čase. Pokud jste ve světě World of Tanks nováčky, používání balíčků výrazně zjednoduší proces instalace modů na tanky. Nemusíte ručně rozbalovat a hledat cíl modu. Vše, co musíte udělat, je spustit instalační program a postupovat podle pokynů krok za krokem. Modů pro tanky je mnohem více, než jsme popsali výše. Jsou některé, které nezapadají do žádné z kategorií. Stáhněte si mod samostatně nebo použijte balíček - je to na vás. Berte v úvahu pouze fakt, že při použití balíčku modů pro tanky nebudete mít plný výběr – počet úprav obsažených v sestavě je omezený a nemusí vždy uspokojit nároky náročných hráčů WOT. Je nemožné vzít v úvahu subjektivní názory všech, ale existují takové mody pro tanky, které jsou povinné pro použití naprosto každým. Při sestavování topu jsme se řídili průzkumy oficiálních herních fór World of Tanks. Každý z modů si na svého klienta nainstalovalo více než 50 % uživatelů hry (z těch, kteří tankové mody obecně používají). Schopnost přesné střelby je pro hráče ve World of Tanks základem. Bohužel základní zaměřovač je z hlediska funkčnosti velmi omezený, takže změna tohoto prvku je první věcí, kterou musíte udělat po instalaci herního klienta. Mod pro tank "Damoclův meč" v objednávce na rok 2017-2018. je nejlepším řešením v sekci památky. Funkce modu: Všechny informace, které mod poskytuje, dobře zapadají do rozhraní a nezasahují do boje. S využitím dat o soupeři moudře bude profesionální hráč schopen předvést akrobacii ve World of Tanks a začátečník výrazně zjednoduší trénink a zlepší taktické dovednosti. Mod panelu poškození, který umožňuje řidičům tanků vylepšit základní sadu funkcí ve World of Tanks. Úprava byla vyvinuta na základě známého autorského panelu od Stlite. Rozdíly v módě od analogů: Tento mod je k dispozici ve 3 verzích: Nové dílo od slavného moddera. Rozhraní tohoto modu pro tanky kombinuje jen ty nejlepší prvky v boji. Na první pohled se panel může zdát obtížně vnímatelný, ale po pár soubojích oceníte možnosti tohoto modu. Vlastnosti modu: Rozhraní se zbavilo spousty zbytečných prvků a veškerá funkčnost je nyní uspořádána na tomto minimalistickém panelu. V úpravě byl indikátor vzniku požáru v blízkosti nádrže a odpočítávání opravy modulů - nejnutnějších prvků. Rychloměr je nyní umístěn ve střední části obrazovky poblíž zaměřovače tanku. V nových klientských záplatách vývojáři rozšířili funkcionalitu základního nástroje, ale informací je stále málo, protože hráči stále hledají na netu kvalitní mody minimap – toto je jeden z nich. Dodatky provedené modem: Základní funkce také nezmizely. Světlo nepřátelského tanku, UGN, směr paprsku děla - to vše zůstane na svých správných místech. Mod byl sestaven s ohledem na přání stovek hráčů World of Tanks, což znamená, že úprava pozitivně ovlivní kvalitu hry pro začátečníky i profesionální tankisty. Ve WOT přesáhl počet vojenských vozidel 360 jednotek a každé vozidlo má silné i slabé stránky. Aby se předešlo pravděpodobnějším nepříjemným překvapením, byl vyvinut speciální mod pro tanky, který vám umožní zjistit tloušťku pronikání pancíře jakéhokoli vozidla ve hře. Stupeň zranitelnosti závisí na barvě dané modem: Další podobné módy World of Tanks jsou příliš vágní, někdy je prostě nemožné rozlišit mezi zónami. Jak název napovídá, je to estetika prezentace, která odlišuje tento mod od ostatních - všechny problémové oblasti jsou pouze naznačeny a nejsou zcela vyplněny barvou. Bonusem jsou ikony, které signalizují hráči polohu posádky uvnitř tanku, což usnadní otřesení některého z nich. Mod obsahuje zóny průniku tanků od úrovní 4 do 10 včetně. Tato sada je jednou z největších a nejfunkčnějších ve hře. Počet modů pro hangáry ve hře je obrovský. „Skiny“ vyrábí každý, kdo není příliš líný, a proto podle subjektivního názoru nemá smysl z této sekce něco vybírat. Rádi bychom vás upozornili na mod, který vám umožní měnit hangáry ve World of Tanks, aniž byste opustili herní rozhraní. Aby mod fungoval, stačí vybrat hangár z rozevíracího seznamu a potvrdit tlačítkem "Uložit". Všechny změny se projeví okamžitě. K dispozici je mod, který se nachází ve složce "skiny". Úprava funguje se základními i prémiovými hangáry. Statistiky jsou jedním z nejdůležitějších ukazatelů, které vám umožňují analyzovat bitvy a najít kořen problému. Základní funkcionalita klienta je více než špatná, takže instalace modu pro tanky podle statistik je povinným krokem, pokud plánujete hrát WOT déle než pár týdnů. Jaké funkce modul přidává: Mod je neustále aktualizován a přizpůsobován tankům v souladu s přáními uživatelů. Zpočátku byl tento mod prezentován jako program, který musel být spuštěn mimo klientský prostor. V dalších aktualizacích bylo rozhodnuto zabudovat modifikaci, která výrazně zjednodušuje život hráčů World of Tanks při studiu výkonu jejich bitev. Nejoblíbenější mod mezi řidiči tanků – denně jej používá více než 3 500 000 hráčů ve World of Tanks. Může za to jeho obrovská funkčnost, se kterou si ani zkušení tankisté hned neporadí. Co mod sobi umí: Odeslaný seznam je pouze špičkou ledovce modu, jeho plnou funkčnost odhalí hráč již na tanku během samotné bitvy. Počet různých pleťových vod je velmi velký, takže si stáhněte instalační a konfigurační pokyny s modem, protože bude velmi problematické pochopit složitosti modifikace sami. Vývojáři vytvořili dva typy modů pro tanky - Light a Full verze. Verze "light" je určena pro slabé počítače a obsahuje pouze stopovač sobů a záznam zásahů. Jeden z nových modů pro zlepšení výhledu na tank. Barevné provedení v tyrkysových tónech nebolí oči a zlepšuje viditelnost v problémových partiích. Design se sice nedá přiřadit ke standardu, ale po 5-7 bitvách v tancích tento pohled snadno přijmete do svého arzenálu úprav. Funkce modu: Tento mod je jedním z nejvíce medializovaných mezi nestandardními. Aktualizace se týkají všech typů zaměřovačů, což vám umožní vychutnat si kvalitní bitvy v tancích v jakémkoli typu lokace. Podívali jsme se na velké množství modů. Co když ale chcete nainstalovat několik úprav najednou a zachovat si možnost je rychle měnit? Stejně jako v případě hangárů si tankový hráč může zjednodušit život jednoduchým programem, který zvládá všechny nainstalované módy World of Tanks. Funkčnost programu: Podrobné pokyny pro použití modu pro World of Tanks jsou poskytovány spolu s programem, ale i dítě zde může pochopit složitost práce. Jedná se o šikovný nástroj pro ty, kteří rádi testují mody v tancích, ale nechtějí se neustále handrkovat s úpravami ručně. Vybrali jsme jen ty nejlepší mody pro World of Tanks o tancích a prostředí ve hře. Každý z nich dokáže kvalitativně odrážet schopnosti vašeho vozu a rozvinout jeho plný potenciál. Tématu mod packů jsme se již dotkli o něco výše. Sestavit vyvážený modpack je umění, které zvládne jen opravdový fanoušek World of Tanks. Kritéria výběru modpacku: Počet modů v balení. Neznamená to, že by nebylo jasné, co přijde. Všechny modifikace musí být nárokovány tankovými hráči. Kvalita modu. Používání pochybných sestav může poškodit nejen herního klienta, ale celý počítač jako celek. Balíček musí obsahovat oficiálně schválené modifikace. Pouze v tomto případě se nemůžete starat o bezpečnost osobních údajů v zařízení. Výzdoba. Instalační program by měl mít intuitivní rozhraní a nenamáhat oči uživatele. Frekvence aktualizace. Velmi důležitý parametr, protože přímo závisí na tom, zda budou mody fungovat na klientovi nebo ne. Vzhledem k častým aktualizacím hry musí autor na tyto změny rychle reagovat a podle toho upravit sestavu. Vzhledem ke všemu výše uvedenému jsme vybrali tři nejlepší modpacky, které 100% splňují stanovené podmínky. Pro přehlednost je uspořádáme do podoby srovnávací tabulky, kde můžete z vlastního subjektivního pohledu zhodnotit všechny přednosti a obsah každého z nich. Jak získat výraznou výhodu nad nepřítelem? Nejlepší mody pro World of Tanks. V tabulce jsou uvedeny pouze nejvýznamnější součásti balení, které musí být v jakékoli sestavě. Všechny 3 možnosti jsou na vrcholu hodnocení oblíbenosti, ale první místo drží "Pro tanky". Na tomto projektu pracuje celá skupina specialistů. Po nových záplatách World of Tanks jsou to právě tito borci, kdo jako první vydali aktualizovanou verzi sestavení pro změněné verze klienta. Používejte mody pro World of Tanks o tancích- znamená zlepšit produktivitu každé bitvy o 40-50%. A pokud profesionál používá modifikace, tak 100%. Někteří považují použití modů za podvádění, ale oficiálně schválená funkční vylepšení dávají tankerovi svobodu ve hře a přináší ještě větší potěšení z procesu. A to je u tanků to nejdůležitější!Mraky se stahují
Na konci roku 2012 došlo k dalšímu nárůstu aktivity uživatelů XVM a náš skvělý server přestal zvládat zátěž. Abych byl upřímný, problémy byly i dříve, ale ne tak vážné. Nyní po večerech mod spíše nefungoval, než fungoval. Jako poslední možnost jsme dokonce přišroubovali příliš zaneprázdněný modul k serveru, což nám umožnilo zpracovat tolik požadavků, kolik hardware dokázal zvládnout, a zbytek přeskočit. Monitorování ukázalo akutní nedostatek paměti pro proces mongo. Rozhodli jsme se přejít na jiný server: EX-4S (i7-2600, 32 GB DDR3, 2x3 TB SATA III HDD).
#
# Pro binární hodnoty je 0 zakázána, 1 je povolena. Viz sysctl(8) a
# sysctl.conf(5) pro více podrobností.
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq=0
# Užitečné pro ladění vícevláknových aplikací.
kernel.core_uses_pid = 1
net.ipv4.tcp_synccookies=1
kernel.msgmnb=65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
net.core.somaxconn=262144
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_tw_recycle=1
net.core.netdev_max_backlog = 10 000
net.ipv4.tcp_synccookies=1
net.ipv4.tcp_max_syn_backlog=262144
net.ipv4.tcp_max_tw_buckets=720000
net.ipv4.tcp_timestamps=1
net.ipv4.tcp_fin_timeout = 10
net.ipv4.tcp_keepalive_time=1800
net.ipv4.tcp_keepalive_probes=7
net.ipv4.tcp_keepalive_intvl=30
net.core.wmem_max = 33554432
net.core.rmem_max = 33554432
net.core.rmem_default = 8388608
net.core.wmem_default = 4194394
net.ipv4.tcp_rmem = 4096 8388608 16777216
net.ipv4.tcp_wmem = 4096 4194394 16777216
net.ipv4.tcp_fin_timeout = 15
fs.epoll.max_user_watches = 1000000
net.core.netdev_max_backlog = 100 000
net.core.optmem_max = 10000000
net.core.rmem_default = 10000000
net.core.rmem_max = 10000000
net.core.somaxconn = 1000000
net.core.wmem_default = 10000000
net.core.wmem_max = 10000000
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_synccookies=1
net.ipv4.tcp_max_syn_backlog=12000
net.ipv4.tcp_max_tw_buckets=2000000
net.ipv4.tcp_mem = 30000000 30000000 30000000
net.ipv4.tcp_rmem = 30000000 30000000 30000000
net.ipv4.tcp_wmem = 30000000 30000000 30000000
net.netfilter.nf_conntrack_max=1048576
Všeobecně bylo uděláno vše, co se dalo udělat s trochou krve. Již jsme začali přemýšlet o nákupu druhého nebo třetího serveru a nastavení balancování.
Ale jednoho večera jsme se v rozhovoru s q4x2 hádali, že ne všechny platformy jsou stejně užitečné. A jednoduše řečeno, přesvědčil mě, že všechny naše potíže byly způsobeny NodeJS a že je připraven vytvořit svou vlastní verzi serveru v Javě, která by „rozbila“ Node do britské vlajky. Silně jsem o tom pochyboval, ale souhlasil jsem s účastí na experimentu, a když už to bylo, rozhodl jsem se zkusit něco nativního. Úsvit nové éry
Než se server Node stačil zaradovat ze dvou nových jader, q4x2 spustil svůj Java server. Kód mi připomněl úplně první verzi serveru Node: vše v jednom souboru v procedurálním stylu. Postupně jsme kód dovedli do božské podoby, ale i tak bylo jasné (po zbavení se dětských boláků), o kolik rychlejší je tato možnost Node. Co se týče zátěže CPU – asi čtyřnásobek. Během špičkových hodin, při ~500 žádostech/s, je jedno jádro používáno hlavním procesem Java. Pro verzi Node na čtyřjádru byla taková zátěž nedosažitelná a na šestijádru byla velmi blízko limitu. Boj proti Wargaming API
Druhým největším problémem po samotném výkonu serveru, vždy jsme měli aktualizace statistik hráčů. Všichni naši uživatelé ze zřejmých důvodů věnují tak či onak pozornost statistikám her a většina z nich chce, aby byly tyto statistiky aktualizovány co nejčastěji (ideálně v reálném čase). A na cestě k vyřešení tohoto problému jsme vždy měli WG API. Nebo spíše jeho omezení.
Naštěstí je nyní možné na takové zázraky posílat hlášení o chybách. Dříve byla jediná odpověď: nemáte povoleno používat cizí ID aplikace (?source_token=Intellect_Soft-WoT_Mobile-unofficial_stats). To znamená, že pomalu, ale jistě začaly změny k lepšímu. Byli jsme bráni vážně. Takže čekáme, doufáme a věříme!
Pokusem a omylem byl nalezen recept na relativně stabilní práci: požadavek na 20 hráčů každé 2 vteřiny. Ano, vrátilo nás to na 10 hráčů/s. Vzhledem k nedostatečnosti této hodnoty byla období aktualizace pro uživatele našeho modu a pro všechny ostatní odlišena.
Aktualizujeme uživatele 3-4krát častěji. Například nyní uživatelé vstupují do fronty aktualizací po 3 a zbytek - 11 dní po předchozí aktualizaci.
Zde je příklad zaslaný technické podpoře WG, který ukazuje téměř dvojnásobnou nesrovnalost v hodnotách těchto dvou metod. Po malém průzkumu jsme zjistili, že údaje na nádržích, které hráč skutečně má, jsou správné. Nesprávné jsou pouze údaje o nádržích, které tam nejsou. Pro nás to znamená, že nyní musíme pro každý účet zadat tři požadavky: /account/info/, /account/tanks/, /tanks/stats/. Navíc /account/tanks/ je potřeba pouze k získání aktuálního seznamu tanků a vyřazení nepotřebných z výsledků /tanks/stats/.
To vše vedlo k tomu, že nyní se rychlost aktualizace snížila na 8 účtů / sec. Doufáme, že jednoho dne budeme schopni dělat stovky/s a splní se sen mnoha uživatelů, když ne o reálném čase, tak alespoň o denních aktualizacích.
Přidat štítky starověké království
Jak jsem řekl v prvním díle, úplně první backend modu běžel na VPS, byl napsán v PHP a ukládal hráčskou základnu jako soubory v souborovém systému. Aby se zabránilo limitu 64 kB inodů (limit souborů v jednom adresáři je obvykle konfigurovatelný, ale zdálo se, že VPS má nastavení uzamčené), byla použita tříúrovňová struktura. Naděje
Po přechodu na plnohodnotný server byla neméně rychle podána další implementace, tentokrát na PHP + MySQL. Tehdy se nám zdálo, že pro náš úkol (dotazování jednoho záznamu po indexu), a dokonce běh na tak „výkonném“ hardwaru (EQ4: Intel Core i7-920, 8 GB DDR3, 2x 750 GB SATA II HDD) , můžeme použít všechny antivzory návrhu – a stále to bude fungovat. Realita jako obvykle nezklamala.
Bylo potřeba nějak získat data hráče. V té době neexistovala žádná veřejná API, takže první, co mě napadlo, bylo analyzovat stránku jako worldoftanks.ru/community/accounts/27030462-Alex . Je tu ale jeden problém: v URL stránky je kromě přezdívky i ID, které z požadavku nezískáme. Z tohoto důvodu je dalším bodem JZD stránka worldoftanks.ru/community/accounts, nebo spíše vyhledávací formulář na této stránce. Z naší aplikace odešleme jakoby požadavek AJAX, který opustil stránku vyhledávání hráčů. Jako odpověď dostáváme:
Vidíme, že nyní máme nejen id, ale i hotový odkaz. Vše se dá analyzovat.
http://worldoftanks.ru/uc/accounts//api//?source_token=Intellect_Soft-WoT_Mobile-unofficial_stats
ApiVersion se rozrostla z 1,3 na 1,7 během doby, kdy jsme ji používali, a před objevením oficiálního API. U nás nebyly žádné rozdíly. Je pravda, že problém se získáním ID hráče před odesláním požadavku na API nezmizel.renesance
Chvíle, které server nezvládl, se zpočátku stávaly pouze v pátek a sobotu večer. Postupem času tyto "momenty" všechny přibývaly a přibývaly. Bylo zřejmé, že něco není v pořádku. Naše zatížení není rekordní, server není nejslabší. Problém zhoršoval fakt, že jsme neměli zkušené PHP specialisty. Stejně tak tam nebyli žádní zkušení * nix specialisté.
První verze uzlového serveru byla zničena. Nepoužil žádné frameworky. Pouze standardní moduly jako http a mongo. Server byl hardcore procedurální kód. Mraky se stahují
Na konci roku 2012 došlo k dalšímu nárůstu aktivity uživatelů XVM a náš skvělý server přestal zvládat zátěž. Abych byl upřímný, problémy byly i dříve, ale ne tak vážné. Nyní po večerech mod spíše nefungoval, než fungoval. Jako poslední možnost jsme dokonce přišroubovali příliš zaneprázdněný modul k serveru, což nám umožnilo zpracovat tolik požadavků, kolik hardware dokázal zvládnout, a zbytek přeskočit. Monitorování ukázalo akutní nedostatek paměti pro proces mongo. Rozhodli jsme se přejít na jiný server: EX-4S (i7-2600, 32 GB DDR3, 2x3 TB SATA III HDD).
#
# Pro binární hodnoty je 0 zakázána, 1 je povolena. Viz sysctl(8) a
# sysctl.conf(5) pro více podrobností.
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq=0
# Užitečné pro ladění vícevláknových aplikací.
kernel.core_uses_pid = 1
net.ipv4.tcp_synccookies=1
kernel.msgmnb=65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
net.core.somaxconn=262144
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_tw_recycle=1
net.core.netdev_max_backlog = 10 000
net.ipv4.tcp_synccookies=1
net.ipv4.tcp_max_syn_backlog=262144
net.ipv4.tcp_max_tw_buckets=720000
net.ipv4.tcp_timestamps=1
net.ipv4.tcp_fin_timeout = 10
net.ipv4.tcp_keepalive_time=1800
net.ipv4.tcp_keepalive_probes=7
net.ipv4.tcp_keepalive_intvl=30
net.core.wmem_max = 33554432
net.core.rmem_max = 33554432
net.core.rmem_default = 8388608
net.core.wmem_default = 4194394
net.ipv4.tcp_rmem = 4096 8388608 16777216
net.ipv4.tcp_wmem = 4096 4194394 16777216
net.ipv4.tcp_fin_timeout = 15
fs.epoll.max_user_watches = 1000000
net.core.netdev_max_backlog = 100 000
net.core.optmem_max = 10000000
net.core.rmem_default = 10000000
net.core.rmem_max = 10000000
net.core.somaxconn = 1000000
net.core.wmem_default = 10000000
net.core.wmem_max = 10000000
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_synccookies=1
net.ipv4.tcp_max_syn_backlog=12000
net.ipv4.tcp_max_tw_buckets=2000000
net.ipv4.tcp_mem = 30000000 30000000 30000000
net.ipv4.tcp_rmem = 30000000 30000000 30000000
net.ipv4.tcp_wmem = 30000000 30000000 30000000
net.netfilter.nf_conntrack_max=1048576
Všeobecně bylo uděláno vše, co se dalo udělat s trochou krve. Již jsme začali přemýšlet o nákupu druhého nebo třetího serveru a nastavení balancování.
Ale jednoho večera jsme se v rozhovoru s q4x2 hádali, že ne všechny platformy jsou stejně užitečné. A jednoduše řečeno, přesvědčil mě, že všechny naše potíže byly způsobeny NodeJS a že je připraven vytvořit svou vlastní verzi serveru v Javě, která by „rozbila“ Node do britské vlajky. Silně jsem o tom pochyboval, ale souhlasil jsem s účastí na experimentu, a když už to bylo, rozhodl jsem se zkusit něco nativního. Úsvit nové éry
Než se server Node stačil zaradovat ze dvou nových jader, q4x2 spustil svůj Java server. Kód mi připomněl úplně první verzi serveru Node: vše v jednom souboru v procedurálním stylu. Postupně jsme kód dovedli do božské podoby, ale i tak bylo jasné (po zbavení se dětských boláků), o kolik rychlejší je tato možnost Node. Co se týče zátěže CPU – asi čtyřnásobek. Během špičkových hodin, při ~500 žádostech/s, je jedno jádro používáno hlavním procesem Java. Pro verzi Node na čtyřjádru byla taková zátěž nedosažitelná a na šestijádru byla velmi blízko limitu. Boj proti Wargaming API
Druhým největším problémem po samotném výkonu serveru, vždy jsme měli aktualizace statistik hráčů. Všichni naši uživatelé ze zřejmých důvodů věnují tak či onak pozornost statistikám her a většina z nich chce, aby byly tyto statistiky aktualizovány co nejčastěji (ideálně v reálném čase). A na cestě k vyřešení tohoto problému jsme vždy měli WG API. Nebo spíše jeho omezení.
Naštěstí je nyní možné na takové zázraky posílat hlášení o chybách. Dříve byla jediná odpověď: nemáte povoleno používat cizí ID aplikace (?source_token=Intellect_Soft-WoT_Mobile-unofficial_stats). To znamená, že pomalu, ale jistě začaly změny k lepšímu. Byli jsme bráni vážně. Takže čekáme, doufáme a věříme!
Pokusem a omylem byl nalezen recept na relativně stabilní práci: požadavek na 20 hráčů každé 2 vteřiny. Ano, vrátilo nás to na 10 hráčů/s. Vzhledem k nedostatečnosti této hodnoty byla období aktualizace pro uživatele našeho modu a pro všechny ostatní odlišena.
Aktualizujeme uživatele 3-4krát častěji. Například nyní uživatelé vstupují do fronty aktualizací po 3 a zbytek - 11 dní po předchozí aktualizaci.
Zde je příklad zaslaný technické podpoře WG, který ukazuje téměř dvojnásobnou nesrovnalost v hodnotách těchto dvou metod. Po malém průzkumu jsme zjistili, že údaje na nádržích, které hráč skutečně má, jsou správné. Nesprávné jsou pouze údaje o nádržích, které tam nejsou. Pro nás to znamená, že nyní musíme pro každý účet zadat tři požadavky: /account/info/, /account/tanks/, /tanks/stats/. Navíc /account/tanks/ je potřeba pouze k získání aktuálního seznamu tanků a vyřazení nepotřebných z výsledků /tanks/stats/.
To vše vedlo k tomu, že nyní se rychlost aktualizace snížila na 8 účtů / sec. Doufáme, že jednoho dne budeme schopni dělat stovky/s a splní se sen mnoha uživatelů, když ne o reálném čase, tak alespoň o denních aktualizacích.Teorie fungování modů
Jak nainstalovat mody ve World of Tanks?
Odinstalování modulů World of Tanks
Jaké jsou úpravy
Jak nainstalovat mody na world of tanks
Strategie krok za krokem, jak nainstalovat mody na World of tanks
Jak nainstalovat mody na wot: zlepšit zrak
Zlepšení zvuku
co je móda?
Jaké jsou mody pro World of Tanks o tancích a jak je nainstalovat?
1. Schéma instalace modu pro World of Tanks.
2. Jak nainstalovat zvukový mod pro World of Tanks?
Na netu je ještě jeden typ modů, které mohou hráči měnit – audio. Pokud vás omrzely standardní zvuky výstřelů nebo hluk housenek, tyto změny jsou přesně to, co potřebujete.
3. Jaké jsou nejoblíbenější tankové mody?
Jedná se o mody pro tanky pro změnu vizualizace během bitvy. Balíčky nebo jednotlivé mody – co je lepší?
Nejlepší mody pro World of Tanks o tancích a herním prostředí: TOP-10
Po všeobecném seznámení profiltrujme síť a vyberme ty nejlepší mody v různých směrech, které dokážou udělat herní proces nejpohodlnějším, a to jak pro začátečníka, tak pro profesionálního tankistu.
1) ZAMIŘTE „DAMOKLŮV MEČ“.
2) POŠKOZENÍ PANELU OD LOCASTANU.
3) BOJOVÉ ROZHRANÍ Z-MOD OD MARSOFF.
4) CHYTRÁ MINIMAPA PRO SVĚT TANKŮ Z LOCASTANU.
5) SKINY ESTHET OD SERGEY EMETS PRO WORLD OF TANKS.
6) MOD ZMĚNIT HANGARY STISKNUTÍM TLAČÍTKA PŘÍMO V HANGARU.
7) WOTLOGGER3 PRO SVĚT TANKŮ.
8) DEER/XVM PRO SVĚT TANKŮ.
9) ZAMĚŘTE "STAPLE" PRO SVĚT TANKŮ.
10) PROJEKT WOT-MOD - MOD MANAGER.
Jaký balíček pro World of Tanks vybrat?
Srovnávací tabulka 3 nejlepších modů na netu.
№
Móda od AMWAY921 Móda od JOVE (JOVE) Móda od PROTANKI
1.
eXtended Visualization Mod - rozšířené markery, poškození zpětným úderem, úprava zajetí základny a protokol poškození. Zaměřovač Super Jova. Standardní rozsah s časovačem opětovného načtení.
2.
Automatická detekce aktuálního pohledu na nádrž. Průhledné zatmění v režimu odstřelovače. "Jovova volba" - OverCross. Minimalistický zaměřovač založený na výchozím zaměřovacím kříži hry.
3.
Náhrada standardních zvuků hry: „Call“, když jsou moduly kriticky poškozené, a zvuk, když je spuštěn perk „6th Sense“. Různé panely poškození. "MathMod MeltyMap". Mod rozhraní vyvinutý hráči z EU clusteru.
4.
Vylepšený ukazatel směru útoku. Inteligentní minimapy, jak v XVM, tak v alternativních. "Commander Camera" - mod pro maximální vzdálenost kamery v arkádovém režimu.
5
Vylepšený indikátor počtu střel. Žárovky "Šestý smysl" + hlasové hraní pro ně. "Disable sway" - deaktivuje pohyb kamery v odstřelovacím režimu.
6.
Prodlužte dobu zobrazení „žárovky“, když se spustí perk „6. smysl“. Různé hlasové projevy. Informace o respawnu při načítání do bitvy. Místo „nápovědy“ v načítací obrazovce.
7.
Zobrazení samostatné značky pro TT10 na minimapě. informativní značky. Můžete změnit chování kamery - mod pro deaktivaci efektů při poškození.
8.
SafeShot: Zabraňuje střelbě na nově zničené tanky. Zoom mod. Zaměřovač serveru - tento mod ukazuje, kam směřuje pohled na váš tank podle herního serveru.
9.
Odstranění kamufláží, log a nápisů na tancích. Průhledné maskovací kůže a bílé mrtvoly tanků. Rozšířená statistika. Mod pro zobrazení vašich celkových výsledků za aktuální herní relaci.
10.
Mířidla s pokročilými funkcemi. Zvětšený rozsah výhledu na mapách s mlhou. Značky XVM nad vozidly nahrazují standardní značky tanků informativnějšími.
11.
Vlastní panely poškození: Standardní panel poškození a vlastní panel poškození. Statistika relace. "Povolit tankový karusel" - několik modů pro přizpůsobení seznamu tanků v hangáru.
12.
Zakázat blikání a blikání obrazu při poškození. Wot Replays Manager je program pro práci s přehráváním. Horizontální úhly. Nepostradatelný mod pro tanky bez věže nebo s omezenou rotací.
13.
Elevační úhly pro Art-SPG a Fri-SPG. Nejlepší pancéřová kalkulačka s přihlédnutím k úhlu sklonu střely. Informační panel vybraného cíle. Mod zobrazuje základní informace o soupeřově tanku.
14.
Zoom: příkaz kamery s možností deaktivace dynamických efektů kamery. WoT Tweaker je program pro zvýšení FPS vypnutím různých efektů. Sudy s nepřáteli na minimapě.
15.
NoScroll: Sniper rozsah pouze po stisknutí "Shift" Směry nepřátelských sudů na minimapě. Značka směru poškození.
16.
ZoomX: vícepolohový odstřelovací dalekohled (x2, x4, x8, x16). Kruh pro střelbu invis z křoví. Kalkulačka hodnocení v bitvě.
17.
Odstranění stínování v odstřelovacím dalekohledu. Modní bílé mrtvoly tanků a housenek. Upozorněte spojence na světlo.
18.
Podrobné statistiky pro relaci na serveru. Vylepšený x25 zoom v dalekohledu odstřelovače. Bílé tanky. Podobně jako u bílých vozů pomáhá „dostat“ protivníky zpoza krytu.
19.
Barevné zprávy o výsledcích bitvy. HP tanky v uších (ve 2 verzích). Bílé sestřelené housenky. Mod jasně ukazuje stav podvozku protivníků nebo spojenců.