Cum se creează modificări pentru World of Tanks. Cum se instalează mod-uri pentru rezervoare - instrucțiuni pas cu pas Pe ce mod-uri pentru wot sunt scrise

O poveste despre crearea modificării XVM (eXtended Visualization Mod) pentru jocul World of Tanks. În a doua parte, veți găsi o descriere a istoriei dezvoltării părții server a modului.

regat antic

După cum am spus în prima parte, primul backend al modului a rulat pe un VPS, a fost scris în PHP și a stocat baza playerului ca fișiere în sistemul de fișiere. Pentru a evita limita de 64K inode (limita fișierelor dintr-un director este de obicei configurabilă, dar acel VPS părea să aibă setarea blocată), a fost folosită o structură pe trei niveluri.

Primele două litere ale poreclei jucătorului au devenit numele primului director din rădăcina bazei de date. Următoarele două litere sunt numele directorului imbricat în el. Și deja în el existau fișiere simple cu datele jucătorilor și nume egale cu porecle.

Solicitările arătau astfel: http://domain.com/users/ .

Fiecare jucător a trimis propria cerere. Adică, până la 30 de cereri ar putea veni dintr-o singură bătălie. Adevărat, pe partea clientului, a fost folosită memorarea în cache a jucătorilor deja văzuți, ceea ce a redus puțin încărcarea. Apoi această cache a fost abandonată din cauza procentului extrem de scăzut de accesări aleatoriu.

În ciuda primitivității, această implementare a avut un avantaj semnificativ - chiar a funcționat pe VPS și a „tras” o sută sau două solicitări pe secundă.

Speranţă

După trecerea la un server cu drepturi depline, o altă implementare a fost depusă nu mai puțin rapid, de data aceasta pe PHP + MySQL. La acel moment, ni se părea că pentru sarcina noastră (interogarea unei înregistrări după index) și chiar rularea pe un hardware atât de „puternic” (EQ4: Intel Core i7-920, 8 GB DDR3, 2x 750 GB SATA II HDD) , putem folosi toate antimodelele de design - și va funcționa în continuare. Realitatea, ca de obicei, nu a dezamăgit.

Așadar, ce am „fermecat” acolo:

  1. Modelul de cerere, desigur, a fost lăsat așa cum este.
  2. Solicitarea a fost verificată de un program obișnuit pentru similitudinea cu o poreclă.
  3. Am căutat în baza de date această poreclă.
  4. Dacă l-au găsit și a fost actualizat nu cu mult timp în urmă, atunci l-au dat în răspuns.
  5. Dacă nu l-au găsit, sau înregistrarea era prea veche, atunci a început distracția.
Era necesar să obținem cumva datele jucătorului. La acel moment, nu existau API-uri publice, așa că primul lucru care mi-a venit în minte a fost să analizați o pagină precum worldoftanks.ru/community/accounts/27030462-Alex . Dar există o problemă: în URL-ul paginii, pe lângă porecla, există și un ID, pe care nu îl putem obține din cerere. Din această cauză, următorul punct al fermei colective este pagina worldoftanks.ru/community/accounts sau, mai degrabă, formularul de căutare de pe această pagină. Trimitem din aplicația noastră, parcă, o solicitare AJAX care a părăsit pagina de căutare a jucătorilor. Ca răspuns obținem:

Request_data: ( echo: 0 filtered_count: 210846 articole: [ abreviere: "", account_url: "/community/accounts/27030462-Alex/", bătălii: 3737, clan_url: "", exp: 636853, id: 2703 name:04 „Alex”, câștigă: 1686 ], …. )
Vedem că acum avem nu doar un id, ci și un link gata făcut. Totul poate fi analizat.

Din fericire, cam în aceeași perioadă a apărut și aplicația mobilă World of Tanks Assistant, de la Wargaming. Aplicația a afișat destul de mult statisticile oricărui jucător. Oameni buni au făcut cercetări și au aflat protocolul de schimb.

Datele au fost încărcate pe:
http://worldoftanks.ru/uc/accounts//api//?source_token=Intellect_Soft-WoT_Mobile-unofficial_stats
ApiVersion a crescut de la 1.3 la 1.7 în timpul în care l-am folosit și înainte de apariția API-ului oficial. Nu au existat diferențe pentru noi. Adevărat, problema obținerii player-ului înainte de a face o solicitare către API nu a dispărut.

Și da, dacă cineva nu a înțeles încă: solicitarea datelor jucătorului a avut loc chiar în timpul procesării cererii clientului.

Această capodopera de inginerie a funcționat constant sub o încărcătură de 200-300 de solicitări/secundă, ceea ce a fost doar puțin mai mult decât prima versiune, care a funcționat pe fișiere statice. Când sarcina a crescut, ne-am odihnit pe procesor.

Renaştere

La început, momentele în care serverul nu a putut face față s-au întâmplat doar vineri și sâmbătă seara. De-a lungul timpului, toate aceste „momente” au crescut și au crescut. A devenit evident că ceva nu era în regulă. Sarcina noastră nu este un record, serverul nu este cel mai slab. Problema a fost agravată de faptul că nu aveam specialiști PHP cu experiență. De asemenea, nu existau specialiști * nix cu experiență.

S-a așezat să se gândească. Ne-am gândit la următoarele:

  1. Cel mai important, am început să îmbunătățim partea de client și am găsit o modalitate de a obține nu numai poreclele jucătorilor, ci și ID-urile.
  2. Optimizați cererile clienților pentru a solicita jucătorilor nu unul câte unul, ci toți deodată dintr-o luptă.
  3. Încercați pachetul elegant NodeJS + Mongo.
Prima versiune a nod-server a fost spălată. Nu a folosit niciun cadru. Doar module standard precum http și mongo. Serverul a fost un cod procedural hardcore.

Solicitările au început să arate astfel:

http://domain.com/users/ ,......

Prima opțiune a arătat rezultate încurajatoare - a atras până la 100-150 de solicitări / secundă. Cereri noi, pentru 30 de jucători, i.e. aceasta este echivalentă cu ~ 4000 de solicitări vechi per jucător. Am fost foarte impresionați de creșterea de peste 10 ori datorită schimbării tehnologice și, deoarece la acea vreme marja de siguranță era foarte solidă, am început să dezvoltăm capacitățile „statistice” ale XVM.

Încă o dată, s-au așezat să se gândească și au decis să facă ceva de genul unui serviciu REST cu următoarele metode:

Opțiunea de a dezvolta o parte de server pentru o astfel de specificație tehnică într-un stil procedural a provocat gânduri rele, așa că am decis să încercăm un alt lucru la modă: express .

Trebuie să spun că înainte nu aveam experiență cu niciun cadru MVC, dar, în ciuda acestui lucru, mi-am dat seama foarte repede și, literalmente, în două seri am făcut prima versiune de lucru. În general, spun cele mai calde cuvinte pentru a exprima dezvoltatorii pentru posibilitatea unui start rapid.

Serverul rezultat, în primul rând, a funcționat bine, iar în al doilea rând, codul său a fost plăcut ochiului, spre deosebire de versiunea veche.

Pe acest val de inspirație, am decis să „merc ca o plimbare!” și a adăugat mangusta la proiectul ODM. Codul a devenit și mai frumos, în timp ce făceam teste pe o mașină locală, literalmente nu puteam fi mai fericit că totul era frumos la locul său și cât de simplu și logic a funcționat totul.

Este timpul să implementezi această frumusețe pe server. Desfăşurat. Verificat - funcționează! A plecat 20 de minute.Vin, verific - nu merge. Mă uit în consolă - procesul nodului rulează. repornesc. Funcționează câteva secunde, apoi - înăbușit.

Nu o voi trage mult timp: problema era în procesor. Sub sarcina obișnuită de seară la acea vreme, varianta de cod fără mangustă a digerat în glumă această încărcătură, dar varianta cu mangustă (în ciuda toată frumusețea ei) nu a făcut-o. Din păcate, a trebuit să retrag aproape toate modificările timp de câteva zile.

Norii se adună

La sfârșitul anului 2012, a existat o nouă creștere a activității utilizatorilor XVM, iar minunatul nostru server a încetat să facă față sarcinii. Sincer să fiu, au fost probleme înainte, dar nu atât de grave. Acum, seara, modulul nu funcționa mai degrabă decât funcționează. Ca ultimă soluție, am înșurubat chiar și modulul prea ocupat pe server, ceea ce ne-a permis să procesăm câte solicitări le putea gestiona hardware-ul și să omitem restul. Monitorizarea a arătat o lipsă acută de memorie pentru procesul mongo. Am decis să ne mutăm pe un alt server: EX-4S (i7-2600, 32 GB DDR3, 2x3 TB SATA III HDD).

Ne-am mutat. Simte-te mai bine. Adevărat, nu pentru mult timp.

Imediat ce s-au întâmplat sărbătorile de iarnă, problema a apărut din nou. Cu prețul oricărui șamanism asupra codului, am reușit să aducem rata de solicitare de la 150 la 180-200 pe secundă, dar acest lucru nu a fost încă suficient. Într-una din seri, când totul era aproape întins, de dragul verificării, am comentat blocul de cod responsabil cu actualizarea jucătorilor „expirati” cu API-ul WG și... a funcționat. Și nu e rău: am primit un 240 stabil cu vârfuri de până la 260 de solicitări/sec. Câteva zile mai târziu, s-a născut un cod în care actualizatorul jucătorului a fost separat într-un proces independent separat, iar codul care interacționa direct cu clienții a adăugat doar ID-urile jucătorilor care trebuiau actualizați într-o colecție separată.

Acest upgrade ne-a durat aproximativ o lună. Și încă o dată am văzut toate aceleași probleme: seara, cererile clienților au început să fie ratate. De data aceasta ne-am lovit de IOPS. Fără să ne gândim prea mult, în martie 2013, am comandat echipamente suplimentare pentru serverul nostru: o unitate SSD de 240 GB. Atunci nu exista o linie de servere cu unități SSD preinstalate.

