Как да създадете модове за World of Tanks. Как да инсталирате модове за танкове - инструкции стъпка по стъпка На какви модове за wot са написани

История за създаването на модификацията XVM (eXtended Visualization Mod) за играта World of Tanks. Във втората част ще намерите описание на историята на развитието на сървърната част на мода.

древно царство

Както казах в първата част, първият бекенд на мода работеше на VPS, беше написан на PHP и съхраняваше базата на играчите като файлове във файловата система. За да се избегне ограничението от 64K inode (ограничението на файловете в една директория обикновено може да се конфигурира, но този VPS изглежда има заключена настройка), беше използвана структура на три нива.

Първите две букви от псевдонима на играча станаха името на първата директория от корена на базата данни. Следващите две букви са името на директорията, вложена в нея. И вече в него имаше обикновени файлове с данни на играчи и имена, равни на прякори.

Заявките изглеждаха така: http://domain.com/users/ .

Всеки играч изпрати собствена заявка. Тоест от една битка могат да дойдат до 30 заявки. Вярно е, че от страна на клиента беше използвано кеширане на вече видяни играчи, което леко намали натоварването. След това това кеширане беше изоставено поради изключително ниския процент на попадения в рандома.

Въпреки примитивността, тази реализация имаше значително предимство - дори работеше на VPS и "дърпаше" сто или две заявки в секунда.

надежда

След преминаване към пълноценен сървър, друга реализация беше не по-малко бързо подадена, този път на PHP + MySQL. По това време ни се стори, че за нашата задача (запитване за един запис по индекс) и дори да работим на такъв „мощен“ хардуер (EQ4: Intel Core i7-920, 8 GB DDR3, 2x 750 GB SATA II HDD) , можем да използваме всички антимодели на дизайна - и пак ще работи. Реалността, както обикновено, не разочарова.

И така, какво „отглеждахме“ там:

  1. Шаблонът за заявка, разбира се, беше оставен такъв, какъвто е.
  2. Заявката беше проверена от обикновена програма за сходство с псевдоним.
  3. Търсих в базата данни за този псевдоним.
  4. Ако са го намерили и е актуализиран не много отдавна, тогава са го дали в отговора.
  5. Ако не го намерят или записът е твърде стар, забавлението започва.
Беше необходимо по някакъв начин да се получат данните на играча. По това време нямаше публични API, така че първото нещо, което ми дойде на ум, беше да анализираме страница като worldoftanks.ru/community/accounts/27030462-Alex. Но има един проблем: в URL адреса на страницата, освен псевдонима, има и ID, който не можем да получим от заявката. Поради това следващата точка на колективната ферма е страницата worldoftanks.ru/community/accounts или по-скоро формата за търсене на тази страница. Изпращаме от нашето приложение, така да се каже, AJAX заявка, която напусна страницата за търсене на играч. В отговор получаваме:

Request_data: ( echo: 0 filtered_count: 210846 items: [ абревиатура: "", account_url: "/community/accounts/27030462-Alex/", битки: 3737, clan_url: "", exp: 636853, id: 27030462, име: "Алекс", победи: 1686 ], …. )
Виждаме, че вече имаме не само идентификатор, но и готова връзка. Всичко може да се анализира.

За щастие горе-долу по същото време се появи мобилното приложение World of Tanks Assistant от Wargaming. Приложението доста добре показва статистиката на всеки играч. Добри хора направиха проучване и откриха протокола за обмен.

Данните бяха качени на:
http://worldoftanks.ru/uc/accounts//api//?source_token=Intellect_Soft-WoT_Mobile-unofficial_stats
ApiVersion нарасна от 1.3 на 1.7 през времето, в което го използвахме и преди появата на официалния API. За нас нямаше разлики. Вярно е, че проблемът с получаването на playerID, преди да направите заявка към API, не е изчезнал.

И да, ако някой все още не е разбрал: заявката за данни на играча е възникнала точно по време на обработката на заявката на клиента.

Този шедьовър на инженерството работеше последователно при натоварване от 200-300 заявки / секунда, което беше само малко повече от първата версия, която работеше върху статични файлове. Когато натоварването се увеличи, ние почивахме на процесора.

Възраждане

В началото моментите, в които сървърът не можеше да се справи, се случваха само в петък и събота вечер. С течение на времето тези „моменти“ се увеличаваха и увеличаваха. Стана ясно, че нещо не е както трябва. Натоварването ни не е рекордно, сървърът не е от най-слабите. Проблемът се утежняваше от факта, че нямахме опитни PHP специалисти. Както и нямаше опитни *nix специалисти.

Седна да помисли. Помислихме за следното:

  1. Най-важното е, че започнахме да подобряваме клиентската страна и намерихме начин да получим не само прякорите на играчите, но и идентификаторите.
  2. Оптимизирайте клиентските заявки, за да изисквате играчи не един по един, а всички наведнъж от една битка.
  3. Опитайте фантастичния пакет NodeJS + Mongo.
Първата версия на node-сървъра беше измита. Не използва никакви рамки. Само стандартни модули като http и mongo. Сървърът беше хардкор процедурен код.

Заявките започнаха да изглеждат така:

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

Първият вариант показа обнадеждаващи резултати - извади до 100-150 заявки / секунда. Нови заявки, за 30 играча, т.е. това е еквивалентно на ~4000 стари заявки на играч. Бяхме много впечатлени от увеличението от повече от 10 пъти поради технологичната промяна и тъй като по това време маржът на безопасност беше много солиден, започнахме да развиваме „статистическите“ възможности на XVM.

За пореден път те седнаха да помислят и решиха да направят нещо като REST услуга със следните методи:

Възможността за разработване на сървърна част за такава техническа спецификация в процедурен стил предизвика лоши мисли, така че решихме да опитаме друго модерно нещо: express .

Трябва да кажа, че преди това нямах опит с MVC рамка, но въпреки това го разбрах много бързо и буквално за две вечери направих първата работеща версия. Като цяло казвам най-топлите думи на разработчиците за възможността за бърз старт.

Полученият сървър, първо, работеше добре и второ, кодът му беше приятен за окото, за разлика от старата версия.

На тази вълна от вдъхновение реших да „ходя като разходка!“ и добави mongoose към ODM проекта. Кодът стана още по-красив, докато провеждах тестове на локална машина, буквално не можех да се наситя на факта, че всичко лежи красиво на мястото си и колко просто и логично работи всичко.

Време е да внедрите тази красота на сървъра. Разгърнат. Проверено - работи! Тръгна си за 20 мин. Идвам, проверявам - не става. Гледам в конзолата - процесът на възела върви. Рестартирам. Работи няколко секунди, след което - приглушено.

Няма да го влача дълго време: проблемът беше в процесора. При обичайното вечерно натоварване по това време кодовият вариант без мангуста шеговито усвои това натоварване, но вариантът с мангуста (въпреки цялата му красота) не го направи. За съжаление трябваше да върна почти всички промени за няколко дни.

Облаците се събират

В края на 2012 г. имаше нов скок в активността на потребителите на XVM и нашият прекрасен сървър спря да се справя с натоварването. Честно казано и преди имаше проблеми, но не толкова сериозни. Сега, вечер, модът не работеше, а не работеше. Като последна мярка дори завинтихме модула toobusy към сървъра, което ни позволи да обработим толкова заявки, колкото хардуерът може да обработи, и да пропуснем останалите. Мониторингът показа остър недостиг на памет за процеса mongo. Решихме да се преместим на друг сървър: EX-4S (i7-2600, 32 GB DDR3, 2x3 TB SATA III HDD).

Преместихме се. Чувствам се по-добре. Вярно, не за дълго.

Щом настъпи зимната ваканция, проблемът се появи отново. С цената на всякакъв шаманизъм над кода успяхме да доведем честотата на заявките от 150 до 180-200 в секунда, но това пак не беше достатъчно. Една от вечерите, когато всичко беше почти легнало, за целите на проверката, коментирах блока от код, отговорен за актуализирането на „изтеклите“ играчи с WG API и ... работи. И не е лошо: получихме стабилни 240 с пикове до 260 заявки / сек. Няколко дни по-късно се роди код, в който програмата за актуализиране на играчи беше отделена в отделен независим процес, а кодът, който директно взаимодействаше с клиентите, добави само идентификаторите на играчите, които трябваше да бъдат актуализирани, в отделна колекция.

Този ъпгрейд ни отне около месец. И отново видяхме същите проблеми: вечерите клиентските заявки започнаха да се пропускат. Този път се натъкнахме на IOPS. Без да мислим дълго, през март 2013 г. поръчахме допълнително оборудване за нашия сървър: 240GB SSD устройство. Тогава нямаше линия сървъри с предварително инсталирани SSD устройства.