Ajutat! Serverul a început să tragă până la 380-400 de solicitări/sec. Timp de aproximativ jumătate de an, totul a funcționat destul de bine și nu a provocat nicio plângere specială din partea utilizatorilor. În august 2013, am trecut la noul introdus EX40-SSD, deoarece se potrivea mai bine scopurilor noastre și era mai ieftin decât EX-4S cu un SSD suplimentar.

Și la sfârșitul lui 2013... ați ghicit, am avut aceeași problemă. Mai mult, de data aceasta nu au existat soluții evidente și simple. Ultima vrăjitorie asupra codului este încheiată. Serverul este destul de bun. q4x2, care specialistul *nix, la rândul său, „a răsucit” serverul „în măsura posibilităților mele”.

Conținutul /etc/sysctl.conf pentru cei interesați

# Fișierul de configurare Kernel sysctl pentru Red Hat Linux
#
# Pentru valori binare, 0 este dezactivat, 1 este activat. Vezi sysctl(8) și
# sysctl.conf(5) pentru mai multe detalii.

# Controlează redirecționarea pachetelor IP
net.ipv4.ip_forward = 0

# Controlează verificarea rutei sursei
net.ipv4.conf.default.rp_filter = 1

# Nu acceptați rutarea sursei
net.ipv4.conf.default.accept_source_route = 0

# Controlează funcționalitatea de depanare a cererilor de sistem a nucleului
kernel.sysrq=0

# Controlează dacă dumpurile de bază vor adăuga PID-ul la numele fișierului de bază.
# Util pentru depanarea aplicațiilor cu mai multe fire.
kernel.core_uses_pid = 1

# Controlează utilizarea syncooki-urilor TCP
net.ipv4.tcp_synccookies=1

# Controlează dimensiunea maximă implicită a unei cozi de mesaje
kernel.msgmnb=65536

# Controlează dimensiunea maximă a unui mesaj, în octeți
kernel.msgmax = 65536

# Controlează dimensiunea maximă a segmentului partajat, în octeți
kernel.shmmax = 68719476736

# Controlează numărul maxim de segmente de memorie partajată, în pagini
kernel.shmall = 4294967296
net.core.somaxconn=262144
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_tw_recycle=1
net.core.netdev_max_backlog = 10000
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

fs.file-max = 5000000
net.core.netdev_max_backlog = 100000
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


În general, s-a făcut tot ce se putea face cu puțin sânge. Am început deja să ne gândim să cumpărăm un al doilea sau al treilea server și să stabilim echilibrarea.
Dar într-o seară, într-o conversație cu q4x2, am avut un argument că nu toate platformele sunt la fel de utile. Și pentru a spune simplu, m-a convins că toate necazurile noastre s-au datorat lui NodeJS și că era gata să creeze propria sa versiune a serverului în Java, care să „rupă” Node în steagul britanic. M-am îndoit puternic de acest lucru, dar am fost de acord să particip la experiment și, din moment ce așa ceva, am decis să încerc ceva nativ.

Întrucât, ca de obicei, îmi doream ceva nou, alegerea a căzut pe D și pe framework-ul vibed. În mod surprinzător, chiar și eu, care am lucrat aproape exclusiv pe JS în ultimii trei ani, am reușit să inventez relativ repede o versiune funcțională. L-am dezvoltat sub Windows. Dar când am implementat sub Centos 6.5, am avut dificultăți foarte mari în satisfacerea dependențelor. Linker a trebuit să prescrie manual lucrurile evidente.

Nu a fost posibil să depășim dificultățile până la sfârșit, așa că experimentul cu D a fost încheiat înainte de termen. Ne-a plăcut foarte mult limbajul în sine, dar până acum, din păcate, are probleme cu trusa de instrumente.

În timp ce scriam toate acestea, serverul nu putea face față seara: nu era suficient CPU. Așa că am decis să facem o altă mișcare, de data aceasta către PX90-SSD (Xeon E5-1650 v2, 64 GB ECC DDR3, 2 x 240 GB SSD).

Zorii unei noi ere

Înainte ca serverul Node să aibă timp să se bucure de cele două noi nuclee, q4x2 și-a lansat serverul Java. Codul mi-a amintit de prima versiune a serverului Node: totul într-un singur fișier într-un stil procedural. Am adus treptat codul într-o formă divină, dar încă era clar (după ce am scăpat de răni din copilărie) cât de rapidă este această opțiune Node. În ceea ce privește încărcarea procesorului - de aproximativ patru ori. În timpul orelor de vârf, la ~500 de solicitări/sec, un nucleu este utilizat de procesul principal java. Pentru versiunea Node pe un quad-core, o astfel de încărcare era de neatins, iar pe un șase nuclee era foarte aproape de limită.

Chiar în acest moment, am decis să introducem activarea statisticilor pe site-ul nostru. Acest lucru însemna că token-urile de acces primite de clienți vor străbate rețeaua cu fiecare solicitare. Pentru a le securiza puțin, serverul a fost găzduit în spatele HTTPS. Și apoi ne aștepta o altă surpriză.

Puțin mai sus, am menționat rănile copiilor din codul java. Între timp, le-am tratat câteva săptămâni, codul java nu a funcționat mult mai bine decât cel vechi și era foarte probabil ca serverul cu șase capete să nu tragă proxy-ul + https.

Pentru a nu aștepta o minune, imediat a fost achiziționat un alt server: EX40 (i7-4770, 32 GB DDR3, 2 x 2 TB HDD) pentru a fi un frontend și pull https. Nemții au făcut un server, dar cu o mică problemă, așa cum s-a dovedit mai târziu: i s-a atribuit un IP în intervalul 5.x.x.x. Am făcut un frontend pe el și totul a funcționat grozav, dar pe forum au început să se acumuleze plângeri de la oameni care nu au funcționat.

După ce am făcut puțină cercetare pe această problemă, am aflat că problema cu 5.x.x.x este un lucru cunoscut, este asociat cu o aplicație numită Hamachi. Mai mult decât atât, noile versiuni ale Hamachi au trecut la 25.x.x.x (mă întreb dacă acești băieți practic nu vor să folosească rețelele private în propriile lor scopuri?), dar asta nu ne-a ușurat cu nimic. A trebuit să mă întorc la serverul principal, deoarece până atunci el putea deja să se ocupe singur de întreaga noastră economie și chiar și cu o aprovizionare solidă.

În total, momentan avem întregul backend: codul nostru + baza de date rulează pe același server. Mediile de încărcare rareori depășesc unul. Dar acum am conceput o altă reorganizare a fermei de servere cu transferul bazei de date pe un server separat. Unul dintre motive: Mongo are un moment foarte greu cu o pornire la rece - după o repornire, nu trage nici măcar jumătate din sarcina pe care o trage după încălzire (din cauza asta, apropo, au fost probleme pe 3 august -4). Transferarea pe un server separat vă va permite să nu îl atingeți. Un alt motiv este că avem câteva idei pentru dezvoltarea modului, care va necesita o creștere semnificativă a dimensiunii bazei de date. Actualul 2*240GB poate să nu fie suficient. În general, putem spune că problema backend-ului din partea noastră este rezolvată. Celălalt rămâne.

Combaterea API-ului Wargaming

A doua cea mai mare problemă după performanța serverului în sine, am avut mereu actualizări privind statisticile jucătorilor. Din motive evidente, toți utilizatorii noștri acordă atenție statisticilor de joc într-un fel sau altul, iar cei mai mulți dintre ei doresc să vadă aceste statistici actualizate cât mai des posibil (ideal, în timp real). Și pe drumul spre rezolvarea acestei probleme, am avut întotdeauna WG API. Sau, mai degrabă, limitările sale.

Cea mai importantă problemă pentru noi este limita numărului de solicitări de la un IP. Într-o perioadă în care încă nu exista un API public, limita per IP era de aproximativ 10 solicitări/sec. Am fost, ca să spunem ușor, nu de ajuns. Prin urmare, au ieșit cât de bine au putut: aveam mai multe servere proxy prin care erau trimise solicitări API.

Odată cu apariția API-ului, a devenit puțin mai ușor în ceea ce privește limita disponibilă. Aplicației noastre i s-a atribuit un statut premium, ceea ce, teoretic, ne oferă dreptul de a face 50 de solicitări/sec. Și apoi DAR începe:

  1. În versiunea veche (nu este un API public, date pentru o aplicație mobilă), toate datele de care aveam nevoie pentru fiecare jucător au fost colectate într-o singură metodă. Și odată cu apariția API-ului public, datele au fost redistribuite după diferite metode și a trebuit să facem câte două solicitări pentru fiecare jucător (/account/info/ , /account/tanks/).
  2. Aceste metode acceptă interogarea mai multor jucători simultan (până la 100). Adică, în teorie, am putea solicita până la 5000 de jucători/sec. Dar, în realitate, o solicitare către /account/tanks/ pentru 100 de jucători a durat ~45 de secunde, iar dacă sunt trimise prea des, încep să cadă în masă.
    Prin încercare și eroare a fost găsită o rețetă pentru o muncă relativ stabilă: o solicitare pentru 20 de jucători la fiecare 2 secunde. Da, ne-a dat înapoi la 10 jucători/sec. Datorită insuficienței acestei valori, perioadele de actualizare au fost diferențiate pentru utilizatorii modului nostru și pentru toți ceilalți.
    Actualizăm utilizatorii de 3-4 ori mai des. De exemplu, acum utilizatorii intră în coada de actualizare după 3, iar restul - la 11 zile după actualizarea anterioară.
  3. După ceva timp, WG a lansat o nouă metodă - /tanks/stats/ . Metoda a oferit statistici mult mai detaliate despre tancurile jucătorului în comparație cu /account/tanks/ și, desigur, am vrut să o obținem. Dar! Această metodă nu acceptă interogarea unei liste de jucători. Unul singur. Și asta nu a fost cel mai rău: mai rău, această metodă a eliberat tancuri inexistente pentru unii jucători.
    Iată un exemplu trimis suportului tehnic WG, care arată o discrepanță în citirile celor două metode de aproape un factor de doi. După puțină cercetare, am aflat că citirile de pe tancurile pe care le are de fapt jucătorul sunt corecte. Numai indicațiile pentru rezervoarele care nu există sunt incorecte. Pentru noi, asta înseamnă că acum trebuie să facem trei solicitări pentru fiecare cont: /account/info/, /account/tanks/, /tanks/stats/. Mai mult, /account/tanks/ este necesar doar pentru a obține lista curentă de rezervoare și pentru a le elimina pe cele inutile din rezultatele /tanks/stats/.
    Toate acestea au dus la faptul că acum viteza de actualizare a scăzut la 8 conturi/sec. Sperăm că într-o zi vom putea face sute/sec, iar visul multor utilizatori se va împlini, dacă nu despre timp real, atunci măcar despre actualizările zilnice.
  4. Au existat și câteva erori mici: de exemplu, după împărțirea tancului german PzIV în modificările Pz_IV_AusfD, Pz_IV_AusfH și Pz_IV_AusfA, ID-urile acestor tancuri s-au schimbat în mod natural. Dar pentru o lungă perioadă de timp, API-ul a dat vechiul ID=17 pentru unele conturi, corespunzător PzIV-ului nepartajat. Și metoda /encyclopedia/tanks/, din care aflăm nivelul și tipul unui rezervor, acest ID nu mai conținea, ceea ce ducea uneori la rezultate amuzante la calcularea ratingurilor.