помогна! Сървърът започна да тегли до 380-400 заявки / сек. За около половин година всичко работи доста гладко и не предизвиква особени оплаквания от потребителите. През август 2013 г. преминахме към нововъведения EX40-SSD, тъй като той отговаряше по-добре на нашите цели и беше по-евтин от EX-4S с допълнителен SSD.

И в края на 2013 г.... познахте, имахме същия проблем. Освен това този път нямаше очевидни и прости решения. Последното магьосничество над кода е свършено. Сървърът е доста добър. q4x2, който *nix специалист на свой ред „изкриви“ сървъра „доколкото е възможно“.

Съдържанието на /etc/sysctl.conf за заинтересованите

# Конфигурационен файл на ядрото sysctl за Red Hat Linux
#
# За двоични стойности 0 е забранено, 1 е разрешено. Вижте sysctl(8) и
# sysctl.conf(5) за повече подробности.

# Контролира препращането на IP пакети
net.ipv4.ip_forward = 0

# Контролира проверката на маршрута на източника
net.ipv4.conf.default.rp_filter = 1

# Не приемайте маршрутизиране на източника
net.ipv4.conf.default.accept_source_route = 0

# Контролира функционалността за отстраняване на грешки в системните заявки на ядрото
kernel.sysrq=0

# Контролира дали дъмповете на ядрото ще добавят PID към името на основния файл.
# Полезно за отстраняване на грешки в многонишкови приложения.
kernel.core_uses_pid = 1

# Контролира използването на TCP syncookies
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 = 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 = 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


Изобщо всичко, което можеше да се направи с малко кръв, е направено. Вече започнахме да мислим за закупуване на втори или трети сървър и настройка на балансиране.
Но една вечер, в разговор с q4x2, имахме спор, че не всички платформи са еднакво полезни. И казано по-просто, той ме убеди, че всичките ни проблеми се дължат на NodeJS и че е готов да направи своя собствена версия на сървъра в Java, която да „разбие“ Node в британския флаг. Силно се съмнявах в това, но се съгласих да участвам в експеримента и тъй като такова нещо, реших да опитам нещо родно.

Тъй като, както обикновено, исках нещо ново, изборът падна върху D и vibed framework. Изненадващо, дори аз, който работих почти изключително върху JS през последните три години, успях да измисля работеща версия сравнително бързо. Разработих го под Windows. Но при внедряването под Centos 6.5 имахме много големи трудности с удовлетворяването на зависимостите. Linker трябваше ръчно да предпише очевидните неща.

Не беше възможно да се преодолеят трудностите до края, така че експериментът с D беше прекратен предсрочно. Много ни хареса самият език, но засега, уви, има проблеми с инструментариума.

Докато пишехме всичко това, сървърът не можеше да се справи вечер: нямаше достатъчно процесор. Затова решихме да направим още един ход, този път към PX90-SSD (Xeon E5-1650 v2, 64 GB ECC DDR3, 2 x 240 GB SSD).

Зората на нова ера

Преди сървърът Node да има време да се зарадва на двете нови ядра, q4x2 пусна своя Java сървър. Кодът ми напомни за първата версия на сървъра Node: всичко в един файл в процедурен стил. Постепенно доведохме кода до божествена форма, но все още беше ясно (след като се отървахме от детските рани) колко по-бърза е тази опция Node. По отношение на натоварването на процесора - около четири пъти. По време на пиковите часове, при ~500 заявки/сек, едно ядро ​​се използва от основния Java процес. За версията Node на четириядрен такъв товар беше недостижим, а на шестядрен беше много близо до границата.

Точно по това време решихме да въведем активирането на статистика на нашия уебсайт. Това означаваше, че токените за достъп, получени от клиентите, ще бродят в мрежата с всяка заявка. За да ги защити малко, сървърът беше хостван зад HTTPS. И тогава ни чакаше нова изненада.

Малко по-високо споменах детските рани на кода на Java. Междувременно ги третирахме няколко седмици, Java кодът не работеше много по-добре от стария и беше много вероятно шестглавият сървър да не изтегли проксито + https.

За да не се чака чудо, веднага беше закупен друг сървър: EX40 (i7-4770, 32 GB DDR3, 2 x 2 TB HDD), за да бъде frontend и да тегли https. Немците направиха сървър, но с един малък проблем, както се оказа по-късно: беше зададен IP в диапазона 5.x.x.x. Направихме фронтенд на него и всичко работи чудесно, но започнаха да се натрупват оплаквания във форума от хора, които не работят.

След като направихме малко проучване по този въпрос, открихме, че проблемът с 5.x.x.x е известно нещо, той е свързан с приложение, наречено Hamachi. Освен това новите версии на Hamachi се преместиха на 25.x.x.x (чудя се дали тези момчета по принцип не искат да използват частни мрежи за собствените си цели?), но това не ни улесни. Трябваше да се върна към главния сървър, тъй като по това време той вече можеше сам да се справи с цялата ни икономика и дори със солидни доставки.

Като цяло, в момента имаме целия бекенд: нашият код + базата данни работят на един и същ сървър. Средните стойности на натоварване рядко надвишават единица. Но сега сме замислили друга реорганизация на сървърната ферма с прехвърляне на базата данни на отделен сървър. Една от причините: Mongo има много трудно време при студен старт - след рестартиране не дърпа дори половината от товара, който дърпа след загряване (заради това, между другото, имаше проблеми на 3 август -4). Прехвърлянето към отделен сървър ще ви позволи да не го докосвате. Друга причина е, че имаме някои идеи за развитието на мода, което ще изисква значително увеличаване на размера на базата данни. Сегашните 2*240GB може да не са достатъчни. Като цяло можем да кажем, че проблемът с бекенда от наша страна е решен. Другият остава.

Борба с API на Wargaming

Вторият най-голям проблем след представянето на самия сървър, винаги имахме актуализации на статистиката на играчите. По очевидни причини всички наши потребители обръщат внимание на статистиката на играта по един или друг начин и повечето от тях искат да виждат тази статистика актуализирана възможно най-често (в идеалния случай в реално време). И по пътя към решаването на този проблем винаги сме имали WG API. Или по-скоро неговите ограничения.

Най-важният проблем за нас е ограничението на броя заявки от едно IP. По времето, когато все още нямаше публичен API, ограничението за IP беше около 10 заявки/сек. Бяхме, меко казано, недостатъчни. Затова те се измъкнаха възможно най-добре: имахме няколко прокси сървъра, през които се изпращаха API заявки.

С появата на API стана малко по-лесно по отношение на наличния лимит. Приложението ни получи премиум статус, което на теория ни дава право да правим 50 заявки/сек. И тогава започва НО:

  1. В старата версия (не публичен API, данни за мобилно приложение) всички данни, които ни бяха необходими за всеки играч, бяха събрани по един метод. И с появата на публичния API, данните бяха преразпределени според различни методи и трябваше да направим две заявки за всеки играч (/account/info/ , /account/tanks/).
  2. Тези методи поддържат заявки за множество играчи наведнъж (до 100). Тоест на теория бихме могли да поискаме до 5000 играчи/сек. Но реално една заявка към /account/tanks/ за 100 играча отнемаше ~45 секунди и ако се изпращат твърде често започват масово да падат.
    Чрез проба и грешка беше намерена рецепта за относително стабилна работа: заявка за 20 играча на всеки 2 секунди. Да, това ни върна на 10 играчи/сек. Поради недостатъчната стойност на тази стойност, периодите на актуализация бяха разграничени за потребителите на нашия мод и за всички останали.
    Ние актуализираме потребителите 3-4 пъти по-често. Например сега потребителите влизат в опашката за актуализиране след 3, а останалите - 11 дни след предишната актуализация.
  3. След известно време WG пусна нов метод - /tanks/stats/ . Методът даде много по-подробна статистика за резервоарите на играча в сравнение с /account/tanks/ и ние естествено искахме да я получим. Но! Този метод не поддържа запитване към списък с играчи. Само един. И това не беше най-лошото: още по-лошо, този метод даде несъществуващи танкове за някои играчи.
    Ето един пример, изпратен до техническата поддръжка на WG, който показва разминаване в показанията на двата метода почти два пъти. След малко проучване открихме, че показанията на резервоарите, които играчът действително има, са верни. Неправилни са само индикациите за резервоари, които ги няма. За нас това означава, че сега трябва да направим три заявки за всеки акаунт: /account/info/, /account/tanks/, /tanks/stats/. Освен това /account/tanks/ е необходим само за получаване на текущия списък с танкове и изхвърляне на ненужните от резултатите /tanks/stats/.
    Всичко това доведе до факта, че сега скоростта на актуализиране е намаляла до 8 акаунта / сек. Надяваме се, че някой ден ще можем да правим стотици / сек и мечтата на много потребители ще се сбъдне, ако не за реално време, то поне за ежедневни актуализации.
  4. Имаше и някои малки грешки: например, след разделянето на немския танк Pz.Kpfw.IV на модификации Pz_IV_AusfD, Pz_IV_AusfH и Pz_IV_AusfA, идентификаторите на тези танкове естествено се промениха. Но дълго време API издаваше стария ID=17 за някои акаунти, съответстващи на несподеления Pz.Kpfw.IV. И методът /encyclopedia/tanks/, от който намираме нивото и вида на танка, този ID вече не съдържаше, което понякога водеше до смешни резултати при изчисляване на рейтинги.
За щастие, сега е възможно да се изпращат доклади за грешки до такива чудеса. Преди това единственият отговор беше: нямате право да използвате ID на приложение на някой друг (?source_token=Intellect_Soft-WoT_Mobile-unofficial_stats). Тоест бавно, но сигурно промените към по-добро започнаха. Бяхме взети на сериозно. Така че чакаме, надяваме се и вярваме!

С това приключва втората част от историята. Предстои още една част, която ще разкаже за най-интересното - развитието на клиентската част от модификацията.

Тагове:

  • Wargaming
  • wargaming.net
  • XVM
  • измервател на елени
  • gamedev
  • разработка на игри
  • програмиране
  • wargaming_inside
Добави тагове

История за създаването на модификацията XVM (eXtended Visualization Mod) за играта World of Tanks. Във втората част ще намерите описание на историята на развитието на сървърната част на мода.

древно царство

Както казах в първата част, първият бекенд на мода работеше на VPS, беше написан на PHP и съхраняваше базата на играчите като файлове във файловата система. За да се избегне ограничението от 64K inode (ограничението на файловете в една директория обикновено може да се конфигурира, но този VPS изглежда има заключена настройка), беше използвана структура на три нива.

Първите две букви от псевдонима на играча станаха името на първата директория от корена на базата данни. Следващите две букви са името на директорията, вложена в нея. И вече в него имаше обикновени файлове с данни на играчи и имена, равни на прякори.

Заявките изглеждаха така: http://domain.com/users/ .

Всеки играч изпрати собствена заявка. Тоест от една битка могат да дойдат до 30 заявки. Вярно е, че от страна на клиента беше използвано кеширане на вече видяни играчи, което леко намали натоварването. След това това кеширане беше изоставено поради изключително ниския процент на попадения в рандома.

Въпреки примитивността, тази реализация имаше значително предимство - дори работеше на VPS и "дърпаше" сто или две заявки в секунда.

надежда

След преминаване към пълноценен сървър, друга реализация беше не по-малко бързо подадена, този път на PHP + MySQL. По това време ни се стори, че за нашата задача (запитване за един запис по индекс) и дори да работим на такъв „мощен“ хардуер (EQ4: Intel Core i7-920, 8 GB DDR3, 2x 750 GB SATA II HDD) , можем да използваме всички антимодели на дизайна - и пак ще работи. Реалността, както обикновено, не разочарова.

И така, какво „отглеждахме“ там:

  1. Шаблонът за заявка, разбира се, беше оставен такъв, какъвто е.
  2. Заявката беше проверена от обикновена програма за сходство с псевдоним.
  3. Търсих в базата данни за този псевдоним.
  4. Ако са го намерили и е актуализиран не много отдавна, тогава са го дали в отговора.
  5. Ако не го намерят или записът е твърде стар, забавлението започва.
Беше необходимо по някакъв начин да се получат данните на играча. По това време нямаше публични API, така че първото нещо, което ми дойде на ум, беше да анализираме страница като worldoftanks.ru/community/accounts/27030462-Alex. Но има един проблем: в URL адреса на страницата, освен псевдонима, има и ID, който не можем да получим от заявката. Поради това следващата точка на колективната ферма е страницата worldoftanks.ru/community/accounts или по-скоро формата за търсене на тази страница. Изпращаме от нашето приложение, така да се каже, AJAX заявка, която напусна страницата за търсене на играч. В отговор получаваме:

Request_data: ( echo: 0 filtered_count: 210846 items: [ абревиатура: "", account_url: "/community/accounts/27030462-Alex/", битки: 3737, clan_url: "", exp: 636853, id: 27030462, име: "Алекс", победи: 1686 ], …. )
Виждаме, че вече имаме не само идентификатор, но и готова връзка. Всичко може да се анализира.

За щастие горе-долу по същото време се появи мобилното приложение World of Tanks Assistant от Wargaming. Приложението доста добре показва статистиката на всеки играч. Добри хора направиха проучване и откриха протокола за обмен.

Данните бяха качени на:
http://worldoftanks.ru/uc/accounts//api//?source_token=Intellect_Soft-WoT_Mobile-unofficial_stats
ApiVersion нарасна от 1.3 на 1.7 през времето, в което го използвахме и преди появата на официалния API. За нас нямаше разлики. Вярно е, че проблемът с получаването на playerID, преди да направите заявка към API, не е изчезнал.

И да, ако някой все още не е разбрал: заявката за данни на играча е възникнала точно по време на обработката на заявката на клиента.

Този шедьовър на инженерството работеше последователно при натоварване от 200-300 заявки / секунда, което беше само малко повече от първата версия, която работеше върху статични файлове. Когато натоварването се увеличи, ние почивахме на процесора.

Възраждане

В началото моментите, в които сървърът не можеше да се справи, се случваха само в петък и събота вечер. С течение на времето тези „моменти“ се увеличаваха и увеличаваха. Стана ясно, че нещо не е както трябва. Натоварването ни не е рекордно, сървърът не е от най-слабите. Проблемът се утежняваше от факта, че нямахме опитни PHP специалисти. Както и нямаше опитни *nix специалисти.

Седна да помисли. Помислихме за следното:

  1. Най-важното е, че започнахме да подобряваме клиентската страна и намерихме начин да получим не само прякорите на играчите, но и идентификаторите.
  2. Оптимизирайте клиентските заявки, за да изисквате играчи не един по един, а всички наведнъж от една битка.
  3. Опитайте фантастичния пакет NodeJS + Mongo.
Първата версия на node-сървъра беше измита. Не използва никакви рамки. Само стандартни модули като http и mongo. Сървърът беше хардкор процедурен код.

Заявките започнаха да изглеждат така:

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

Първият вариант показа обнадеждаващи резултати - извади до 100-150 заявки / секунда. Нови заявки, за 30 играча, т.е. това е еквивалентно на ~4000 стари заявки на играч. Бяхме много впечатлени от увеличението от повече от 10 пъти поради технологичната промяна и тъй като по това време маржът на безопасност беше много солиден, започнахме да развиваме „статистическите“ възможности на XVM.

За пореден път те седнаха да помислят и решиха да направят нещо като REST услуга със следните методи:

Възможността за разработване на сървърна част за такава техническа спецификация в процедурен стил предизвика лоши мисли, така че решихме да опитаме друго модерно нещо: express .

Трябва да кажа, че преди това нямах опит с MVC рамка, но въпреки това го разбрах много бързо и буквално за две вечери направих първата работеща версия. Като цяло казвам най-топлите думи на разработчиците за възможността за бърз старт.

Полученият сървър, първо, работеше добре и второ, кодът му беше приятен за окото, за разлика от старата версия.

На тази вълна от вдъхновение реших да „ходя като разходка!“ и добави mongoose към ODM проекта. Кодът стана още по-красив, докато провеждах тестове на локална машина, буквално не можех да се наситя на факта, че всичко лежи красиво на мястото си и колко просто и логично работи всичко.

Време е да внедрите тази красота на сървъра. Разгърнат. Проверено - работи! Тръгна си за 20 мин. Идвам, проверявам - не става. Гледам в конзолата - процесът на възела върви. Рестартирам. Работи няколко секунди, след което - приглушено.

Няма да го влача дълго време: проблемът беше в процесора. При обичайното вечерно натоварване по това време кодовият вариант без мангуста шеговито усвои това натоварване, но вариантът с мангуста (въпреки цялата му красота) не го направи. За съжаление трябваше да върна почти всички промени за няколко дни.

Облаците се събират

В края на 2012 г. имаше нов скок в активността на потребителите на XVM и нашият прекрасен сървър спря да се справя с натоварването. Честно казано и преди имаше проблеми, но не толкова сериозни. Сега, вечер, модът не работеше, а не работеше. Като последна мярка дори завинтихме модула toobusy към сървъра, което ни позволи да обработим толкова заявки, колкото хардуерът може да обработи, и да пропуснем останалите. Мониторингът показа остър недостиг на памет за процеса mongo. Решихме да се преместим на друг сървър: EX-4S (i7-2600, 32 GB DDR3, 2x3 TB SATA III HDD).

Преместихме се. Чувствам се по-добре. Вярно, не за дълго.