Din fericire, acum este posibil să trimiteți rapoarte de eroare la astfel de miracole. Anterior, singurul răspuns a fost: nu aveți voie să utilizați ID-ul aplicației altcuiva (?source_token=Intellect_Soft-WoT_Mobile-unofficial_stats). Adică încet, dar sigur, au început schimbări în bine. Am fost luati in serios. Așa că așteptăm, sperăm și credem!

Aceasta încheie a doua parte a poveștii. Urmează o altă parte, care va spune despre cel mai interesant lucru - dezvoltarea părții client a modificării.

Etichete:

  • Joc de război
  • wargaming.net
  • XVM
  • măsurator de reni
  • dezvoltator de jocuri
  • dezvoltarea jocului
  • programare
  • wargaming_inside
Adaugă etichete

O poveste despre crearea modificării XVM (eXtended Visualization Mod) pentru jocul World of Tanks. În a doua parte, veți găsi o descriere a istoriei dezvoltării părții server a modului.

regat antic

După cum am spus în prima parte, primul backend al modului a rulat pe un VPS, a fost scris în PHP și a stocat baza playerului ca fișiere în sistemul de fișiere. Pentru a evita limita de 64K inode (limita fișierelor dintr-un director este de obicei configurabilă, dar acel VPS părea să aibă setarea blocată), a fost folosită o structură pe trei niveluri.

Primele două litere ale poreclei jucătorului au devenit numele primului director din rădăcina bazei de date. Următoarele două litere sunt numele directorului imbricat în el. Și deja în el existau fișiere simple cu datele jucătorilor și nume egale cu porecle.

Solicitările arătau astfel: http://domain.com/users/ .

Fiecare jucător a trimis propria cerere. Adică, până la 30 de cereri ar putea veni dintr-o singură bătălie. Adevărat, pe partea clientului, a fost folosită memorarea în cache a jucătorilor deja văzuți, ceea ce a redus puțin încărcarea. Apoi această cache a fost abandonată din cauza procentului extrem de scăzut de accesări aleatoriu.

În ciuda primitivității, această implementare a avut un avantaj semnificativ - chiar a funcționat pe VPS și a „tras” o sută sau două solicitări pe secundă.

Speranţă

După trecerea la un server cu drepturi depline, o altă implementare a fost depusă nu mai puțin rapid, de data aceasta pe PHP + MySQL. La acel moment, ni se părea că pentru sarcina noastră (interogarea unei înregistrări după index) și chiar rularea pe un hardware atât de „puternic” (EQ4: Intel Core i7-920, 8 GB DDR3, 2x 750 GB SATA II HDD) , putem folosi toate antimodelele de design - și va funcționa în continuare. Realitatea, ca de obicei, nu a dezamăgit.

Așadar, ce am „fermecat” acolo:

  1. Modelul de cerere, desigur, a fost lăsat așa cum este.
  2. Solicitarea a fost verificată de un program obișnuit pentru similitudinea cu o poreclă.
  3. Am căutat în baza de date această poreclă.
  4. Dacă l-au găsit și a fost actualizat nu cu mult timp în urmă, atunci l-au dat în răspuns.
  5. Dacă nu l-au găsit, sau înregistrarea era prea veche, atunci a început distracția.
Era necesar să obținem cumva datele jucătorului. La acel moment, nu existau API-uri publice, așa că primul lucru care mi-a venit în minte a fost să analizați o pagină precum worldoftanks.ru/community/accounts/27030462-Alex . Dar există o problemă: în URL-ul paginii, pe lângă porecla, există și un ID, pe care nu îl putem obține din cerere. Din această cauză, următorul punct al fermei colective este pagina worldoftanks.ru/community/accounts sau, mai degrabă, formularul de căutare de pe această pagină. Trimitem din aplicația noastră, parcă, o solicitare AJAX care a părăsit pagina de căutare a jucătorilor. Ca răspuns obținem:

Request_data: ( echo: 0 filtered_count: 210846 articole: [ abreviere: "", account_url: "/community/accounts/27030462-Alex/", bătălii: 3737, clan_url: "", exp: 636853, id: 2703 name:04 „Alex”, câștigă: 1686 ], …. )
Vedem că acum avem nu doar un id, ci și un link gata făcut. Totul poate fi analizat.

Din fericire, cam în aceeași perioadă a apărut și aplicația mobilă World of Tanks Assistant, de la Wargaming. Aplicația a afișat destul de mult statisticile oricărui jucător. Oameni buni au făcut cercetări și au aflat protocolul de schimb.

Datele au fost încărcate pe:
http://worldoftanks.ru/uc/accounts//api//?source_token=Intellect_Soft-WoT_Mobile-unofficial_stats
ApiVersion a crescut de la 1.3 la 1.7 în timpul în care l-am folosit și înainte de apariția API-ului oficial. Nu au existat diferențe pentru noi. Adevărat, problema obținerii player-ului înainte de a face o solicitare către API nu a dispărut.

Și da, dacă cineva nu a înțeles încă: solicitarea datelor jucătorului a avut loc chiar în timpul procesării cererii clientului.

Această capodopera de inginerie a funcționat constant sub o încărcătură de 200-300 de solicitări/secundă, ceea ce a fost doar puțin mai mult decât prima versiune, care a funcționat pe fișiere statice. Când sarcina a crescut, ne-am odihnit pe procesor.

Renaştere

La început, momentele în care serverul nu a putut face față s-au întâmplat doar vineri și sâmbătă seara. De-a lungul timpului, toate aceste „momente” au crescut și au crescut. A devenit evident că ceva nu era în regulă. Sarcina noastră nu este un record, serverul nu este cel mai slab. Problema a fost agravată de faptul că nu aveam specialiști PHP cu experiență. De asemenea, nu existau specialiști * nix cu experiență.

S-a așezat să se gândească. Ne-am gândit la următoarele:

  1. Cel mai important, am început să îmbunătățim partea de client și am găsit o modalitate de a obține nu numai poreclele jucătorilor, ci și ID-urile.
  2. Optimizați cererile clienților pentru a solicita jucătorilor nu unul câte unul, ci toți deodată dintr-o luptă.
  3. Încercați pachetul elegant NodeJS + Mongo.
Prima versiune a nod-server a fost spălată. Nu a folosit niciun cadru. Doar module standard precum http și mongo. Serverul a fost un cod procedural hardcore.

Solicitările au început să arate astfel:

http://domain.com/users/ ,......

Prima opțiune a arătat rezultate încurajatoare - a atras până la 100-150 de solicitări / secundă. Cereri noi, pentru 30 de jucători, i.e. aceasta este echivalentă cu ~ 4000 de solicitări vechi per jucător. Am fost foarte impresionați de creșterea de peste 10 ori datorită schimbării tehnologice și, deoarece la acea vreme marja de siguranță era foarte solidă, am început să dezvoltăm capacitățile „statistice” ale XVM.

Încă o dată, s-au așezat să se gândească și au decis să facă ceva de genul unui serviciu REST cu următoarele metode:

Opțiunea de a dezvolta o parte de server pentru o astfel de specificație tehnică într-un stil procedural a provocat gânduri rele, așa că am decis să încercăm un alt lucru la modă: express .

Trebuie să spun că înainte nu aveam experiență cu niciun cadru MVC, dar, în ciuda acestui lucru, mi-am dat seama foarte repede și, literalmente, în două seri am făcut prima versiune de lucru. În general, spun cele mai calde cuvinte pentru a exprima dezvoltatorii pentru posibilitatea unui start rapid.

Serverul rezultat, în primul rând, a funcționat bine, iar în al doilea rând, codul său a fost plăcut ochiului, spre deosebire de versiunea veche.

Pe acest val de inspirație, am decis să „merc ca o plimbare!” și a adăugat mangusta la proiectul ODM. Codul a devenit și mai frumos, în timp ce făceam teste pe o mașină locală, literalmente nu puteam fi mai fericit că totul era frumos la locul său și cât de simplu și logic a funcționat totul.

Este timpul să implementezi această frumusețe pe server. Desfăşurat. Verificat - funcționează! A plecat 20 de minute.Vin, verific - nu merge. Mă uit în consolă - procesul nodului rulează. repornesc. Funcționează câteva secunde, apoi - înăbușit.

Nu o voi trage mult timp: problema era în procesor. Sub sarcina obișnuită de seară la acea vreme, varianta de cod fără mangustă a digerat în glumă această încărcătură, dar varianta cu mangustă (în ciuda toată frumusețea ei) nu a făcut-o. Din păcate, a trebuit să retrag aproape toate modificările timp de câteva zile.

Norii se adună

La sfârșitul anului 2012, a existat o nouă creștere a activității utilizatorilor XVM, iar minunatul nostru server a încetat să facă față sarcinii. Sincer să fiu, au fost probleme înainte, dar nu atât de grave. Acum, seara, modulul nu funcționa mai degrabă decât funcționează. Ca ultimă soluție, am înșurubat chiar și modulul prea ocupat pe server, ceea ce ne-a permis să procesăm câte solicitări le putea gestiona hardware-ul și să omitem restul. Monitorizarea a arătat o lipsă acută de memorie pentru procesul mongo. Am decis să ne mutăm pe un alt server: EX-4S (i7-2600, 32 GB DDR3, 2x3 TB SATA III HDD).