Щом настъпи зимната ваканция, проблемът се появи отново. С цената на всякакъв шаманизъм над кода успяхме да доведем честотата на заявките от 150 до 180-200 в секунда, но това пак не беше достатъчно. Една от вечерите, когато всичко беше почти легнало, за целите на проверката, коментирах блока от код, отговорен за актуализирането на „изтеклите“ играчи с WG API и ... работи. И не е лошо: получихме стабилни 240 с пикове до 260 заявки / сек. Няколко дни по-късно се роди код, в който програмата за актуализиране на играчи беше отделена в отделен независим процес, а кодът, който директно взаимодействаше с клиентите, добави само идентификаторите на играчите, които трябваше да бъдат актуализирани, в отделна колекция.

Този ъпгрейд ни отне около месец. И отново видяхме същите проблеми: вечерите клиентските заявки започнаха да се пропускат. Този път се натъкнахме на IOPS. Без да мислим дълго, през март 2013 г. поръчахме допълнително оборудване за нашия сървър: 240GB SSD устройство. Тогава нямаше линия сървъри с предварително инсталирани SSD устройства.

помогна! Сървърът започна да тегли до 380-400 заявки / сек. За около половин година всичко работи доста гладко и не предизвиква особени оплаквания от потребителите. През август 2013 г. преминахме към нововъведения EX40-SSD, тъй като той отговаряше по-добре на нашите цели и беше по-евтин от EX-4S с допълнителен SSD.

И в края на 2013 г.... познахте, имахме същия проблем. Освен това този път нямаше очевидни и прости решения. Последното магьосничество над кода е свършено. Сървърът е доста добър. q4x2, който *nix специалист на свой ред „изкриви“ сървъра „доколкото е възможно“.

Съдържанието на /etc/sysctl.conf за заинтересованите

# Конфигурационен файл на ядрото sysctl за Red Hat Linux
#
# За двоични стойности 0 е забранено, 1 е разрешено. Вижте sysctl(8) и
# sysctl.conf(5) за повече подробности.

# Контролира препращането на IP пакети
net.ipv4.ip_forward = 0

# Контролира проверката на маршрута на източника
net.ipv4.conf.default.rp_filter = 1

# Не приемайте маршрутизиране на източника
net.ipv4.conf.default.accept_source_route = 0

# Контролира функционалността за отстраняване на грешки в системните заявки на ядрото
kernel.sysrq=0

# Контролира дали дъмповете на ядрото ще добавят PID към името на основния файл.
# Полезно за отстраняване на грешки в многонишкови приложения.
kernel.core_uses_pid = 1

# Контролира използването на TCP syncookies
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 = 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 = 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


Изобщо всичко, което можеше да се направи с малко кръв, е направено. Вече започнахме да мислим за закупуване на втори или трети сървър и настройка на балансиране.
Но една вечер, в разговор с q4x2, имахме спор, че не всички платформи са еднакво полезни. И казано по-просто, той ме убеди, че всичките ни проблеми се дължат на NodeJS и че е готов да направи своя собствена версия на сървъра в Java, която да „разбие“ Node в британския флаг. Силно се съмнявах в това, но се съгласих да участвам в експеримента и тъй като такова нещо, реших да опитам нещо родно.

Тъй като, както обикновено, исках нещо ново, изборът падна върху D и vibed framework. Изненадващо, дори аз, който работих почти изключително върху JS през последните три години, успях да измисля работеща версия сравнително бързо. Разработих го под Windows. Но при внедряването под Centos 6.5 имахме много големи трудности с удовлетворяването на зависимостите. Linker трябваше ръчно да предпише очевидните неща.

Не беше възможно да се преодолеят трудностите до края, така че експериментът с D беше прекратен предсрочно. Много ни хареса самият език, но засега, уви, има проблеми с инструментариума.

Докато пишехме всичко това, сървърът не можеше да се справи вечер: нямаше достатъчно процесор. Затова решихме да направим още един ход, този път към PX90-SSD (Xeon E5-1650 v2, 64 GB ECC DDR3, 2 x 240 GB SSD).

Зората на нова ера

Преди сървърът Node да има време да се зарадва на двете нови ядра, q4x2 пусна своя Java сървър. Кодът ми напомни за първата версия на сървъра Node: всичко в един файл в процедурен стил. Постепенно доведохме кода до божествена форма, но все още беше ясно (след като се отървахме от детските рани) колко по-бърза е тази опция Node. По отношение на натоварването на процесора - около четири пъти. По време на пиковите часове, при ~500 заявки/сек, едно ядро ​​се използва от основния Java процес. За версията Node на четириядрен такъв товар беше недостижим, а на шестядрен беше много близо до границата.

Точно по това време решихме да въведем активирането на статистика на нашия уебсайт. Това означаваше, че токените за достъп, получени от клиентите, ще бродят в мрежата с всяка заявка. За да ги защити малко, сървърът беше хостван зад HTTPS. И тогава ни чакаше нова изненада.

Малко по-високо споменах детските рани на кода на Java. Междувременно ги третирахме няколко седмици, Java кодът не работеше много по-добре от стария и беше много вероятно шестглавият сървър да не изтегли проксито + https.

За да не се чака чудо, веднага беше закупен друг сървър: EX40 (i7-4770, 32 GB DDR3, 2 x 2 TB HDD), за да бъде frontend и да тегли https. Немците направиха сървър, но с един малък проблем, както се оказа по-късно: беше зададен IP в диапазона 5.x.x.x. Направихме фронтенд на него и всичко работи чудесно, но започнаха да се натрупват оплаквания във форума от хора, които не работят.

След като направихме малко проучване по този въпрос, открихме, че проблемът с 5.x.x.x е известно нещо, той е свързан с приложение, наречено Hamachi. Освен това новите версии на Hamachi се преместиха на 25.x.x.x (чудя се дали тези момчета по принцип не искат да използват частни мрежи за собствените си цели?), но това не ни улесни. Трябваше да се върна към главния сървър, тъй като по това време той вече можеше сам да се справи с цялата ни икономика и дори със солидни доставки.

Като цяло, в момента имаме целия бекенд: нашият код + базата данни работят на един и същ сървър. Средните стойности на натоварване рядко надвишават единица. Но сега сме замислили друга реорганизация на сървърната ферма с прехвърляне на базата данни на отделен сървър. Една от причините: Mongo има много трудно време при студен старт - след рестартиране не дърпа дори половината от товара, който дърпа след загряване (заради това, между другото, имаше проблеми на 3 август -4). Прехвърлянето към отделен сървър ще ви позволи да не го докосвате. Друга причина е, че имаме някои идеи за развитието на мода, което ще изисква значително увеличаване на размера на базата данни. Сегашните 2*240GB може да не са достатъчни. Като цяло можем да кажем, че проблемът с бекенда от наша страна е решен. Другият остава.

Борба с API на Wargaming

Вторият най-голям проблем след представянето на самия сървър, винаги имахме актуализации на статистиката на играчите. По очевидни причини всички наши потребители обръщат внимание на статистиката на играта по един или друг начин и повечето от тях искат да виждат тази статистика актуализирана възможно най-често (в идеалния случай в реално време). И по пътя към решаването на този проблем винаги сме имали WG API. Или по-скоро неговите ограничения.

Най-важният проблем за нас е ограничението на броя заявки от едно IP. По времето, когато все още нямаше публичен API, ограничението за IP беше около 10 заявки/сек. Бяхме, меко казано, недостатъчни. Затова те се измъкнаха възможно най-добре: имахме няколко прокси сървъра, през които се изпращаха API заявки.