Ne-am mutat. Simte-te mai bine. Adevărat, nu pentru mult timp.

Imediat ce s-au întâmplat sărbătorile de iarnă, problema a apărut din nou. Cu prețul oricărui șamanism asupra codului, am reușit să aducem rata de solicitare de la 150 la 180-200 pe secundă, dar acest lucru nu a fost încă suficient. Într-una din seri, când totul era aproape întins, de dragul verificării, am comentat blocul de cod responsabil cu actualizarea jucătorilor „expirati” cu API-ul WG și... a funcționat. Și nu e rău: am primit un 240 stabil cu vârfuri de până la 260 de solicitări/sec. Câteva zile mai târziu, s-a născut un cod în care actualizatorul jucătorului a fost separat într-un proces independent separat, iar codul care interacționa direct cu clienții a adăugat doar ID-urile jucătorilor care trebuiau actualizați într-o colecție separată.

Acest upgrade ne-a durat aproximativ o lună. Și încă o dată am văzut toate aceleași probleme: seara, cererile clienților au început să fie ratate. De data aceasta ne-am lovit de IOPS. Fără să ne gândim prea mult, în martie 2013, am comandat echipamente suplimentare pentru serverul nostru: o unitate SSD de 240 GB. Atunci nu exista o linie de servere cu unități SSD preinstalate.

Ajutat! Serverul a început să tragă până la 380-400 de solicitări/sec. Timp de aproximativ jumătate de an, totul a funcționat destul de bine și nu a provocat nicio plângere specială din partea utilizatorilor. În august 2013, am trecut la noul introdus EX40-SSD, deoarece se potrivea mai bine scopurilor noastre și era mai ieftin decât EX-4S cu un SSD suplimentar.

Și la sfârșitul lui 2013... ați ghicit, am avut aceeași problemă. Mai mult, de data aceasta nu au existat soluții evidente și simple. Ultima vrăjitorie asupra codului este încheiată. Serverul este destul de bun. q4x2, care specialistul *nix, la rândul său, „a răsucit” serverul „în măsura posibilităților mele”.

Conținutul /etc/sysctl.conf pentru cei interesați

# Fișierul de configurare Kernel sysctl pentru Red Hat Linux
#
# Pentru valori binare, 0 este dezactivat, 1 este activat. Vezi sysctl(8) și
# sysctl.conf(5) pentru mai multe detalii.

# Controlează redirecționarea pachetelor IP
net.ipv4.ip_forward = 0

# Controlează verificarea rutei sursei
net.ipv4.conf.default.rp_filter = 1

# Nu acceptați rutarea sursei
net.ipv4.conf.default.accept_source_route = 0

# Controlează funcționalitatea de depanare a cererilor de sistem a nucleului
kernel.sysrq=0

# Controlează dacă dumpurile de bază vor adăuga PID-ul la numele fișierului de bază.
# Util pentru depanarea aplicațiilor cu mai multe fire.
kernel.core_uses_pid = 1

# Controlează utilizarea syncooki-urilor TCP
net.ipv4.tcp_synccookies=1

# Controlează dimensiunea maximă implicită a unei cozi de mesaje
kernel.msgmnb=65536

# Controlează dimensiunea maximă a unui mesaj, în octeți
kernel.msgmax = 65536

# Controlează dimensiunea maximă a segmentului partajat, în octeți
kernel.shmmax = 68719476736

# Controlează numărul maxim de segmente de memorie partajată, în pagini
kernel.shmall = 4294967296
net.core.somaxconn=262144
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_tw_recycle=1
net.core.netdev_max_backlog = 10000
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

fs.file-max = 5000000
net.core.netdev_max_backlog = 100000
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


În general, s-a făcut tot ce se putea face cu puțin sânge. Am început deja să ne gândim să cumpărăm un al doilea sau al treilea server și să stabilim echilibrarea.
Dar într-o seară, într-o conversație cu q4x2, am avut un argument că nu toate platformele sunt la fel de utile. Și pentru a spune simplu, m-a convins că toate necazurile noastre s-au datorat lui NodeJS și că era gata să creeze propria sa versiune a serverului în Java, care să „rupă” Node în steagul britanic. M-am îndoit puternic de acest lucru, dar am fost de acord să particip la experiment și, din moment ce așa ceva, am decis să încerc ceva nativ.

Întrucât, ca de obicei, îmi doream ceva nou, alegerea a căzut pe D și pe framework-ul vibed. În mod surprinzător, chiar și eu, care am lucrat aproape exclusiv pe JS în ultimii trei ani, am reușit să inventez relativ repede o versiune funcțională. L-am dezvoltat sub Windows. Dar când am implementat sub Centos 6.5, am avut dificultăți foarte mari în satisfacerea dependențelor. Linker a trebuit să prescrie manual lucrurile evidente.

Nu a fost posibil să depășim dificultățile până la sfârșit, așa că experimentul cu D a fost încheiat înainte de termen. Ne-a plăcut foarte mult limbajul în sine, dar până acum, din păcate, are probleme cu trusa de instrumente.

În timp ce scriam toate acestea, serverul nu putea face față seara: nu era suficient CPU. Așa că am decis să facem o altă mișcare, de data aceasta către PX90-SSD (Xeon E5-1650 v2, 64 GB ECC DDR3, 2 x 240 GB SSD).

Zorii unei noi ere

Înainte ca serverul Node să aibă timp să se bucure de cele două noi nuclee, q4x2 și-a lansat serverul Java. Codul mi-a amintit de prima versiune a serverului Node: totul într-un singur fișier într-un stil procedural. Am adus treptat codul într-o formă divină, dar încă era clar (după ce am scăpat de răni din copilărie) cât de rapidă este această opțiune Node. În ceea ce privește încărcarea procesorului - de aproximativ patru ori. În timpul orelor de vârf, la ~500 de solicitări/sec, un nucleu este utilizat de procesul principal java. Pentru versiunea Node pe un quad-core, o astfel de încărcare era de neatins, iar pe un șase nuclee era foarte aproape de limită.

Chiar în acest moment, am decis să introducem activarea statisticilor pe site-ul nostru. Acest lucru însemna că token-urile de acces primite de clienți vor străbate rețeaua cu fiecare solicitare. Pentru a le securiza puțin, serverul a fost găzduit în spatele HTTPS. Și apoi ne aștepta o altă surpriză.

Puțin mai sus, am menționat rănile copiilor din codul java. Între timp, le-am tratat câteva săptămâni, codul java nu a funcționat mult mai bine decât cel vechi și era foarte probabil ca serverul cu șase capete să nu tragă proxy-ul + https.

Pentru a nu aștepta o minune, imediat a fost achiziționat un alt server: EX40 (i7-4770, 32 GB DDR3, 2 x 2 TB HDD) pentru a fi un frontend și pull https. Nemții au făcut un server, dar cu o mică problemă, așa cum s-a dovedit mai târziu: i s-a atribuit un IP în intervalul 5.x.x.x. Am făcut un frontend pe el și totul a funcționat grozav, dar pe forum au început să se acumuleze plângeri de la oameni care nu au funcționat.

După ce am făcut puțină cercetare pe această problemă, am aflat că problema cu 5.x.x.x este un lucru cunoscut, este asociat cu o aplicație numită Hamachi. Mai mult decât atât, noile versiuni ale Hamachi au trecut la 25.x.x.x (mă întreb dacă acești băieți practic nu vor să folosească rețelele private în propriile lor scopuri?), dar asta nu ne-a ușurat cu nimic. A trebuit să mă întorc la serverul principal, deoarece până atunci el putea deja să se ocupe singur de întreaga noastră economie și chiar și cu o aprovizionare solidă.

În total, momentan avem întregul backend: codul nostru + baza de date rulează pe același server. Mediile de încărcare rareori depășesc unul. Dar acum am conceput o altă reorganizare a fermei de servere cu transferul bazei de date pe un server separat. Unul dintre motive: Mongo are un moment foarte greu cu o pornire la rece - după o repornire, nu trage nici măcar jumătate din sarcina pe care o trage după încălzire (din cauza asta, apropo, au fost probleme pe 3 august -4). Transferarea pe un server separat vă va permite să nu îl atingeți. Un alt motiv este că avem câteva idei pentru dezvoltarea modului, care va necesita o creștere semnificativă a dimensiunii bazei de date. Actualul 2*240GB poate să nu fie suficient. În general, putem spune că problema backend-ului din partea noastră este rezolvată. Celălalt rămâne.

Combaterea API-ului Wargaming

A doua cea mai mare problemă după performanța serverului în sine, am avut mereu actualizări privind statisticile jucătorilor. Din motive evidente, toți utilizatorii noștri acordă atenție statisticilor de joc într-un fel sau altul, iar cei mai mulți dintre ei doresc să vadă aceste statistici actualizate cât mai des posibil (ideal, în timp real). Și pe drumul spre rezolvarea acestei probleme, am avut întotdeauna WG API. Sau, mai degrabă, limitările sale.

Cea mai importantă problemă pentru noi este limita numărului de solicitări de la un IP. Într-o perioadă în care încă nu exista un API public, limita per IP era de aproximativ 10 solicitări/sec. Am fost, ca să spunem ușor, nu de ajuns. Prin urmare, au ieșit cât de bine au putut: aveam mai multe servere proxy prin care erau trimise solicitări API.