С появата на API стана малко по-лесно по отношение на наличния лимит. Приложението ни получи премиум статус, което на теория ни дава право да правим 50 заявки/сек. И тогава започва НО:

  1. В старата версия (не публичен API, данни за мобилно приложение) всички данни, които ни бяха необходими за всеки играч, бяха събрани по един метод. И с появата на публичния API, данните бяха преразпределени според различни методи и трябваше да направим две заявки за всеки играч (/account/info/ , /account/tanks/).
  2. Тези методи поддържат заявки за множество играчи наведнъж (до 100). Тоест на теория бихме могли да поискаме до 5000 играчи/сек. Но реално една заявка към /account/tanks/ за 100 играча отнемаше ~45 секунди и ако се изпращат твърде често започват масово да падат.
    Чрез проба и грешка беше намерена рецепта за относително стабилна работа: заявка за 20 играча на всеки 2 секунди. Да, това ни върна на 10 играчи/сек. Поради недостатъчната стойност на тази стойност, периодите на актуализация бяха разграничени за потребителите на нашия мод и за всички останали.
    Ние актуализираме потребителите 3-4 пъти по-често. Например сега потребителите влизат в опашката за актуализиране след 3, а останалите - 11 дни след предишната актуализация.
  3. След известно време WG пусна нов метод - /tanks/stats/ . Методът даде много по-подробна статистика за резервоарите на играча в сравнение с /account/tanks/ и ние естествено искахме да я получим. Но! Този метод не поддържа запитване към списък с играчи. Само един. И това не беше най-лошото: още по-лошо, този метод даде несъществуващи танкове за някои играчи.
    Ето един пример, изпратен до техническата поддръжка на WG, който показва разминаване в показанията на двата метода почти два пъти. След малко проучване открихме, че показанията на резервоарите, които играчът действително има, са верни. Неправилни са само индикациите за резервоари, които ги няма. За нас това означава, че сега трябва да направим три заявки за всеки акаунт: /account/info/, /account/tanks/, /tanks/stats/. Освен това /account/tanks/ е необходим само за получаване на текущия списък с танкове и изхвърляне на ненужните от резултатите /tanks/stats/.
    Всичко това доведе до факта, че сега скоростта на актуализиране е намаляла до 8 акаунта / сек. Надяваме се, че някой ден ще можем да правим стотици / сек и мечтата на много потребители ще се сбъдне, ако не за реално време, то поне за ежедневни актуализации.
  4. Имаше и някои малки грешки: например, след разделянето на немския танк Pz.Kpfw.IV на модификации Pz_IV_AusfD, Pz_IV_AusfH и Pz_IV_AusfA, идентификаторите на тези танкове естествено се промениха. Но дълго време API издаваше стария ID=17 за някои акаунти, съответстващи на несподеления Pz.Kpfw.IV. И методът /encyclopedia/tanks/, от който намираме нивото и вида на танка, този ID вече не съдържаше, което понякога водеше до смешни резултати при изчисляване на рейтинги.
За щастие, сега е възможно да се изпращат доклади за грешки до такива чудеса. Преди това единственият отговор беше: нямате право да използвате ID на приложение на някой друг (?source_token=Intellect_Soft-WoT_Mobile-unofficial_stats). Тоест бавно, но сигурно промените към по-добро започнаха. Бяхме взети на сериозно. Така че чакаме, надяваме се и вярваме!

С това приключва втората част от историята. Предстои още една част, която ще разкаже за най-интересното - развитието на клиентската част от модификацията.

Тагове:

Добавете маркери на сайта Версия: - Актуализирано: 24 януари 2018 г

Инсталирането на модове в игри може да бъде трудна задача. Но в World of Tanks разработчиците първоначално добавиха поддръжка за персонализирани модификации, така че в папката на играта има специална папка за модове, наречена res_mods, която отговаря за модификациите.

Теория за това как работят модовете

Нека да разгледаме как работи всичко това като цяло в Wot. Първо, играта зарежда всички ресурси от папката res, която съдържа файлове на играта като звук, текстури, модели, скриптове и др. Именно в World of Tanks всичко това е пакетирано в архиви, за да може играта да се зарежда малко по-бързо. Всъщност можем да вземем файла, който ни трябва (например кожата на танк) и да го променим. След това го връщаме обратно, заменяйки съществуващия файл. И всичко ще работи. Но този метод е неудобен, първо, ще трябва да запазим оригиналните файлове, в случай че нищо не работи, и второ, когато има много модове, няма да можем да изтрием всичко това, защото трябва да запомним какво и къде ние го хвърлихме.

За това съществува папката res_mods, след като играта зареди файлове от папката res, тя зарежда файлове от res_mods и ако има файл, който вече е зареден от папката res, тогава играта ще вземе последната опция, тоест нашият модифициран от папката res_mods. Ето как всичко се прави в World of Tanks по толкова удобен начин.

Как да инсталирате модове в World of Tanks?

В момента в World of Tanks има две папки за модификации. Първият е mods , появи се наскоро и е необходим за модове, които са пакетирани и имат формат .wotmods. Втората папка беше почти от самото начало, това е res_mods, необходима е за разопаковани модове.

И двете папки съдържат повече папки вътре в тях, с номера на текущата версия на играта, сега е 1.6.1.0, а папките на по-старите версии могат просто да бъдат изтрити, за да не пречат.

На нашия сайт във всеки мод пишем как да го инсталираме. Но често вече публикуваме модификации заедно с необходимите папки и следователно всичко, което е необходимо, е да отворите изтегления архив и да копирате (или разопаковате или прехвърлите съдържанието с мишката, това е едно и също нещо) в папката, в която имате Инсталиран World of Tanks.

Забележка: Ако не сте променили нищо по време на инсталацията на играта, тогава танковете са инсталирани в C:\\Games\World_of_Tanks . Всъщност това е папката с играта.

Винаги четете описанието на мода, ние ВИНАГИ пишем как точно да инсталирате този или онзи мод. По-долу е даден списък с възможни настройки.

Опции за инсталиране на модификации

  • Разопаковайте архива в папката World of Tanks - Тук всичко е просто, отворете изтегления архив, изберете всичко, което е там, с мишката и го прехвърлете в папката с инсталираната игра.
  • Копирайте папката mods (или res_mods) в папката World of Tanks - Всичко е същото като в предишната версия, но когато е написано по този начин, тогава може да има повече папки в архива, например с шрифтове или допълнителен мод опции, така че ако копирате всичко наведнъж, нищо няма да работи.
  • Разопаковайте архива в папката World of Tanks\mods\1.6.1.0 (или World of Tanks\res_mods\1.6.1.0) - Почти същото като преди, но сега, след като влезете в папката на играта, трябва да отидете по-нататък в модовете ( или res_mods) и след това към 1.6.1.0 и копирайте съдържанието на изтегления архив там.
  • Инсталиране на шрифтове - Лесно е, в архива има папка, наречена "шрифт", влезте в нея, след това щракнете двукратно върху всеки файл и след като шрифтът се отвори, щракнете върху "инсталиране". Всичко. Не е нужно да копирате нищо.
  • Run installer (или Run program) - В този случай това обикновено са или програми, или modpacks с инсталатори. Няма нужда да копирате нищо, просто щракнете двукратно и това е.

Деинсталиране на модовете на World of Tanks

За да премахнете конкретен мод, трябва да знаете какви файлове са инсталирани и просто да ги премахнете. И за да премахнете ВСИЧКИ модификации от танкове, трябва просто да изчистите папките mods/1.6.1.0 и res_mods/1.6.1.0. Но в никакъв случай не изтривайте самите папки 1.6.1.0, в противен случай играта просто няма да започне.

Всеки играч в съвременните компютърни игри използва модове. Това може да е нова сюжетна линия, допълнителна стратегия, функции на играча или задействане на някои функции в играта.

World of Tanks не беше изключение, така че да научите как да инсталирате мод в света на танковете никога няма да бъде излишно. И дори ако засега можете лесно да се справите без допълнителни опции, може да искате да опростите живота си в бъдеще, да стартирате нови функции на вашите танкове или да направите битките по-реалистични. И какво трябва да се направи за това - ще го разберем точно сега.

Какви са модификациите

Изборът на допълнителни модификации в Tanks е впечатляващ. Всички модове могат да бъдат разделени на групи. Помислете за най-значимите от тях:

  1. Звук
  2. Графичен
  3. гледки
  4. Хангари
  5. Оленемер.

Да започнем с най-мистериозното - последното, наречено елен. Нарича се още "елен метър" и "потребителски метър". Тази дума се отнася до нова функция в света, която ви позволява да разберете повече за играчите - техните статистики, брой победи и т.н. Смята се за един от най-полезните модове, тъй като играчът винаги знае с кого си има работа.

Модификаторът „хангари“, както подсказва името, ви позволява напълно да промените външния вид на вашия хангар в стратегията.

Допълнението „забележителности“ ви позволява да промените основния мерник на нов. Например, на мерника от Jove, който е особено обичан от играчите, тъй като може да показва времето за презареждане, увеличението, наличната издръжливост на резервоара, броя на снарядите в барабана и много други.

Модификациите на звука ви позволяват да промените гласовата игра на играта, карайки любимите ви "танкове" да звучат по нов начин. Те подобряват звуковия дизайн, правейки експлозии, изстрели, команди и рев на гъсеници по-реалистични. Има няколко вида от тях и всеки от тях може да създаде своя собствена бойна атмосфера. Те са инсталирани по същия начин.

Графичните модификации също са разделени на няколко подвида. Те включват функция, която ви позволява да видите слабите места в бронята на танковете. Функция, наречена "бели трупове", помага да видите врага, който се крие след битката. Освен това с помощта на инсталацията можете да направите железопътните платформи ярки, да боядисате свалените коловози в бяло, да подобрите видимостта на разстояние и много други. Всичко това помага много в битката.

За да използвате тези опции, първо трябва да ги инсталирате в клиента на играта.

Как да инсталирате модове на world of tanks

Всички допълнителни настройки в wot могат да бъдат зададени индивидуално, но е много по-лесно да работите с целия пакет наведнъж - така наречените modpacks. Те съдържат различни модификации на играта, предназначени да опростят стратегията и да я направят по-удобна и комфортна.

Най-популярният е „Modpack от Jove“, но има и много пакети от други разработчици. Всеки ще намери селекция по свой вкус. Инсталирането им е лесно - като обикновена програма с помощта на прост инсталатор.

Изборът на допълнителни модификации в Tanks е впечатляващ

Стратегия стъпка по стъпка как да инсталирате модове на world of tanks

И така, нека започнем:

  1. Отидете в папката с клиента на играта. Най-често можете да го намерите на следния адрес:
  2. D: /World of Tanks/.
  3. Търсите /res_mods. Тази папка се създава автоматично, необходима е, за да могат играчите сами да инсталират желаните модификации.
  4. Създаваме папка с името на използвания пластир на играта, тоест текущата му версия. Например - /0. 9.13.

По този начин, за инсталиране, ще трябва да преминете през следния път: D / World of Tanks / res_mods / 0. 9.13.

Новите модификации подобряват качеството на играта

Как да инсталирате модове на wot: подобрете зрението

Но не всичко е толкова просто, колкото в описания по-горе случай. Някои надстройки, като много обхвати, ще изискват създаване на допълнителни папки. В резултат на това, преди да инсталирате модове на wot, ще бъде създадена папка в документ /0. 9. 13, а в него има още няколко.

Целият път ще изглежда така:

  • Във файл /0. 9. 13. създайте gui файл
  • Създайте документ с мащабна форма в gui
  • Проверяваме пътя. Изглежда така: D /World of Tanks/res_mods/0. 9.13.0/gui/scaleform

Всъщност няма нищо сложно в създаването на допълнителни папки в wot, така че обикновено няма проблеми с инсталирането на различни допълнения към стратегията.

Подобряване на качеството на прегледа

Подобряване на звука

Инсталирането на разширените настройки на звука е доста просто. Трябва да ги изтеглите на сайта, обикновено файлът се нарича / audio. Файлът с клиента на играта ще има същия файл и всичко трябва да бъде копирано в папката на играта. Копираме с подмяната на текущи документи, така че модът да върви.

Преди инсталиране не забравяйте да затворите клиента на играта.

Модове за World of Tanks: за танкове и допълнения към играта. Видове модификации и причини за тяхното инсталиране. Инструкции за инсталиране на модове + ТОП 10 най-добри + сравнение на 3 най-добри модпакета в Интернет.

Въпреки че World of Tanks има широка гама от функции, на повечето геймъри липсват малките неща, които могат да направят процеса на танкиране многократно по-интересен.

За да решат този проблем, много занаятчии в мрежата разработват модове за World of Tanks. Относно танковете и средата на играта, какви добавки са налични и как да ги инсталирате - ще отговорим на тези и други въпроси в нашата днешна статия.

Какво е мода?

Мод- софтуерна добавка към основния клиент на играта, която ви позволява да променяте/подобрявате елементи от механиката и визуалните ефекти.

Подобряване на бойните характеристики, спомагателни информационни екрани - тези и други трансформации позволяват на играча да персонализира интерфейса на играта по свой вкус и предпочитания за дизайн.

Защо да слагате модове за World of Tanks?

  1. Разширете функционалността на бронираните превозни средства.
  2. Увеличете стандартните параметри на резервоарите.
  3. Настройте фино отделните елементи на играта.
  4. Промяна на визуалното представяне на отделни местоположения.
  5. Персонализирайте саундтрака по ваш вкус.
  6. За да получите повече статистика и друга подкрепяща информация, която ви позволява да се ориентирате по-добре в действията на вражески танк.

Списъкът е безкраен - броят на разширенията е много голям. При желание потребителят има възможност да промени дизайна и механиката на отделни елементи на резервоара до неузнаваемост.

Какви са модовете за World of Tanks за танковете и как да ги инсталирате?

По време на съществуването на играта World of Tanks броят на модификациите е нараснал експоненциално. Днес собственикът на танк може да превърне пистолета си в истинска необуздана сила, унищожавайки врага с един залп.

Някои механични промени се считат за измама, последвани от замразяване на акаунта, така че трябва да правите разлика между модовете по няколко начина.

Модификациите за World of Tanks по метод на разработка са:

  • Официален - издава се от служители на компанията, разработила играта. Качеството им е с порядък по-високо от останалите + промените се отнасят в по-голямата си част до външния дизайн.
  • Авторско право - такива модификации за танкове се произвеждат от занаятчии. Качеството на рисуване не винаги отговаря на високо или дори средно ниво. Повечето от промените се отнасят до фината настройка на танковете в играта.

Ако официалните модификации засягат играта минимално, тогава модификациите с авторски права се разделят на допустимои изневерява(тоест тези, които дават превъзходство над вражеския танк поради промени във физиката или механиката на играта). Последните са забранени за използване и ако използването им бъде доказано, потребителят ще бъде изправен пред постоянна забрана на игралния акаунт.

За да използвате разширена функционалност, модовете трябва първо да бъдат инсталирани. Разпределете частни програмии цели сборки("модпакети"). Последното ще бъде разгледано по-подробно по-долу.

1. Схема за инсталиране на мода за World of Tanks.

  1. Намерете папката на играта. По подразбиране (ако не сте променили папката в клиента) тя се намира на същото устройство като операционната система "C"

    По-напредналите потребители поставят клиента на диск без операционна система - това ще спести данни при преинсталиране на операционната система. Пример за път - C:/World of Tanks/

  2. След това намерете вътре папката с името "res_modes". Той е създаден от разработчиците специално с цел инсталиране на модификации към основния клиент на играта.
  3. Намерете папката с версията на играта вътре и ако я няма, създайте я. Грубо казано, крайният път трябва да изглежда така - "C:/World of Tanks/res_modes//0.9.22"

    Стойността на версията на продукта не е постоянна, тъй като новите пачове се пускат поне веднъж месечно

  4. В 60-70% - това е всичко, което е необходимо, но някои модове за танкове изискват създаване на допълнителни папки (за повече информация потърсете информация на сайта, където изтегляте мода)

    Например за забележителности имате нужда от още две подпапки - "/gui"и "/scaleform". Тогава крайният път на разопаковане на елементите ще бъде − "C:/World of Tanks/res_modes//0.9.22/gui/scaleform"

Този алгоритъм за инсталиране на модове се използва както за резервоара, така и за други елементи на интерфейса.

2. Как да инсталирам звуков мод за World of Tanks?

В мрежата има и друг вид модове, които играчите могат да променят - аудио. Ако сте уморени от стандартните звуци на изстрели или шума на гъсеници, тези промени са точно това, от което се нуждаете.
  1. Изтеглете модния архив, който харесвате, от тематичния сайт за играта World of Tanks.
  2. Намерете папката на клиента на играта на вашия твърд диск.
  3. Намерете вътре в папката с аудио съпровод за играта. Най-често тя има начин - C:/World of Tanks/аудио.
  4. Копирайте звуковите файлове от изтегления архив в намерената папка със замяна.

Преди да инсталирате мод за танкове или за целите на декорацията, не забравяйте да затворите клиента на играта. Ако тази операция не бъде извършена, може да възникнат конфликти между модификации и вече вграден софтуер, което ще доведе до изхвърляне от играта или пълно спиране на нейната работа.

3. Кои са най-популярните модификации на танкове?

    Целево преобразуване.

    Основният поглед не може да предостави достатъчно информация за оценка на ситуацията, следователно, използвайки подобрения, играчът има възможност значително да напредне в бойната тактика и да повиши ефективността си.

    Време за презареждане на оръжието, мащабиране, противник, капацитет/наличност на амуниции - тези и други данни значително ще помогнат на начинаещия да се ориентира дори в критични ситуации.

    Преобразуване на графики.


    Това са модове за танкове за промяна на визуализацията по време на битка.

    Такива модификации ви позволяват да видите уязвимостите на танка, да стреляте през счупените вражески превозни средства, да увеличите видимостта на бронираната машина, както и много други малки неща, използването на които ще улесни живота на обикновен играч в World of Танкове.

    Звукови трансформации.

    Това включва цялата гама звукови ефекти - изстрели, светлина, критични моменти и така нататък.

    Трансформация на хангари.

    Визуален компонент, който не засяга самия геймплей. Използва се за придаване на подходяща атмосфера на играта.

    Трансформирайте статистиката на екрана.

    Увеличаване на информационното съдържание на финалния екран след битката + възможност за проследяване на голям брой параметри в реално време.

Пакети или отделни модове - кое е по-добро?