Odată cu apariția API-ului, a devenit puțin mai ușor în ceea ce privește limita disponibilă. Aplicației noastre i s-a atribuit un statut premium, ceea ce, teoretic, ne oferă dreptul de a face 50 de solicitări/sec. Și apoi DAR începe:

  1. În versiunea veche (nu este un API public, date pentru o aplicație mobilă), toate datele de care aveam nevoie pentru fiecare jucător au fost colectate într-o singură metodă. Și odată cu apariția API-ului public, datele au fost redistribuite după diferite metode și a trebuit să facem câte două solicitări pentru fiecare jucător (/account/info/ , /account/tanks/).
  2. Aceste metode acceptă interogarea mai multor jucători simultan (până la 100). Adică, în teorie, am putea solicita până la 5000 de jucători/sec. Dar, în realitate, o solicitare către /account/tanks/ pentru 100 de jucători a durat ~45 de secunde, iar dacă sunt trimise prea des, încep să cadă în masă.
    Prin încercare și eroare a fost găsită o rețetă pentru o muncă relativ stabilă: o solicitare pentru 20 de jucători la fiecare 2 secunde. Da, ne-a dat înapoi la 10 jucători/sec. Datorită insuficienței acestei valori, perioadele de actualizare au fost diferențiate pentru utilizatorii modului nostru și pentru toți ceilalți.
    Actualizăm utilizatorii de 3-4 ori mai des. De exemplu, acum utilizatorii intră în coada de actualizare după 3, iar restul - la 11 zile după actualizarea anterioară.
  3. După ceva timp, WG a lansat o nouă metodă - /tanks/stats/ . Metoda a oferit statistici mult mai detaliate despre tancurile jucătorului în comparație cu /account/tanks/ și, desigur, am vrut să o obținem. Dar! Această metodă nu acceptă interogarea unei liste de jucători. Unul singur. Și asta nu a fost cel mai rău: mai rău, această metodă a eliberat tancuri inexistente pentru unii jucători.
    Iată un exemplu trimis suportului tehnic WG, care arată o discrepanță în citirile celor două metode de aproape un factor de doi. După puțină cercetare, am aflat că citirile de pe tancurile pe care le are de fapt jucătorul sunt corecte. Numai indicațiile pentru rezervoarele care nu există sunt incorecte. Pentru noi, asta înseamnă că acum trebuie să facem trei solicitări pentru fiecare cont: /account/info/, /account/tanks/, /tanks/stats/. Mai mult, /account/tanks/ este necesar doar pentru a obține lista curentă de rezervoare și pentru a le elimina pe cele inutile din rezultatele /tanks/stats/.
    Toate acestea au dus la faptul că acum viteza de actualizare a scăzut la 8 conturi/sec. Sperăm că într-o zi vom putea face sute/sec, iar visul multor utilizatori se va împlini, dacă nu despre timp real, atunci măcar despre actualizările zilnice.
  4. Au existat și câteva erori mici: de exemplu, după împărțirea tancului german PzIV în modificările Pz_IV_AusfD, Pz_IV_AusfH și Pz_IV_AusfA, ID-urile acestor tancuri s-au schimbat în mod natural. Dar pentru o lungă perioadă de timp, API-ul a dat vechiul ID=17 pentru unele conturi, corespunzător PzIV-ului nepartajat. Și metoda /encyclopedia/tanks/, din care aflăm nivelul și tipul unui rezervor, acest ID nu mai conținea, ceea ce ducea uneori la rezultate amuzante la calcularea ratingurilor.
Din fericire, acum este posibil să trimiteți rapoarte de eroare la astfel de miracole. Anterior, singurul răspuns a fost: nu aveți voie să utilizați ID-ul aplicației altcuiva (?source_token=Intellect_Soft-WoT_Mobile-unofficial_stats). Adică încet, dar sigur, au început schimbări în bine. Am fost luati in serios. Așa că așteptăm, sperăm și credem!

Aceasta încheie a doua parte a poveștii. Urmează o altă parte, care va spune despre cel mai interesant lucru - dezvoltarea părții client a modificării.

Etichete:

Adăugați etichete de site Versiune: - Actualizat: 24 ianuarie 2018

Instalarea modurilor în jocuri poate fi o sarcină descurajantă. Dar în World of Tanks, dezvoltatorii au adăugat inițial suport pentru modificări personalizate, așa că în folderul jocului, există un folder special pentru mod-uri numit res_mods , care este responsabil pentru modificări.

Teoria cum funcționează modurile

Să ne uităm la cum funcționează toate acestea în general în Wot. În primul rând, jocul încarcă toate resursele din folderul res, care conține fișiere de joc, cum ar fi sunet, texturi, modele, scripturi și multe altele. În World of Tanks toate acestea sunt împachetate în arhive pentru ca jocul să se încarce puțin mai repede. De fapt, putem lua fișierul de care avem nevoie de acolo (de exemplu, pielea unui rezervor) și îl putem schimba. Apoi îl punem înapoi, înlocuind fișierul existent. Și totul va funcționa. Dar această metodă este incomodă, în primul rând, ar trebui să salvăm fișierele originale în cazul în care nimic nu funcționează și, în al doilea rând, când există o mulțime de modificări, nu vom putea șterge toate acestea, deoarece trebuie să ne amintim ce și unde l-am aruncat.

Pentru asta există folderul res_mods, după ce jocul a încărcat fișiere din folderul res, încarcă fișiere din res_mods , iar dacă există un fișier care a fost deja încărcat din folderul res, atunci jocul va lua ultima opțiune, adică cel modificat din folderul res_mods . Așa se face totul în World of Tanks într-un mod atât de convenabil.

Cum se instalează modificări în World of Tanks?

În acest moment, există două foldere pentru modificări în World of Tanks. Primul este mods , a apărut recent și este necesar pentru modurile care sunt ambalate și au formatul .wotmods. Al doilea folder a fost aproape de la început, acesta este res_mods , este necesar pentru modurile despachetate.

Ambele foldere conțin mai multe foldere în interiorul lor, cu numărul versiunii curente a jocului, acum este 1.6.1.0, iar folderele versiunilor mai vechi pot fi pur și simplu șterse pentru a nu interfera.

Pe site-ul nostru, în fiecare mod, scriem cum să-l instalăm. Dar de multe ori postăm modificările deja împreună cu folderele necesare și, prin urmare, tot ce este necesar este să deschidem arhiva descărcată și să copiați (sau să despachetați sau să transferați conținutul cu mouse-ul, acesta este același lucru) în folderul în care aveți World of Tanks instalat.

Notă: Dacă nu ați schimbat nimic în timpul instalării jocului, atunci rezervoarele sunt instalate în C:\\Games\World_of_Tanks . De fapt, acesta este folderul cu jocul.

Citiți întotdeauna descrierea modului, scriem ÎNTOTDEAUNA exact cum să instalați acest sau acel mod. Mai jos este o listă de setări posibile.

Opțiuni pentru instalarea modificărilor

  • Despachetați arhiva în folderul World of Tanks - Totul este simplu aici, deschideți arhiva descărcată, selectați tot ce este acolo cu mouse-ul și transferați-l în folderul cu jocul instalat.
  • Copiați folderul mods (sau res_mods) în folderul World of Tanks - Totul este la fel ca în versiunea anterioară, dar când este scris așa, atunci ar putea fi mai multe foldere în arhivă, de exemplu cu fonturi sau mod suplimentar opțiuni, deci dacă copiați totul deodată, atunci nimic nu va funcționa.
  • Despachetați arhiva în folderul World of Tanks\mods\1.6.1.0 (sau World of Tanks\res_mods\1.6.1.0) - Aproape la fel ca înainte, dar acum, după ce ați intrat în folderul jocului, trebuie să mergeți mai departe în mods ( sau res_mods) și apoi la 1.6.1.0 și copiați conținutul arhivei descărcate acolo.
  • Instalați fonturi - Este simplu, există un folder numit „font” în arhivă, intrați în el, apoi faceți dublu clic pe fiecare fișier, iar după ce fontul s-a deschis, faceți clic pe „instalați”. Toate. Nu trebuie să copiați nimic.
  • Run installer (sau Run program) - În acest caz, acestea sunt de obicei fie programe sau modpack-uri cu instalatori. Nu este nevoie să copiați nimic, doar faceți dublu clic și gata.

Dezinstalarea modurilor World of Tanks

Pentru a elimina un anumit mod, trebuie să știți ce fișiere au fost instalate și pur și simplu să le eliminați. Și pentru a elimina TOATE modurile din rezervoare, trebuie doar să ștergeți folderele mods/1.6.1.0 și res_mods/1.6.1.0. Dar în niciun caz nu ștergeți folderele 1.6.1.0 în sine, altfel jocul pur și simplu nu va porni.

Fiecare jucător din jocurile moderne pe computer folosește mod-uri. Aceasta ar putea fi o poveste nouă, o strategie suplimentară, caracteristici ale jucătorului sau declanșarea unor funcții din joc.

World of Tanks nu a făcut excepție, așa că să înveți cum să instalezi un mod în World of Tanks nu va fi niciodată de prisos. Și chiar dacă puteți face cu ușurință fără opțiuni suplimentare pentru moment, poate doriți să vă simplificați viața în viitor, să lansați noi funcții ale tancurilor dvs. sau să faceți bătăliile mai realiste. Și ce trebuie făcut pentru asta - ne vom da seama chiar acum.

Care sunt modificările

Alegerea modurilor suplimentare în Tanks este impresionantă. Toate modurile pot fi împărțite în grupuri. Luați în considerare cele mai semnificative dintre ele:

  1. Sunet
  2. Grafic
  3. obiective turistice
  4. Hangare
  5. Olenemer.

Să începem cu cel mai misterios - ultimul, numit ren. Se mai numește „contor de cerb” și „contor de utilizator”. Acest cuvânt se referă la o nouă caracteristică din lume care vă permite să aflați mai multe despre jucători - statisticile lor, numărul de victorii și așa mai departe. Este considerat unul dintre cele mai utile moduri, deoarece jucătorul știe întotdeauna cu cine are de-a face.

Modificatorul „hangaruri”, după cum sugerează și numele, vă permite să schimbați complet aspectul hangarului în strategie.

Suplimentul „vizoare” vă permite să schimbați vizorul de bază cu unul nou. De exemplu, priveliștea de la Jove, care este deosebit de iubită de jucători, deoarece poate arăta timpul de reîncărcare, zoom-ul, durabilitatea rezervorului disponibil, numărul de obuze din tambur și multe altele.

Modificările de sunet vă permit să schimbați interpretarea vocală a jocului, făcând „tancurile” preferate să sune într-un mod nou. Ele îmbunătățesc designul sunetului, făcând exploziile, loviturile, comenzile și vuietul omizilor mai realiste. Există mai multe tipuri de ele și fiecare dintre ele își poate crea propria atmosferă de luptă. Sunt instalate în același mod.

Modificările grafice sunt, de asemenea, împărțite în mai multe subspecii. Acestea includ o caracteristică care vă permite să vedeți punctele slabe din armura tancurilor. O caracteristică numită „cadavre albe” vă ajută să vedeți inamicul ascuns după bătălie. În plus, cu ajutorul instalării, puteți face peroanele de cale ferată luminoase, vopsiți în alb șinele doborâte, îmbunătățiți vizibilitatea la distanță și multe altele. Toate acestea ajută foarte mult în luptă.

Pentru a utiliza aceste opțiuni, trebuie mai întâi să le instalați în clientul jocului.

Cum se instalează mod-uri pe World of Tanks

Toate setările suplimentare din wot pot fi setate individual, dar este mult mai ușor să lucrați cu întregul pachet simultan - așa-numitele modpack-uri. Acestea conțin diverse modificări ale jocului menite să simplifice strategia și să o facă mai convenabilă și confortabilă.

Cel mai popular este „Modpack de la Jove”, dar există și o mulțime de pachete de la alți dezvoltatori. Fiecare va găsi o selecție pe placul său. Instalarea acestora este ușoară - ca un program obișnuit care folosește un simplu program de instalare.

Alegerea modurilor suplimentare în Tanks este impresionantă

Strategie pas cu pas despre cum să instalați mod-uri pe World of Tanks

Asadar, hai sa incepem:

  1. Accesați folderul cu clientul jocului. Cel mai adesea îl găsiți la următoarea adresă:
  2. D: /Lumea tancurilor/.
  3. Se caută /res_mods. Acest folder este creat automat, este necesar pentru ca jucătorii să poată instala singuri modificările dorite.
  4. Creăm un folder cu numele patch-ului de joc folosit, adică versiunea sa actuală. De exemplu - /0. 9.13.

Astfel, pentru instalare, va trebui să parcurgeți următoarea cale: D / World of Tanks / res_mods / 0. 9.13.

Noile modificări îmbunătățesc calitatea jocului

Cum se instalează mod-uri pe wot: îmbunătățiți vederea

Dar nu totul este la fel de simplu ca în cazul descris mai sus. Unele upgrade, cum ar fi multe domenii, vor necesita crearea unor foldere suplimentare. Ca urmare, înainte de a instala modurile pe wot, va fi creat un folder în documentul /0. 9. 13 și mai sunt câteva în el.

Întreaga cale va arăta astfel:

  • În fișierul /0. 9. 13. creați un fișier gui
  • Creați un document scaleform în gui
  • Verificăm calea. Arată așa: D /World of Tanks/res_mods/0. 9.13.0/gui/scaleform

De fapt, nu este nimic complicat în crearea de foldere suplimentare în wot, așa că de obicei nu există probleme cu instalarea diferitelor completări la strategie.

Îmbunătățirea calității revizuirii

Îmbunătățirea sunetului

Instalarea setărilor avansate de sunet este destul de simplă. Trebuie să le descărcați de pe site, de obicei fișierul se numește / audio. Fișierul cu clientul jocului va avea același fișier și totul trebuie copiat în folderul jocului. Copiem cu înlocuirea documentelor curente, astfel încât modul să meargă.

Înainte de instalare, asigurați-vă că închideți clientul jocului.

Moduri pentru World of Tanks: despre tancuri și completări la joc. Tipuri de modificări și motive pentru instalarea acestora. Instrucțiuni pentru instalarea modurilor + TOP 10 cele mai bune + comparație a 3 cele mai bune pachete de mod de pe Internet.

Deși World of Tanks are o gamă largă de caracteristici, celor mai mulți jucători le lipsesc lucrurile mici care pot face procesul de tanking de multe ori mai interesant.

Pentru a rezolva această problemă, mulți meșteri din rețea dezvoltă mod-uri pentru World of Tanks. Despre rezervoare și mediul de joc, ce suplimente sunt disponibile și cum să le instalăm - vom răspunde la aceste și la alte întrebări în articolul nostru de astăzi.

Ce este moda?

Maud- un supliment software pentru clientul principal al jocului care vă permite să schimbați/îmbunătățiți elemente de mecanică și efecte vizuale.

Îmbunătățirea performanței de luptă, ecrane cu informații auxiliare - acestea și alte transformări permit jucătorului să personalizeze interfața jocului după preferințele sale de design.

De ce să pun modificări pentru World of Tanks?

  1. Extindeți funcționalitatea vehiculelor blindate.
  2. Creșteți parametrii standard ai rezervoarelor.
  3. Ajustați elementele individuale ale jocului.
  4. Schimbați prezentarea vizuală a locațiilor individuale.
  5. Personalizați coloana sonoră după gustul dvs.
  6. Pentru a obține mai multe statistici și alte informații de sprijin care vă permit să navigați mai bine în acțiunile tancului inamic.

Lista este nesfârșită - numărul de extensii este foarte mare. Dacă dorește, utilizatorul are posibilitatea de a schimba designul și mecanica elementelor individuale ale rezervorului dincolo de recunoaștere.

Care sunt modurile pentru World of Tanks despre tancuri și cum să le instalezi?

În timpul existenței jocului World of Tanks, numărul de mod-uri a crescut exponențial. Astăzi, proprietarul unui tanc își poate transforma pistolul într-o adevărată forță nereținută, demolând inamicul cu o salvă.

Unele modificări mecanice sunt considerate înșelăciune, urmate de o înghețare a contului, așa că trebuie să distingeți între moduri în mai multe moduri.

Modificările pentru World of Tanks după metoda de dezvoltare sunt:

  • Oficial - eliberat de angajații companiei care a dezvoltat jocul. Calitatea lor este cu un ordin de mărime mai mare decât restul + modificările se referă, în cea mai mare parte, la designul exterior.
  • Drepturi de autor - astfel de modificări despre tancuri sunt produse de meșteri. Calitatea desenului nu corespunde întotdeauna unui nivel ridicat sau chiar mediu. Majoritatea modificărilor se referă la reglarea fină a tancurilor din joc.

Dacă modificările oficiale afectează jocul în mod minim, atunci modificările de drepturi de autor sunt împărțite în admisibilăși înșelăciune(adică cele care dau superioritate asupra tancului inamic din cauza modificărilor de fizică sau mecanică de joc). Acestea din urmă sunt interzise în utilizare, iar dacă folosirea lor este dovedită, utilizatorul se va confrunta cu o interdicție permanentă a contului de joc.

Pentru a utiliza funcționalitatea avansată, modificările trebuie mai întâi instalate. Aloca programe privateși ansambluri întregi("modpack-uri"). Acesta din urmă va fi discutat mai detaliat mai jos.

1. Schema de instalare a modului pentru World of Tanks.

  1. Găsiți folderul jocului. Implicit (dacă nu ați schimbat folderul în client) acesta se află pe aceeași unitate cu sistemul de operare „C”

    Utilizatorii mai avansați pun clientul pe un disc fără un sistem de operare - acest lucru va salva date atunci când reinstalează sistemul de operare. Exemplu de cale - C:/Lumea tancurilor/

  2. Apoi, găsiți în dosarul cu numele "res_modes". A fost creat de dezvoltatori special cu scopul de a instala mod-uri la clientul principal al jocului.
  3. Găsiți folderul cu versiunea jocului în interior și, dacă nu este acolo, creați-l. Aproximativ, calea finală ar trebui să arate așa - „C:/World of Tanks/res_modes//0.9.22”

    Valoarea versiunii produsului nu este constantă, deoarece noi patch-uri sunt lansate cel puțin o dată pe lună

  4. În 60-70% - asta este tot ce este necesar, dar unele moduri pentru tancuri necesită crearea de foldere suplimentare (pentru mai multe informații, căutați informații pe site-ul de unde descărcați modul)

    De exemplu, pentru obiective turistice, aveți nevoie de încă două subdosare - "/gui"și "/scaleform". Apoi calea finală de despachetare a elementelor va fi − „C:/World of Tanks/res_modes//0.9.22/gui/scaleform”

Acest algoritm pentru instalarea modurilor este folosit atât pentru rezervor, cât și pentru alte elemente de interfață.

2. Cum se instalează modul de sunet pentru World of Tanks?

Există un alt tip de mod-uri pe net pe care jucătorii le pot schimba - audio. Dacă te-ai săturat de sunetele standard de împușcături sau de zgomotul omizilor, aceste schimbări sunt exact ceea ce ai nevoie.
  1. Descărcați arhiva de mod care vă place de pe site-ul tematic pentru jocul World of Tanks.
  2. Găsiți folderul client de joc pe hard disk.
  3. Găsiți în dosarul cu acompaniament audio pentru joc. Cel mai adesea, ea are o modalitate - C:/World of Tanks/audio.
  4. Copiați fișierele de sunet din arhiva descărcată în folderul găsit cu un înlocuitor.

Înainte de a instala orice mod pentru tancuri sau în scopul decorului, asigurați-vă că închideți clientul jocului. Dacă această operațiune nu este efectuată, pot apărea conflicte între modificări și software-ul deja încorporat, ceea ce va duce la ejectări din joc sau la încetarea completă a activității acestuia.

3. Care sunt cele mai populare moduri de rezervor?

    Conversia obiectivului.

    Vederea de bază nu poate oferi suficiente informații pentru a evalua situația, prin urmare, folosind îmbunătățiri, jucătorul are posibilitatea de a avansa semnificativ în tacticile de luptă și de a-și crește eficiența.

    Timpul de reîncărcare a armei, zoomul, adversarul, capacitatea/disponibilitatea muniției - acestea și alte date vor ajuta foarte mult un începător să navigheze chiar și în situații critice.

    Conversie grafică.


    Acestea sunt moduri pentru tancuri pentru a schimba vizualizarea în timpul luptei.

    Astfel de modificări vă permit să vedeți vulnerabilitățile tancului, să trageți prin vehiculele inamice sparte, să creșteți vizibilitatea vehiculului blindat, precum și multe alte lucruri mici, a căror utilizare va ușura viața unui jucător obișnuit în World of Tancuri.

    Transformări ale sunetului.

    Aceasta include întreaga linie de efecte sonore - fotografii, lumină, critici și așa mai departe.

    Transformarea hangarelor.

    O componentă vizuală care nu afectează jocul în sine. Folosit pentru a oferi atmosfera adecvată jocului.

    Transformați statisticile ecranului.

    Creșterea conținutului informativ al ecranului final după luptă + capacitatea de a urmări un număr mare de parametri în timp real.