Ако сте нов в света на World of Tanks, използването на пакети значително ще опрости процеса на инсталиране на модификации на танкове. Не е нужно ръчно да разопаковате и да търсите дестинацията на мода. Всичко, което трябва да направите, е да стартирате инсталатора и да следвате инструкциите стъпка по стъпка.

Има много повече модификации за танкове, отколкото сме описали по-горе. Има такива, които не се вписват в нито една от категориите. Изтеглете мода отделно или използвайте пакета - зависи от вас.

Имайте предвид само факта, че когато използвате пакет от модове за танкове, няма да имате възможност да избирате напълно - броят на модификациите, съдържащи се в сборката, е ограничен и може не винаги да отговаря на изискванията на взискателните WOT геймъри.

Най-добрите модове за World of Tanks за танкове и игрова среда: ТОП-10


След общо запознаване, нека филтрираме мрежата и да изберем най-добрите модове в различни посоки, които могат да направят процеса на игра най-удобен, както за начинаещ, така и за професионален танкер.

Невъзможно е да се вземат предвид субективните мнения на всички, но има такива модове за танкове, които са задължителни за използване от абсолютно всички.

При съставянето на върха се ръководихме от анкети на официалните форуми за игри World of Tanks. Всеки от модовете е инсталиран на техния клиент от повече от 50% от потребителите на играта (от тези, които използват танкови модове като цяло).

1) МЕРНИК "ДАМОКЛЕВ МЕЧ".

Способността за прецизна стрелба е основата на играча в World of Tanks. За съжаление базовият мерник е много ограничен по отношение на функционалността, така че промяната на този елемент е първото нещо, което трябва да направите след инсталирането на клиента на играта.

Мод за танка "Дамоклев меч" за 2017-2018 г. е най-доброто решение в раздела за забележителности.

Мод функционалност:

  • мерници за снайперска и аркадна стрелба;
  • специализиран художествен поглед;
  • показатели за бронепробиваемост и пълна информация за възможностите на мерника;
  • възможно е да се изчисли интервалът от време на полета на боен снаряд;
  • корелира показанията за обхвата на целта и вашия потенциал за поражение;
  • показва скоростта на движение на вражеския танк;
  • UVN + радиус на раздробяване на резервоара.

Цялата информация, предоставена от мода, се вписва добре в интерфейса и не се намесва в битка. Използвайки разумно данни за противника, професионален играч ще може да покаже висш пилотаж в World of Tanks, а начинаещият значително ще опрости обучението и ще подобри тактическите умения.

2) ПАНЕЛ ЗА ЩЕТИ ОТ LOCASTAN.

Модификация на панела за повреди, която позволява на водачите на танкове да подобрят основния набор от функции в World of Tanks. Модификацията е разработена на базата на добре познатия авторски панел от Stlite.

Разлики на модата от аналозите:

  • възможност за преглед на дневника за повреда на резервоара;
  • показани са рикошетни отскоци на снаряди;
  • резервоарните модули са прозрачни, докато не се повредят - този подход улеснява анализирането на ситуацията като цяло;
  • обратно броене за ремонт на резервоарни модули;
  • индикатор за ярък огън.

Този мод се предлага в 3 версии:

  • Първият панел ще съответства на описанието по-горе.
  • Втората модификация ще бъде разположена в центъра на екрана и ще съдържа информация за модулите на танка.
  • Третият подчертава данните за ремонта, които също ще бъдат разположени в центъра.

3) БОЙЕН ИНТЕРФЕЙС Z-MOD ОТ MARSOFF.

Нова работа от известния модер. Интерфейсът на този мод за танкове съчетава само най-добрите елементи в битката. На пръв поглед панелът може да изглежда труден за възприемане, но след няколко битки ще оцените възможностите на този мод.

Характеристики на мода:

  • премахнати аркадни и арт забележителности;
  • няма панел за отстраняване на грешки;
  • няма таймер, който да показва времето на танка в битка;
  • няма мини-карти с преглед;
  • На мини картата няма артилерийски мерник.

Интерфейсът се отърва от много ненужни елементи и цялата функционалност вече е подредена на този минималистичен панел.

В модификацията имаше индикатор за възникване на пожар в близост до резервоара и обратно броене за ремонт на модули - най-необходимите елементи. Скоростомерът вече се намира в централната част на екрана близо до мерника на танка.

4) УМНА МИНИ-КАРТА ЗА WORLD OF TANKS ОТ LOCASTAN.

В новите клиентски корекции разработчиците разшириха функционалността на основния инструмент, но информацията все още не е достатъчна, защото играчите все още търсят висококачествени модове на мини-карти в мрежата - това е един от тях.

Добавки, направени от мода:

  • добавени кръгове за преглед;
  • добавен чертожен кръг;
  • съответните знаци се показват на местата, където са унищожени вражески танкове;
  • размерът на иконите на танковете е увеличен;
  • фина настройка на информацията, предоставена на потребителя.

Основните функции също не са изчезнали. Светлината на вражеския танк, UGN, посоката на лъча на пистолета - всичко това ще остане на законните си места.

Модът е сглобен, като се вземат предвид желанията на стотици играчи на World of Tanks, което означава, че модификацията ще повлияе положително на качеството на играта както за начинаещи, така и за професионални танкисти.

5) КОЖИ НА AESTHET ОТ СЕРГЕЙ ЕМЕТС ЗА WORLD OF TANKS.

В WOT броят на военните превозни средства е надхвърлил 360 единици и всяко превозно средство има както силни, така и слаби страни. За да избегнете по-вероятно неприятни изненади, беше разработен специален мод за танкове, който ви позволява да разберете за дебелината на проникването на бронята на всяко превозно средство в играта.

Степента на уязвимост зависи от цвета, даден от мода:

  • синьо - описва контура на горивните секции на резервоара;
  • зелено - описва контура на двигателя на бойното превозно средство;
  • лилаво - контур за полагане на броня;
  • червено - уязвимости на резервоара, където е най-лесно да го пробиете.

Други подобни модификации на World of Tanks са твърде неясни, понякога просто е невъзможно да се разграничат зоните. Както подсказва името, естетиката на представяне е това, което отличава този мод от другите - всички проблемни зони са само очертани, а не напълно запълнени с цвят.

Като бонус има икони, които сигнализират на играча за местоположението на екипажа вътре в резервоара, което ще улесни сътресението на някой от тях. Модът съдържа зони за проникване на танкове от нива 4 до 10 включително. Този комплект е един от най-големите и функционални в играта.

6) MOD ПРОМЯНА НА ХАНГАРИ ЧРЕЗ НАТИСНАНЕ НА БУТОН ДИРЕКТНО В ХАНГАРА.

Броят на модовете за хангари в играта е огромен. „Кожите“ се правят от всеки, който не е твърде мързелив, следователно, според субективното мнение, няма смисъл да избирате нещо от този раздел.

Бихме искали да насочим вниманието ви към мод, който ви позволява да сменяте хангарите в World of Tanks, без да напускате интерфейса на играта. За да работи модът, просто изберете хангара от падащия списък и потвърдете чрез бутона "Запазване". Всички промени влизат в сила незабавно.

Модът е наличен, които се намират в папката "skins". Модификацията работи както с основни, така и с премиум хангари.

7) WOTLOGGER3 ЗА WORLD OF TANKS.


Статистиката е един от най-важните показатели, който ви позволява да анализирате битките и да откриете корена на проблема. Основната функционалност на клиента е повече от лоша, така че инсталирането на мод за танкове според статистиката е задължителна стъпка, ако планирате да играете WOT повече от няколко седмици.

Какви функции добавя модът:

  • статистика на всички изиграни битки за посочения период от време;
  • филтри за избор на битки с победи/поражения;
  • показване на целия списък с битки с голямо количество спомагателни данни;
  • налично е групиране на битки по определени критерии.

Модът се актуализира постоянно и се адаптира към танковете в съответствие с желанията на потребителите.

Първоначално този мод беше представен като програма, която трябваше да бъде стартирана извън клиентското пространство. В следващите актуализации беше решено да се направи модификацията вградена, което значително опрости живота на играчите на World of Tanks при изучаването на ефективността на техните битки.

8) DEER/XVM ЗА WORLD OF TANKS.

Най-популярният мод сред шофьорите на танкове - повече от 3 500 000 играчи в World of Tanks го използват ежедневно. Това се дължи на огромната му функционалност, с която дори опитни танкисти не могат да се справят веднага.

Какво може да направи режимът на елени:

  • да покаже ефективността на битката с танкове както на съперници, така и на съюзници по оръжие;
  • дава броя победи/поражения за всеки танкер;
  • като взема предвид горните две точки, изчислява вероятността за печалба в процентно изражение;
  • съдържа дневник на щетите по време на битката;
  • подобрява мини-картата и добавя към нея спомагателни данни за танковете;
  • вградени светлинни индикатори;
  • показва скоростта на вашата интернет връзка - индикатори на базата и в хангара;
  • добавен индикатор, сигнализиращ за атака на базата - показва броя на танковете + обратно броене до пълно улавяне;
  • променени са и обозначенията над резервоарите.

Изпратеният списък е само върхът на айсберга на мода, пълната му функционалност се разкрива от играча, който вече е на танка по време на самата битка. Броят на различните лосиони е много голям, така че изтеглете инструкциите за инсталиране и конфигуриране с мода, тъй като ще бъде много проблематично да разберете сами тънкостите на модификацията.

Разработчиците са направили два вида модове за танкове - лека и пълна версия. „Леката“ версия е предназначена за слаби компютри и съдържа само проследяването на елени и дневника на попаденията.

9) МЕРНИК "СКОБА" ЗА WORLD OF TANKS.

Един от новите модове за подобряване на мерника на танка. Цветовият дизайн в тюркоазени тонове не наранява очите и подобрява видимостта в проблемните зони. Дизайнът, въпреки че не може да се припише на стандарта, но след 5-7 битки в танкове, лесно ще приемете тази гледка във вашия арсенал от модификации.

Мод функционалност:

  • промяна на фразата за презареждане;
  • Процентите на здравето са заменени с XP бар;
  • патрон с голям калибър ще служи като индикатор за проникване.

Този мод е един от най-популярните сред нестандартните. Актуализациите се отнасят за всички видове мерници, което ще ви позволи да се насладите на висококачествени битки в танкове във всякакъв тип местоположение.

10) ПРОЕКТ WOT-MOD - MOD МЕНИДЖЪР.

Разгледахме голям брой модификации. Но какво ще стане, ако искате да инсталирате няколко модификации наведнъж и да запазите възможността бързо да ги промените? Както в случая с хангарите, играчът на танк може да опрости живота си с проста програма, която управлява всички инсталирани модификации на World of Tanks.

Функционалност на програмата:

  • възможност за инсталиране / премахване или временно деактивиране на модове чрез интерфейса на програмата;
  • възможно е сами да създадете пакет от модове и тук няма да имате нужда от дълбоки познания по програмиране;
  • много подходящ за тестване на модификации на танкове - за тази цел е създаден деактивиращи модификации.

Подробни инструкции за използване на мода за World of Tanks са предоставени заедно с програмата, но дори едно дете може да разбере тънкостите на работата тук. Това е удобен инструмент за тези, които обичат да тестват модификации в танкове, но не искат постоянно да се занимават с модификации ръчно.

Избрахме само най-добрите модификации за World of Tanks за танкове и околната среда в играта. Всеки от тях е в състояние да отрази качествено възможностите на вашия автомобил и да разгърне пълния му потенциал.

Кой пакет за World of Tanks да избера?

Вече засегнахме темата за мод пакетите малко по-горе. Компилирането на балансиран modpack е изкуство, с което само истински фен на World of Tanks може да се справи.

Критерии за избор на Modpack:

    Броят на модовете в пакета.

    Това не означава, че смесица от нея не е ясно какво ще се случи. Всички модификации трябва да бъдат заявени от играчите на танкове.

    Качество на мода.

    Използването на съмнителни модули може да повреди не само клиента на играта, но и целия компютър като цяло. Пакетът трябва да се състои от официално одобрени модификации.

    Само в този случай не можете да се притеснявате за безопасността на личната информация на устройството.

    Декор.

    Инсталаторът трябва да има интуитивен интерфейс и да не натоварва очите на потребителя.

    Честота на актуализиране.

    Много важен параметър, тъй като пряко зависи от това дали модовете ще работят на клиента или не. Поради честите актуализации на играта, авторът трябва бързо да реагира на тези промени и съответно да коригира монтажа.

Имайки предвид всичко по-горе, ние избрахме първите три модпакета, които 100% отговарят на зададените условия. За по-голяма яснота ще ги подредим под формата на сравнителна таблица, където можете да оцените всички предимства и съдържание на всеки от тях от ваша субективна гледна точка.

Как да получите значително предимство пред врага?

Най-добрите модове за World of Tanks.

Сравнителна таблица на 3-те най-добри модификации в мрежата.

Мода от AMWAY921Мода от JOVE (JOVE)Мода от PROTANKI
1. eXtended Visualization Mod - разширени маркери, щети от отдръпване, модификация на улавянето на основата и регистър на щетите.Обхват Super Jova.Стандартен обхват с таймер за презареждане.
2. Автоматично откриване на текущия изглед на резервоара.Прозрачно затъмнение в снайперски режим."Изборът на Йов" - OverCross. Минималистичен мерник, базиран на мерника по подразбиране на играта.
3. Замяна на стандартните звуци на играта: „Повикване“, когато модулите са критично повредени, и звукът, когато се задейства предимството „6th Sense“.Различни панели за повреди.„MathMod на MeltyMap“. Интерфейсен мод, разработен от играчи от клъстера на ЕС.
4. Подобрен индикатор за посока на атака.Интелигентни мини-карти, както в XVM, така и алтернативни."Commander Camera" - мод за максимално разстояние на камерата в аркаден режим.
5 Подобрен индикатор за броя на снарядите.Крушки "Шесто чувство" + озвучаване за тях."Деактивиране на люлеенето" - деактивира люлеенето на камерата в снайперски режим.
6. Увеличете времето за показване на „крушката“, когато се задейства предимството „6th Sense“.Различни гласове.Информация за прераждане при зареждане в битка. Вместо "подсказка" в екрана за зареждане.
7. Показване на отделен маркер за TT10 на миникартата.информативни маркери.Можете да промените поведението на камерата - мод за деактивиране на ефектите при получаване на щети.
8. SafeShot: Предотвратява стрелба по новоунищожени танкове.Zoom mod.Мерник на сървъра - този мод показва накъде е насочен мерникът на вашия танк според сървъра на играта.
9. Премахване на камуфлажи, емблеми и надписи от танкове.Прозрачни камуфлажни кожи и бели трупове на танкове.Разширена статистика. Мод за показване на общите ви резултати за текущата игрова сесия.
10. Забележителности с разширени функции.Увеличен обхват на видимост на карти с мъгла.XVM маркерите над превозните средства заменят стандартните маркери за резервоари с по-информативни.
11. Персонализирани панели за щети: Стандартен панел за щети и персонализиран панел за щети.Статистика на сесията.„Активиране на въртележка на танкове“ – няколко мода за персонализиране на списъка с танкове в хангара.
12. Деактивирайте трептенето и трептенето на изображението при нанасяне на щети.Wot Replays Manager е програма за работа с повторения.Хоризонтални ъгли. Незаменим мод за танкове без купол или с ограничено въртене.
13. Ъгли на издигане за Art-SPG и Fri-SPG.Най-добрият калкулатор за броня, като се вземе предвид ъгълът на наклона на снаряда.Информационен панел на избраната цел. Модът показва основна информация за танка на противника ви.
14. Zoom: командна камера с възможност за деактивиране на динамични ефекти на камерата.WoT Tweaker е програма за увеличаване на FPS чрез деактивиране на различни ефекти.Вражески варели на мини картата.
15. NoScroll: снайперски мерник само при натискане на "Shift"Посоки на вражеските варели на мини картата.Маркер за посока на повреда.
16. ZoomX: многопозиционен снайперски мерник (x2, x4, x8, x16).Кръг за снимане на инвис от храстите.Калкулатор за рейтинг в битка.
17. Премахване на засенчване в снайперския мерник.Мод бели трупове на танкове и гъсеници.Предупредете съюзниците за светлината.
18. Подробна статистика за сесията на сървъра.Подобрено x25 увеличение в снайперския мерник.Бели танкове. Подобно на белите фургони, той помага да „вземете“ противниците зад прикритие.
19. Цветни съобщения за резултатите от битката.HP резервоари в ушите (в 2 версии).Бели паднали гъсеници. Модът ясно показва състоянието на шасито на противници или съюзници.

Таблицата показва само най-важните компоненти на опаковките, които трябва да бъдат във всеки комплект.

Всичките 3 опции са в горната част на класацията за популярност, но първо място се държи от "Про танкове". По този проект работи цяла група специалисти. След новите кръпки на World of Tanks, тези момчета са първите, които пуснаха актуализирана версия на компилация за променените версии на клиента.

Използвайте модове за World of Tanks за танкове- означава да се подобри производителността на всяка битка с 40-50%. И ако професионалистът използва модификации, тогава 100%.

Някои смятат, че използването на модове е измама, но официално одобрените функционални подобрения дават свобода на танкера в играта, доставяйки още повече удоволствие от процеса. А това е най-важното в танковете!