Pachete sau modificări individuale - care este mai bine?

Dacă sunteți nou în lumea World of Tanks, utilizarea pachetelor va simplifica foarte mult procesul de instalare a modurilor pe tancuri. Nu trebuie să despachetați manual și să căutați destinația modului. Tot ce trebuie să faceți este să rulați programul de instalare și să urmați instrucțiunile pas cu pas.

Există mult mai multe moduri pentru tancuri decât am descris mai sus. Sunt unele care nu se încadrează în niciuna dintre categorii. Descărcați modul separat sau folosiți pachetul - depinde de dvs.

Luați în considerare doar faptul că atunci când utilizați un pachet de moduri pentru tancuri, nu veți avea posibilitatea de a alege pe deplin - numărul de modificări conținute în ansamblu este limitat și este posibil să nu satisfacă întotdeauna cerințele jucătorilor pretențioși WOT.

Cele mai bune moduri pentru World of Tanks despre tancuri și mediul de joc: TOP-10


După o cunoaștere generală, să filtrăm rețeaua și să selectăm cele mai bune moduri în diverse direcții care pot face ca procesul de joc să fie cel mai confortabil, atât pentru un începător, cât și pentru un tanker profesionist.

Este imposibil să ținem cont de opiniile subiective ale tuturor, dar există astfel de moduri pentru tancuri care sunt obligatorii pentru utilizare de către absolut toată lumea.

Când am compilat topul, am fost ghidați de sondaje ale forumurilor oficiale de joc World of Tanks. Fiecare dintre modurile a fost instalat pe clientul lor de mai mult de 50% dintre utilizatorii jocului (dintre cei care folosesc modurile de tanc în general).

1) VEDERE „SABAIA LUI DAMOCLE”.

Abilitatea de a trage cu precizie este fundamentul unui jucător din World of Tanks. Din păcate, vizorul de bază este foarte limitat în ceea ce privește funcționalitatea, așa că schimbarea acestui element este primul lucru de făcut după instalarea clientului de joc.

Mod pentru tancul „Sword of Damocles” pentru 2017-2018. este cea mai bună soluție în secțiunea obiective turistice.

Funcționalitate mod:

  • obiective pentru sniper și shooting arcade;
  • vedere de artă specializată;
  • indicatori de penetrare a armurii și informații complete despre capacitățile vederii;
  • este posibil să se calculeze intervalul de timp al zborului unui proiectil de luptă;
  • corelează indicațiile razei țintei și potențialul tău de înfrângere;
  • arată viteza de mișcare a tancului inamic;
  • UVN + raza de fragmentare a rezervorului.

Toate informațiile furnizate de mod se potrivesc bine în interfață și nu interferează în luptă. Folosind cu înțelepciune datele despre adversar, un jucător profesionist va putea arăta acrobația în World of Tanks, iar un începător va simplifica foarte mult antrenamentul și va îmbunătăți abilitățile tactice.

2) PANOU DE DETERMINARE DE LA LOCASTAN.

Modul de panou de daune care le permite șoferilor de tancuri să îmbunătățească setul de bază de funcții din World of Tanks. Modificarea a fost dezvoltată pe baza binecunoscutului panel al autorului de la Stlite.

Diferențele de modă față de analogi:

  • capacitatea de a vizualiza jurnalul de deteriorare a rezervorului;
  • sunt afișate recuperări ricoșete ale obuzelor;
  • modulele rezervorului sunt transparente până când se deteriorează - această abordare facilitează analiza situației în ansamblu;
  • numărătoare inversă pentru repararea modulelor rezervorului;
  • indicator luminos de foc.

Acest mod vine în 3 versiuni:

  • Primul panou se va potrivi cu descrierea de mai sus.
  • A doua modificare va fi situată în centrul ecranului și va conține informații despre modulele rezervorului.
  • Al treilea evidențiază datele de reparație, care vor fi și ele situate în centru.

3) INTERFATA DE LUPTA Z-MOD DE LA MARSOFF.

Lucrări noi de la celebrul modder. Interfața acestui mod pentru tancuri combină doar cele mai bune elemente în luptă. La prima vedere, panoul poate părea greu de perceput, dar după câteva lupte, veți aprecia posibilitățile acestui mod.

Caracteristici ale modului:

  • a eliminat obiectivele de artă și arcade;
  • fără panou de depanare;
  • nu există un cronometru care să afișeze timpul tancului în luptă;
  • nu există mini-hărți cu o vedere de ansamblu;
  • Nu există niciun punct de vedere de artilerie pe mini-hartă.

Interfața a scăpat de o mulțime de elemente inutile, iar toată funcționalitatea este acum aranjată pe acest panou minimalist.

În modificare, a existat un indicator al apariției unui incendiu în apropierea rezervorului și o numărătoare inversă pentru repararea modulelor - cele mai necesare elemente. Vitezometrul este acum situat în partea centrală a ecranului, lângă vizorul rezervorului.

4) MINI-HARTĂ INTELIGENTE PENTRU WORLD OF TANKS DIN LOCASTAN.

În noile patch-uri pentru clienți, dezvoltatorii au extins funcționalitatea instrumentului de bază, dar informațiile încă nu sunt suficiente, deoarece jucătorii încă caută mod-uri de mini-hărți de înaltă calitate pe net - acesta este unul dintre ele.

Adăugări făcute de mod:

  • cercuri de recenzii adăugate;
  • cerc de desen adăugat;
  • marcajele corespunzătoare sunt afișate în locurile în care au fost distruse tancurile inamice;
  • dimensiunea pictogramelor tancurilor a fost mărită;
  • reglarea fină a informațiilor furnizate utilizatorului.

Nici funcțiile de bază nu au dispărut. Lumina tancului inamic, UGN, direcția fasciculului pistolului - toate acestea vor rămâne în locurile lor de drept.

Modul a fost asamblat ținând cont de dorințele a sute de jucători World of Tanks, ceea ce înseamnă că modificarea va afecta pozitiv calitatea jocului atât pentru începători, cât și pentru tancuri profesioniști.

5) PIELE DE ESTETUL DE LA SERGEY EMETS PENTRU WORLD OF TANKS.

În WOT, numărul de vehicule militare a depășit 360 de unități, iar fiecare vehicul are atât puncte forte, cât și puncte slabe. Pentru a evita mai probabil surprizele neplăcute, a fost dezvoltat un mod special pentru tancuri care vă permite să aflați despre grosimea penetrării armurii oricărui vehicul din joc.

Gradul de vulnerabilitate depinde de culoarea dată de mod:

  • albastru - descrie conturul secțiunilor de combustibil ale rezervorului;
  • verde - descrie conturul motorului vehiculului de luptă;
  • violet - contur pentru așezarea armurii;
  • roșu - vulnerabilități ale rezervorului, unde este cel mai ușor să spargeți.

Alte mod-uri similare World of Tanks sunt prea vagi, uneori este pur și simplu imposibil să se facă distincția între zone. După cum sugerează și numele, estetica prezentării este cea care distinge acest mod de altele - toate zonele problematice sunt doar subliniate și nu sunt complet umplute cu culoare.

Ca bonus, există pictograme care semnalează jucătorului locația echipajului în interiorul rezervorului, ceea ce va face mai ușor să trageți o contuzie pe oricare dintre ele. Modul conține zone de penetrare a tancului de la nivelurile 4 la 10 inclusiv. Acest set este unul dintre cele mai mari și mai funcționale din joc.

6) MOD SCHIMBĂ HANGARELE APĂSÂND UN BUTON DIRECT ÎN HANGAR.

Numărul de mod-uri pentru hangare din joc este enorm. „Skins” sunt făcute de toți cei care nu sunt prea leneși, prin urmare, conform opiniei subiective, nu are sens să alegeți ceva din această secțiune.

Am dori să vă atragem atenția asupra unui mod care vă permite să schimbați hangare în World of Tanks fără a părăsi interfața jocului. Pentru ca modulul să funcționeze, trebuie doar să selectați hangarul din lista derulantă și să confirmați prin butonul „Salvare”. Toate modificările vor intra în vigoare imediat.

Modul este disponibil, care se află în folderul „skins”. Modificarea funcționează atât cu hangare de bază, cât și cu cele premium.

7) WOTLOGGER3 PENTRU WORLD OF TANKS.


Statisticile este unul dintre cei mai importanți indicatori care vă permit să analizați bătăliile și să găsiți rădăcina problemei. Funcționalitatea de bază a clientului este mai mult decât slabă, așa că instalarea unui mod pentru tancuri conform statisticilor este un pas obligatoriu dacă intenționați să jucați WOT mai mult de câteva săptămâni.

Ce caracteristici adaugă modulul:

  • statisticile tuturor bătăliilor jucate pentru perioada de timp specificată;
  • filtre pentru selectarea luptelor cu victorii/înfrângeri;
  • afișarea întregii liste de bătălii cu o cantitate mare de date auxiliare;
  • este disponibilă gruparea bătăliilor după anumite criterii.

Modul este actualizat și ajustat în mod constant la rezervoare, în conformitate cu dorințele utilizatorilor.

Inițial, acest mod a fost prezentat ca un program care trebuia lansat din afara spațiului client. În următoarele actualizări, s-a decis să se facă modificarea încorporată, ceea ce simplifică foarte mult viața jucătorilor din World of Tanks în studierea performanței bătăliilor lor.

8) DEER/XVM PENTRU WORLD OF TANKS.

Cel mai popular mod printre șoferii de tancuri - peste 3.500.000 de jucători din World of Tanks îl folosesc zilnic. Acest lucru se datorează funcționalității sale uriașe, cu care nici măcar cisternele cu experiență nu le pot face imediat.

Ce poate face modulul de ren:

  • să arate eficiența luptei cu tancurile atât ale rivalilor, cât și ale aliaților în arme;
  • dă numărul de victorii/înfrângeri pentru fiecare tanc;
  • ținând cont de cele două puncte de mai sus, calculează probabilitatea de câștig în termeni procentuali;
  • conține un jurnal de daune în timpul luptei;
  • îmbunătățește mini-harta și îi adaugă date auxiliare despre tancuri;
  • indicatoare luminoase încorporate;
  • indică viteza conexiunii dvs. la Internet - indicatori pe bază și în hangar;
  • a adăugat un indicator care semnalează un atac asupra bazei - indică numărul de tancuri + numărătoarea inversă pentru a finaliza captura;
  • s-au schimbat și marcajele de deasupra rezervoarelor.

Lista trimisă este doar vârful aisbergului modului, funcționalitatea sa completă este dezvăluită de jucătorul aflat deja pe tanc în timpul bătăliei în sine. Numărul de loțiuni diferite este foarte mare, așa că descărcați instrucțiunile de instalare și configurare cu modulul, deoarece va fi foarte problematic să înțelegeți singuri complexitățile modificării.

Dezvoltatorii au realizat două tipuri de mod pentru tancuri - versiunile ușoare și complete. Versiunea „ușoară” este destinată computerelor slabe și conține doar trackerul de reni și jurnalul de accesări.

9) VIZARE "STAPLE" PENTRU WORLD OF TANKS.

Unul dintre noile moduri pentru a îmbunătăți vederea tancului. Designul de culoare în tonuri de turcoaz nu rănește ochii și îmbunătățește vizibilitatea în zonele cu probleme. Designul, deși nu poate fi atribuit standardului, dar după 5-7 bătălii în tancuri, veți accepta cu ușurință această priveliște în arsenalul vostru de modificări.

Funcționalitate mod:

  • schimbarea frazei de reîncărcare;
  • Procentele de sănătate au fost înlocuite cu o bară XP;
  • un cartuș de calibru mare va servi drept indicator pentru penetrare.

Acest mod este unul dintre cele mai populare dintre cele non-standard. Actualizările se aplică tuturor tipurilor de obiective, ceea ce vă va permite să vă bucurați de lupte de înaltă calitate în tancuri în orice tip de locație.

10) PROIECT WOT-MOD - MOD MANAGER.

Ne-am uitat la un număr mare de moduri. Dar dacă doriți să instalați mai multe modificări simultan și să păstrați capacitatea de a le schimba rapid? Ca și în cazul hangarelor, un jucător de tancuri își poate simplifica viața cu un program simplu care gestionează toate modurile instalate din World of Tanks.

Funcționalitatea programului:

  • capacitatea de a instala / elimina sau dezactiva temporar mod-uri prin interfața programului;
  • este posibil să creați singur un pachet de moduri și nu veți avea nevoie de cunoștințe profunde în programare aici;
  • potrivit pentru testarea modurilor pe tancuri - modificările de dezactivare au fost create în acest scop.

Instrucțiuni detaliate pentru utilizarea modului pentru World of Tanks sunt furnizate împreună cu programul, dar chiar și un copil poate înțelege complexitatea muncii aici. Acesta este un instrument la îndemână pentru cei cărora le place să testeze modificări în tancuri, dar nu doresc să se joace constant cu modificările manual.

Am selectat doar cele mai bune moduri pentru World of Tanks despre tancuri și mediu în joc. Fiecare dintre ele este capabil să reflecte calitativ capacitățile mașinii tale și să-și elibereze întregul potențial.

Ce pachet pentru World of Tanks să aleagă?

Am atins deja subiectul pachetelor de mod puțin mai sus. Compilarea unui modpack echilibrat este o artă pe care doar un adevărat fan al World of Tanks o poate gestiona.

Criterii de selecție a pachetului de mod:

    Numărul de moduri din pachet.

    Acest lucru nu înseamnă că amestecul nu este clar ce va veni. Toate modificările trebuie revendicate de jucătorii de tancuri.

    Calitate mod.

    Utilizarea ansamblurilor dubioase poate deteriora nu numai clientul jocului, ci și întregul computer în ansamblu. Pachetul trebuie să constea din modificări aprobate oficial.

    Numai în acest caz, nu vă puteți face griji cu privire la siguranța informațiilor personale de pe dispozitiv.

    Decor.

    Instalatorul ar trebui să aibă o interfață intuitivă și să nu obosească ochii utilizatorului.

    Frecvență de actualizare.

    Un parametru foarte important, deoarece depinde direct dacă modurile vor funcționa pe client sau nu. Datorită actualizărilor frecvente ale jocului, autorul trebuie să răspundă rapid la aceste modificări și, în consecință, să ajusteze ansamblul.

Având în vedere toate cele de mai sus, am selectat primele trei modpack-uri care îndeplinesc 100% condițiile stabilite. Pentru claritate, le vom aranja sub forma unui tabel comparativ, unde puteti evalua toate avantajele si continutul fiecaruia dintre ele din propriul punct de vedere subiectiv.

Cum să obțineți un avantaj semnificativ asupra inamicului?

Cele mai bune moduri pentru World of Tanks.

Tabel de comparație al celor mai bune 3 mod-uri de pe net.

Moda de AMWAY921Moda de la JOVE (JOVE)Moda de la PROTANKI
1. eXtended Visualization Mod - markeri extinsi, daune de retur, modificarea capturii bazei și jurnalul de daune.Scopul Super Jova.Lunetă standard cu temporizator de reîncărcare.
2. Detectarea automată a vederii curente a rezervorului.Eclipsă transparentă în modul lunetist.„Alegerea lui Jov” - OverCross. Crosshairs minimaliste bazate pe crosshair-ul implicit al jocului.
3. Înlocuirea sunetelor standard ale jocului: „Apel” atunci când modulele sunt deteriorate critic și sunetul când este declanșat avantajul „Șaselea simț”.Diverse panouri de deteriorare.„Modul matematic al lui MeltyMap”. Mod de interfață dezvoltat de jucători din clusterul UE.
4. Indicator de direcție de atac îmbunătățit.Mini-hărți inteligente, atât în ​​XVM, cât și alternativ.„Commander Camera” - un mod pentru distanța maximă a camerei în modul arcade.
5 Indicator îmbunătățit al numărului de proiectile.Becuri „Sixth Sense” + actorie vocală pentru ei.„Dezactivați balansul” - dezactivează balansul camerei în modul lunetist.
6. Măriți timpul de afișare al „becului” când este declanșat avantajul „Al șaselea simț”.Diverse voci off.Informații despre respawn la încărcarea în luptă. În loc de un „hint” în ecranul de încărcare.
7. Afișarea unui marker separat pentru TT10 pe minimahartă.markeri informativi.Puteți schimba comportamentul camerei - un mod pentru a dezactiva efectele atunci când primiți daune.
8. SafeShot: Previne tragerea în tancurile proaspăt distruse.Zoom mod.Vedere server - acest mod arată unde este îndreptată vederea rezervorului tău în funcție de serverul de joc.
9. Îndepărtarea camuflajelor, siglelor și inscripțiilor de pe tancuri.Piei transparente de camuflaj și cadavre de tancuri albe.Statistici extinse. Mod pentru a afișa rezultatele generale pentru sesiunea curentă de joc.
10. Obiective turistice cu funcții avansate.Raza de vizualizare crescută pe hărți cu ceață.Marcatoarele XVM de deasupra vehiculelor înlocuiesc marcatoarele standard de rezervor cu altele mai informative.
11. Panouri de daune personalizate: Panoul de daune standard și Panoul de daune personalizat.Statistica sesiunii.„Activați caruselul tancului” - mai multe modificări pentru a personaliza lista de tancuri din hangar.
12. Dezactivați pâlpâirea și pâlpâirea imaginii atunci când suferiți daune.Wot Replays Manager este un program pentru lucrul cu reluări.Unghiuri orizontale. Un mod indispensabil pentru tancuri fără turelă sau cu rotație limitată.
13. Unghiuri de elevație pentru Art-SPG și Fri-SPG.Cel mai bun calculator de armură ținând cont de unghiul de înclinare al proiectilului.Panoul de informații al țintei selectate. Modulul arată informații de bază despre tancul adversarului tău.
14. Zoom: comandă camera cu capacitatea de a dezactiva efectele dinamice ale camerei.WoT Tweaker este un program pentru creșterea FPS-ului prin dezactivarea diferitelor efecte.Butoaiele inamice pe mini-hartă.
15. NoScroll: lunetă doar la apăsarea „Shift”Direcțiile butoaielor inamice pe mini-hartă.Marcator de direcție a deteriorării.
16. ZoomX: lunetă de lunetist cu mai multe poziții (x2, x4, x8, x16).Cerc pentru împușcare invis din tufișuri.Calculator de rating în luptă.
17. Eliminarea umbririi din luneta de lunetist.Mod cadavre albe de tancuri și omizi.Alertă aliații cu privire la lumină.
18. Statistici detaliate pentru sesiunea de pe server.Zoom x25 îmbunătățit în lunetă de lunetist.Tancuri albe. Similar cu vagoanele albe, ajută la „tragerea” adversarilor din spatele acoperișului.
19. Mesaje colorate despre rezultatele bătăliei.Rezervoare HP în urechi (în 2 versiuni).Omizi albe doborâte. Modul arată clar starea șasiului adversarilor sau aliaților.

Tabelul prezintă doar cele mai semnificative componente ale pachetelor, care trebuie să fie în orice ansamblu.

Toate cele 3 opțiuni sunt în fruntea cotelor de popularitate, dar primul loc este deținut de „tancuri profesionale”. La acest proiect lucrează un întreg grup de specialiști. După noile patch-uri World of Tanks, acești tipi sunt primii care lansează o versiune actualizată de construcție pentru versiunile modificate ale clientului.

Utilizați moduri pentru World of Tanks despre tancuri- înseamnă îmbunătățirea productivității fiecărei bătălii cu 40-50%. Și dacă un profesionist folosește modificări, atunci 100%.

Unii consideră că folosirea modurilor este o înșelăciune, dar îmbunătățirile funcționale aprobate oficial îi conferă tancului libertate în joc, oferind și mai multă plăcere din proces. Și acesta este cel mai important lucru în tancuri!