كيفية إنشاء تعديلات لعالم الدبابات. كيفية تثبيت تعديلات الخزانات - إرشادات خطوة بخطوة على ما تتم كتابة تعديل wot عليه

قصة حول إنشاء تعديل XVM (تعديل التصور الموسع) للعبة World of Tanks. في الجزء الثاني ، ستجد وصفًا لتاريخ تطور جزء الخادم من الوضع.

المملكة القديمة

كما قلت في الجزء الأول ، تم تشغيل الواجهة الخلفية الأولى للمود على VPS ، وتمت كتابتها بلغة PHP وتخزينها في قاعدة المشغل كملفات في نظام الملفات. لتجنب حد 64 كيلو بايت 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. إذا لم يجدوه ، أو كان السجل قديمًا جدًا ، فستبدأ المتعة.
كان من الضروري بطريقة ما الحصول على بيانات اللاعب. في ذلك الوقت ، لم تكن هناك واجهات برمجة تطبيقات عامة ، لذلك كان أول ما يتبادر إلى الذهن هو تحليل صفحة مثل worldoftanks.ru/community/accounts/27030462-Alex. ولكن هناك مشكلة واحدة: في عنوان URL للصفحة ، بالإضافة إلى الاسم المستعار ، هناك أيضًا معرف ، لا يمكننا الحصول عليه من الطلب. لهذا السبب ، فإن النقطة التالية للمزرعة الجماعية هي صفحة worldoftanks.ru/community/accounts ، أو بالأحرى نموذج البحث في هذه الصفحة. نرسل من تطبيقنا ، كما كان ، طلب AJAX الذي ترك صفحة بحث اللاعب. ردا على ذلك نحصل على:

Request_data: (echo: 0 filtered_count: 210846 عنصرًا: [اختصار: ""، 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 خلال الوقت الذي استخدمناه فيه وقبل ظهور واجهة برمجة التطبيقات الرسمية. لم تكن هناك اختلافات بالنسبة لنا. صحيح أن مشكلة الحصول على playerID قبل تقديم طلب إلى API لم تختف.

ونعم ، إذا كان شخص ما لم يفهم بعد: تم طلب بيانات اللاعب مباشرة أثناء معالجة طلب العميل.

عملت هذه التحفة الهندسية باستمرار في ظل حمل يتراوح من 200 إلى 300 طلب / ثانية ، وهو ما يزيد قليلاً عن الإصدار الأول الذي كان يعمل على الملفات الثابتة. عندما زاد الحمل ، استندنا إلى وحدة المعالجة المركزية.

عصر النهضة

في البداية ، كانت اللحظات التي لم يتمكن فيها الخادم من التأقلم تحدث فقط في أمسيات الجمعة والسبت. بمرور الوقت ، ازدادت هذه "اللحظات" وازدادت. أصبح من الواضح أن شيئًا ما لم يكن صحيحًا. حملنا ليس سجلاً ، الخادم ليس هو الأضعف. تفاقمت المشكلة بسبب عدم وجود متخصصين ذوي خبرة في PHP. فضلاً عن عدم وجود متخصصين من ذوي الخبرة * لا شىء.

جلس للتفكير. فكرنا في ما يلي:

  1. الأهم من ذلك ، بدأنا في تحسين جانب العميل ، ووجدنا طريقة ليس فقط للحصول على ألقاب اللاعبين ، ولكن أيضًا المعرفات.
  2. قم بتحسين طلبات العميل لطلب لاعبين ليس واحدًا تلو الآخر ، ولكن كل ذلك مرة واحدة من معركة واحدة.
  3. جرب حزمة NodeJS + Mongo الفاخرة.
تم غسل الإصدار الأول من خادم العقدة. لم تستخدم أي أطر. الوحدات القياسية فقط مثل http و mongo. كان الخادم رمزًا إجرائيًا صارمًا.

بدأت الطلبات تبدو كما يلي:

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

أظهر الخيار الأول نتائج مشجعة - فقد سحب ما يصل إلى 100-150 طلبًا في الثانية. طلبات جديدة لـ 30 لاعبًا ، أي هذا يعادل 4000 طلب قديم لكل لاعب. لقد تأثرنا كثيرًا بالزيادة التي تجاوزت 10 مرات بسبب التغيير التكنولوجي ، وبما أنه في ذلك الوقت كان هامش الأمان قويًا للغاية ، بدأنا في تطوير القدرات "الإحصائية" لـ XVM.

مرة أخرى ، جلسوا للتفكير وقرروا القيام بشيء مثل خدمة REST بالطرق التالية:

تسبب خيار تطوير جزء خادم لمثل هذه المواصفات الفنية بأسلوب إجرائي في حدوث أفكار سيئة ، لذلك قررنا تجربة شيء عصري آخر: التعبير.

يجب أن أقول أنه قبل ذلك لم يكن لدي أي خبرة مع أي إطار عمل MVC ، ولكن على الرغم من ذلك ، فقد اكتشفت ذلك بسرعة كبيرة ، وحرفياً قمت بعمل أول إصدار عملي في أمسيتين. بشكل عام أقول أحر الكلمات للتعبير عن المطورين عن إمكانية البدء السريع.

الخادم الناتج ، أولاً ، يعمل بشكل جيد ، وثانيًا ، كان كوده ممتعًا للعين ، على عكس الإصدار القديم.

في هذه الموجة من الإلهام ، قررت أن "أمشي كالمشي!" وأضاف النمس إلى مشروع ODM. أصبح الرمز أكثر جمالًا ، بينما كنت أجري الاختبارات على آلة محلية ، لم أكن أسعد حرفيًا أن كل شيء كان جميلًا في مكانه وكيف كان كل شيء بسيطًا ومنطقيًا.

حان الوقت لنشر هذا الجمال على الخادم. نشر. تم الفحص - إنه يعمل! لقد غادر لمدة 20 دقيقة ، جئت لأتأكد - لا يعمل. أنظر في وحدة التحكم - عملية العقدة قيد التشغيل. أعد التشغيل. يعمل لبضع ثوان ، ثم - مكتوما.

لن أسحبها لفترة طويلة: كانت المشكلة في وحدة المعالجة المركزية. في ظل الحمل المسائي المعتاد في ذلك الوقت ، قام متغير الكود بدون النمس بهضم هذا العبء على سبيل المزاح ، لكن البديل مع النمس (على الرغم من كل جماله) لم يفعل ذلك. اضطررت للأسف إلى التراجع عن جميع التغييرات تقريبًا لعدة أيام.

تتجمع الغيوم

في نهاية عام 2012 ، كانت هناك زيادة أخرى في نشاط مستخدم XVM ، وتوقف خادمنا الرائع عن التعامل مع الحمل. بصراحة ، كانت هناك مشاكل من قبل ، لكنها لم تكن خطيرة. الآن ، في المساء ، لا يعمل الوضع بدلاً من العمل. كحل أخير ، قمنا حتى بربط وحدة toobusy بالخادم ، مما سمح لنا بمعالجة أكبر عدد ممكن من الطلبات التي يمكن للجهاز التعامل معها وتخطي الباقي. أظهرت المراقبة نقصًا حادًا في الذاكرة لعملية المونغو. قررنا الانتقال إلى خادم آخر: EX-4S (i7-2600 ، 32 جيجا بايت DDR3 ، 2x3 تيرا بايت SATA III HDD).

لقد انتقلنا. أشعر بتحسن. هذا صحيح ، ليس لوقت طويل.

بمجرد حدوث العطلة الشتوية ، ظهرت المشكلة مرة أخرى. على حساب الشامانية على الكود ، تمكنا من رفع معدل الطلب من 150 إلى 180-200 في الثانية ، لكن هذا لا يزال غير كافٍ. في إحدى الأمسيات ، عندما كان كل شيء تقريبًا مستلقيًا ، من أجل التحقق ، علقت على مجموعة التعليمات البرمجية المسؤولة عن تحديث اللاعبين "منتهية الصلاحية" باستخدام WG API و ... لقد نجحت. وليس سيئًا: لقد حصلنا على 240 ثابتًا مع قمم تصل إلى 260 طلبًا / ثانية. بعد بضعة أيام ، وُلد رمز تم فيه فصل مُحدِّث اللاعب إلى عملية مستقلة منفصلة ، ولم يضيف الرمز الذي يتفاعل مباشرة مع العملاء سوى معرّفات اللاعبين الذين كانوا بحاجة إلى التحديث في مجموعة منفصلة.

استمرت هذه الترقية لمدة شهر تقريبًا. ومرة أخرى رأينا جميع المشكلات نفسها: في المساء ، بدأ تفويت طلبات العملاء. هذه المرة واجهنا IOPS. بدون تفكير طويل ، في مارس 2013 ، طلبنا معدات إضافية لخادمنا: محرك أقراص SSD بسعة 240 جيجابايت. لم يكن هناك خط من الخوادم مع محركات أقراص SSD مثبتة مسبقًا في ذلك الوقت.

ساعد! بدأ الخادم في سحب ما يصل إلى 380-400 طلب / ثانية. لمدة نصف عام تقريبًا ، كان كل شيء يعمل بسلاسة تامة ولم يتسبب في أي شكاوى معينة من المستخدمين. في أغسطس 2013 ، انتقلنا إلى EX40-SSD الذي تم طرحه حديثًا ، لأنه يناسب أغراضنا بشكل أفضل وكان أرخص من EX-4S مع SSD إضافي.

وفي نهاية عام 2013 .. توقعت الأمر ، كانت لدينا نفس المشكلة. علاوة على ذلك ، هذه المرة لم تكن هناك حلول واضحة وبسيطة. تم عمل السحر الأخير فوق الكود. الخادم جيد جدا. q4x2 ، الذي * لا متخصص ، بدوره ، "قام بتلويث" الخادم "بأفضل ما أستطيع."

محتويات /etc/sysctl.conf للمهتمين

# ملف تكوين Kernel 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
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 = 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


بشكل عام ، كل ما يمكن القيام به بالقليل من الدم قد تم القيام به. لقد بدأنا بالفعل في التفكير في شراء خادم ثان أو ثالث وإعداد الموازنة.
لكن في إحدى الأمسيات ، في محادثة مع q4x2 ، كان لدينا حجة مفادها أنه ليست كل المنصات مفيدة بشكل متساوٍ. وببساطة ، أقنعني أن جميع مشاكلنا كانت بسبب NodeJS ، وأنه كان مستعدًا لإنشاء نسخته الخاصة من الخادم في Java ، والتي من شأنها "كسر" Node في العلم البريطاني. لقد شككت بشدة في هذا ، لكنني وافقت على المشاركة في التجربة ، ومنذ ذلك الحين ، قررت أن أجرب شيئًا محليًا.

بما أنني ، كالعادة ، أردت شيئًا جديدًا ، وقع الاختيار على D والإطار المفعم بالحيوية. المثير للدهشة ، حتى أنا ، الذي كنت أعمل بشكل حصري تقريبًا على JS خلال السنوات الثلاث الماضية ، تمكنت من اختلاق نسخة عمل بسرعة نسبيًا. لقد طورته تحت Windows. ولكن عند النشر بموجب Centos 6.5 ، واجهتنا صعوبات كبيرة في تلبية التبعيات. كان على Linker أن يصف الأشياء الواضحة يدويًا.

لم يكن من الممكن التغلب على الصعوبات حتى النهاية ، لذلك تم إنهاء التجربة مع D قبل الموعد المحدد. لقد أحببنا حقًا اللغة نفسها ، ولكن حتى الآن ، للأسف ، لديها مشاكل مع مجموعة الأدوات.

بينما كنا نكتب كل هذا ، لم يستطع الخادم التعامل في المساء: لم يكن هناك وحدة معالجة مركزية كافية. لذلك قررنا اتخاذ خطوة أخرى ، هذه المرة إلى PX90-SSD (Xeon E5-1650 v2 ، 64 جيجا بايت ECC DDR3 ، 2 × 240 جيجا بايت SSD).

فجر عصر جديد

قبل أن يحصل خادم Node على وقت للفرح في النوى الجديدتين ، طرح q4x2 خادم Java الخاص به. ذكرني الكود بالإصدار الأول من خادم Node: كل شيء في ملف واحد بأسلوب إجرائي. لقد جلبنا الكود تدريجيًا إلى شكل إلهي ، لكن لا يزال من الواضح (بعد التخلص من قروح الطفولة) مدى سرعة هذا الخيار في Node. من حيث حمل وحدة المعالجة المركزية - حوالي أربع مرات. خلال ساعات الذروة ، عند 500 طلب / ثانية تقريبًا ، يتم استخدام نواة واحدة بواسطة عملية جافا الرئيسية. بالنسبة لإصدار Node على رباعي النواة ، كان هذا الحمل بعيد المنال ، وكان قريبًا جدًا من الحد الأقصى على ستة نوى.

في هذا الوقت فقط ، قررنا تقديم تفعيل الإحصائيات على موقعنا. هذا يعني أن رموز الوصول التي يتلقاها العملاء سوف تتجول في الشبكة مع كل طلب. لتأمينها قليلاً ، تمت استضافة الخادم خلف HTTPS. ثم كانت تنتظرنا مفاجأة أخرى.

أعلى قليلاً ، ذكرت تقرحات الأطفال في كود جافا. في غضون ذلك ، تعاملنا معهم لمدة أسبوعين ، ولم يعمل كود جافا بشكل أفضل من الرمز القديم ، وكان من المحتمل جدًا أن الخادم السداسي لن يسحب الوكيل + https.

من أجل عدم انتظار حدوث معجزة ، تم شراء خادم آخر على الفور: EX40 (i7-4770 ، 32 جيجابايت DDR3 ، 2 × 2 تيرابايت HDD) ليكون واجهة أمامية ويسحب https. صنع الألمان خادمًا ، ولكن مع مشكلة صغيرة واحدة ، كما اتضح لاحقًا: تم تعيين IP له في نطاق 5.x.x.x. لقد صنعنا واجهة أمامية عليها ، وعمل كل شيء بشكل رائع ، لكن بدأت الشكاوى تتراكم على المنتدى من أشخاص لم يعملوا.

بعد إجراء القليل من البحث حول هذه المشكلة ، اكتشفنا أن مشكلة 5.x.x هي مشكلة معروفة ، وهي مرتبطة بتطبيق يسمى Hamachi. علاوة على ذلك ، انتقلت الإصدارات الجديدة من Hamachi إلى 25.x.x.x (أتساءل عما إذا كان هؤلاء الأشخاص في الأساس لا يريدون استخدام الشبكات الخاصة لأغراضهم الخاصة؟) ، لكن هذا لم يجعل الأمر أسهل بالنسبة لنا. اضطررت إلى العودة إلى الخادم الرئيسي ، لأنه بحلول ذلك الوقت كان بإمكانه بالفعل التعامل مع اقتصادنا بالكامل بمفرده ، وحتى مع وجود إمدادات قوية.

في المجموع ، لدينا في الوقت الحالي الواجهة الخلفية بأكملها: تعمل التعليمات البرمجية + قاعدة البيانات الخاصة بنا على نفس الخادم. نادرا ما تتجاوز متوسطات الحمل واحدًا. ولكننا توصلنا الآن إلى عملية إعادة تنظيم أخرى لمزرعة الخوادم مع نقل قاعدة البيانات إلى خادم منفصل. أحد الأسباب: يواجه Mongo وقتًا عصيبًا للغاية مع بداية باردة - بعد إعادة التشغيل ، لا يسحب حتى نصف الحمل الذي يسحبه بعد الإحماء (بسبب هذا ، بالمناسبة ، كانت هناك مشاكل في 3 أغسطس -4). سيسمح لك النقل إلى خادم منفصل بعدم لمسه. سبب آخر هو أن لدينا بعض الأفكار لتطوير التعديل ، الأمر الذي سيتطلب زيادة كبيرة في حجم قاعدة البيانات. قد لا تكون 2 * 240 جيجابايت الحالية كافية. بشكل عام ، يمكننا القول أن مشكلة الواجهة الخلفية من جانبنا قد تم حلها. يبقى الآخر.

محاربة Wargaming API

ثاني أكبر مشكلة بعد أداء الخادم نفسه ، كان لدينا دائمًا تحديثات حول إحصائيات اللاعبين. لأسباب واضحة ، يهتم جميع مستخدمينا بإحصائيات اللعبة بطريقة أو بأخرى ، ويريد معظمهم رؤية هذه الإحصائيات محدثة قدر الإمكان (من الناحية المثالية ، في الوقت الفعلي). وفي طريقنا لحل هذه المشكلة ، كان لدينا دائمًا WG API. أو بالأحرى حدوده.

المشكلة الأكثر أهمية بالنسبة لنا هي الحد من عدد الطلبات من IP واحد. في الوقت الذي لم تكن فيه واجهة برمجة تطبيقات عامة حتى الآن ، كان الحد الأقصى لكل IP حوالي 10 طلبات / ثانية. كنا ، بعبارة ملطفة ، غير كافيين. لذلك ، فقد خرجوا بأفضل ما في وسعهم: كان لدينا العديد من الخوادم الوكيلة التي تم من خلالها إرسال طلبات واجهة برمجة التطبيقات.

مع ظهور API ، أصبح الأمر أسهل قليلاً من حيث الحد المتاح. تم تعيين حالة ممتازة لتطبيقنا ، والتي تمنحنا نظريًا الحق في تقديم 50 طلبًا / ثانية. ثم يبدأ A:

  1. في الإصدار القديم (وليس واجهة برمجة تطبيقات عامة ، بيانات لتطبيق جوال) ، تم جمع جميع البيانات التي نحتاجها لكل لاعب بطريقة واحدة. ومع ظهور واجهة برمجة التطبيقات العامة ، تمت إعادة توزيع البيانات وفقًا لطرق مختلفة ، وكان علينا تقديم طلبين لكل لاعب (/ account / info / ، / account / tank /).
  2. تدعم هذه الطرق الاستعلام عن عدة لاعبين في وقت واحد (حتى 100 لاعب). هذا ، من الناحية النظرية ، يمكننا طلب ما يصل إلى 5000 لاعب / ثانية. ولكن في الواقع ، استغرق طلب / حساب / دبابات / لـ 100 لاعب حوالي 45 ثانية ، وإذا تم إرسالها كثيرًا ، فسيبدأون في التراجع بشكل جماعي.
    من خلال التجربة والخطأ ، تم العثور على وصفة للعمل المستقر نسبيًا: طلب 20 لاعبًا كل ثانيتين. نعم ، أعادنا 10 لاعبين / ثانية. نظرًا لعدم كفاية هذه القيمة ، تم التمييز بين فترات التحديث لمستخدمي التعديل الخاص بنا وللآخرين.
    نقوم بتحديث المستخدمين 3-4 مرات أكثر. على سبيل المثال ، يدخل المستخدمون الآن قائمة انتظار التحديث بعد 3 ، والباقي - 11 يومًا بعد التحديث السابق.
  3. بعد مرور بعض الوقت ، طرح WG طريقة جديدة - / tank / stats /. أعطت الطريقة إحصائيات أكثر تفصيلاً عن خزانات اللاعب مقارنةً بـ / الحساب / الدبابات / ، وأردنا بطبيعة الحال الحصول عليها. ولكن! لا تدعم هذه الطريقة الاستعلام عن قائمة اللاعبين. واحد فقط. ولم يكن هذا هو الأسوأ: الأسوأ من ذلك ، أن هذه الطريقة أعطت دبابات غير موجودة لبعض اللاعبين.
    هذا مثال تم إرساله إلى فريق الدعم الفني لـ WG ، والذي يُظهر تباينًا في قراءات الطريقتين بمقدار ضعفين تقريبًا. بعد القليل من البحث ، اكتشفنا أن القراءات التي حصل عليها اللاعب على الدبابات صحيحة. فقط مؤشرات الدبابات غير الموجودة غير صحيحة. بالنسبة لنا ، هذا يعني أنه يتعين علينا الآن تقديم ثلاثة طلبات لكل حساب: / account / info / ، / account / tank / ، / tank / stats /. علاوة على ذلك ، هناك حاجة إلى / account / tank / فقط للحصول على القائمة الحالية للخزانات ، وتجاهل تلك غير الضرورية من / tank / stats / results.
    كل هذا أدى إلى حقيقة أن سرعة التحديث قد انخفضت الآن إلى 8 حسابات / ثانية. نأمل أن نتمكن يومًا ما من القيام بالمئات / ثانية ، وسيتحقق حلم العديد من المستخدمين ، إن لم يكن في الوقت الفعلي ، فعلى الأقل حول التحديثات اليومية.
  4. كانت هناك أيضًا بعض الأخطاء الصغيرة: على سبيل المثال ، بعد تقسيم الخزان الألماني PzIV إلى تعديلات Pz_IV_AusfD و Pz_IV_AusfH و Pz_IV_AusfA ، تغيرت معرفات هذه الدبابات بشكل طبيعي. ولكن لفترة طويلة ، أعطت API المعرف القديم = 17 لبعض الحسابات ، والذي يتوافق مع PzIV غير المشترك. و / الموسوعة / الدبابات / الطريقة ، التي نكتشف من خلالها مستوى ونوع الخزان ، لم يعد يحتويها هذا المعرف ، مما أدى أحيانًا إلى نتائج مضحكة عند حساب التصنيفات.
لحسن الحظ ، أصبح من الممكن الآن إرسال تقارير الأخطاء عن مثل هذه المعجزات. في السابق ، كانت الإجابة الوحيدة هي: غير مسموح لك باستخدام معرف تطبيق شخص آخر (؟ source_token = Intellect_Soft-WoT_Mobile-unofficial_stats). وهذا يعني ، ببطء ولكن بثبات ، أن التغييرات بدأت بشكل أفضل. لقد تم أخذنا على محمل الجد. لذلك ننتظر ونأمل ونؤمن!

هذا يختتم الجزء الثاني من القصة. سيكون هناك جزء آخر أمامك ، والذي سيخبرنا عن الشيء الأكثر إثارة للاهتمام - تطوير جزء العميل من التعديل.

العلامات:

  • ألعاب الحرب
  • wargaming.net
  • XVM
  • جهاز قياس الرنة
  • غاميدف
  • تطوير اللعبة
  • برمجة
  • wargaming_inside
اضف اشارة

قصة حول إنشاء تعديل XVM (تعديل التصور الموسع) للعبة World of Tanks. في الجزء الثاني ، ستجد وصفًا لتاريخ تطور جزء الخادم من الوضع.

المملكة القديمة

كما قلت في الجزء الأول ، تم تشغيل الواجهة الخلفية الأولى للمود على VPS ، وتمت كتابتها بلغة PHP وتخزينها في قاعدة المشغل كملفات في نظام الملفات. لتجنب حد 64 كيلو بايت 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. إذا لم يجدوه ، أو كان السجل قديمًا جدًا ، فستبدأ المتعة.
كان من الضروري بطريقة ما الحصول على بيانات اللاعب. في ذلك الوقت ، لم تكن هناك واجهات برمجة تطبيقات عامة ، لذلك كان أول ما يتبادر إلى الذهن هو تحليل صفحة مثل worldoftanks.ru/community/accounts/27030462-Alex. ولكن هناك مشكلة واحدة: في عنوان URL للصفحة ، بالإضافة إلى الاسم المستعار ، هناك أيضًا معرف ، لا يمكننا الحصول عليه من الطلب. لهذا السبب ، فإن النقطة التالية للمزرعة الجماعية هي صفحة worldoftanks.ru/community/accounts ، أو بالأحرى نموذج البحث في هذه الصفحة. نرسل من تطبيقنا ، كما كان ، طلب AJAX الذي ترك صفحة بحث اللاعب. ردا على ذلك نحصل على:

Request_data: (echo: 0 filtered_count: 210846 عنصرًا: [اختصار: ""، 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 خلال الوقت الذي استخدمناه فيه وقبل ظهور واجهة برمجة التطبيقات الرسمية. لم تكن هناك اختلافات بالنسبة لنا. صحيح أن مشكلة الحصول على playerID قبل تقديم طلب إلى API لم تختف.

ونعم ، إذا كان شخص ما لم يفهم بعد: تم طلب بيانات اللاعب مباشرة أثناء معالجة طلب العميل.

عملت هذه التحفة الهندسية باستمرار في ظل حمل يتراوح من 200 إلى 300 طلب / ثانية ، وهو ما يزيد قليلاً عن الإصدار الأول الذي كان يعمل على الملفات الثابتة. عندما زاد الحمل ، استندنا إلى وحدة المعالجة المركزية.

عصر النهضة

في البداية ، كانت اللحظات التي لم يتمكن فيها الخادم من التأقلم تحدث فقط في أمسيات الجمعة والسبت. بمرور الوقت ، ازدادت هذه "اللحظات" وازدادت. أصبح من الواضح أن شيئًا ما لم يكن صحيحًا. حملنا ليس سجلاً ، الخادم ليس هو الأضعف. تفاقمت المشكلة بسبب عدم وجود متخصصين ذوي خبرة في PHP. فضلاً عن عدم وجود متخصصين من ذوي الخبرة * لا شىء.

جلس للتفكير. فكرنا في ما يلي:

  1. الأهم من ذلك ، بدأنا في تحسين جانب العميل ، ووجدنا طريقة ليس فقط للحصول على ألقاب اللاعبين ، ولكن أيضًا المعرفات.
  2. قم بتحسين طلبات العميل لطلب لاعبين ليس واحدًا تلو الآخر ، ولكن كل ذلك مرة واحدة من معركة واحدة.
  3. جرب حزمة NodeJS + Mongo الفاخرة.
تم غسل الإصدار الأول من خادم العقدة. لم تستخدم أي أطر. الوحدات القياسية فقط مثل http و mongo. كان الخادم رمزًا إجرائيًا صارمًا.

بدأت الطلبات تبدو كما يلي:

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

أظهر الخيار الأول نتائج مشجعة - فقد سحب ما يصل إلى 100-150 طلبًا في الثانية. طلبات جديدة لـ 30 لاعبًا ، أي هذا يعادل 4000 طلب قديم لكل لاعب. لقد تأثرنا كثيرًا بالزيادة التي تجاوزت 10 مرات بسبب التغيير التكنولوجي ، وبما أنه في ذلك الوقت كان هامش الأمان قويًا للغاية ، بدأنا في تطوير القدرات "الإحصائية" لـ XVM.

مرة أخرى ، جلسوا للتفكير وقرروا القيام بشيء مثل خدمة REST بالطرق التالية:

تسبب خيار تطوير جزء خادم لمثل هذه المواصفات الفنية بأسلوب إجرائي في حدوث أفكار سيئة ، لذلك قررنا تجربة شيء عصري آخر: التعبير.

يجب أن أقول أنه قبل ذلك لم يكن لدي أي خبرة مع أي إطار عمل MVC ، ولكن على الرغم من ذلك ، فقد اكتشفت ذلك بسرعة كبيرة ، وحرفياً قمت بعمل أول إصدار عملي في أمسيتين. بشكل عام أقول أحر الكلمات للتعبير عن المطورين عن إمكانية البدء السريع.

الخادم الناتج ، أولاً ، يعمل بشكل جيد ، وثانيًا ، كان كوده ممتعًا للعين ، على عكس الإصدار القديم.

في هذه الموجة من الإلهام ، قررت أن "أمشي كالمشي!" وأضاف النمس إلى مشروع ODM. أصبح الرمز أكثر جمالًا ، بينما كنت أجري الاختبارات على آلة محلية ، لم أكن أسعد حرفيًا أن كل شيء كان جميلًا في مكانه وكيف كان كل شيء بسيطًا ومنطقيًا.

حان الوقت لنشر هذا الجمال على الخادم. نشر. تم الفحص - إنه يعمل! لقد غادر لمدة 20 دقيقة ، جئت لأتأكد - لا يعمل. أنظر في وحدة التحكم - عملية العقدة قيد التشغيل. أعد التشغيل. يعمل لبضع ثوان ، ثم - مكتوما.

لن أسحبها لفترة طويلة: كانت المشكلة في وحدة المعالجة المركزية. في ظل الحمل المسائي المعتاد في ذلك الوقت ، قام متغير الكود بدون النمس بهضم هذا العبء على سبيل المزاح ، لكن البديل مع النمس (على الرغم من كل جماله) لم يفعل ذلك. اضطررت للأسف إلى التراجع عن جميع التغييرات تقريبًا لعدة أيام.

تتجمع الغيوم

في نهاية عام 2012 ، كانت هناك زيادة أخرى في نشاط مستخدم XVM ، وتوقف خادمنا الرائع عن التعامل مع الحمل. بصراحة ، كانت هناك مشاكل من قبل ، لكنها لم تكن خطيرة. الآن ، في المساء ، لا يعمل الوضع بدلاً من العمل. كحل أخير ، قمنا حتى بربط وحدة toobusy بالخادم ، مما سمح لنا بمعالجة أكبر عدد ممكن من الطلبات التي يمكن للجهاز التعامل معها وتخطي الباقي. أظهرت المراقبة نقصًا حادًا في الذاكرة لعملية المونغو. قررنا الانتقال إلى خادم آخر: EX-4S (i7-2600 ، 32 جيجا بايت DDR3 ، 2x3 تيرا بايت SATA III HDD).

لقد انتقلنا. أشعر بتحسن. هذا صحيح ، ليس لوقت طويل.

بمجرد حدوث العطلة الشتوية ، ظهرت المشكلة مرة أخرى. على حساب الشامانية على الكود ، تمكنا من رفع معدل الطلب من 150 إلى 180-200 في الثانية ، لكن هذا لا يزال غير كافٍ. في إحدى الأمسيات ، عندما كان كل شيء تقريبًا مستلقيًا ، من أجل التحقق ، علقت على مجموعة التعليمات البرمجية المسؤولة عن تحديث اللاعبين "منتهية الصلاحية" باستخدام WG API و ... لقد نجحت. وليس سيئًا: لقد حصلنا على 240 ثابتًا مع قمم تصل إلى 260 طلبًا / ثانية. بعد بضعة أيام ، وُلد رمز تم فيه فصل مُحدِّث اللاعب إلى عملية مستقلة منفصلة ، ولم يضيف الرمز الذي يتفاعل مباشرة مع العملاء سوى معرّفات اللاعبين الذين كانوا بحاجة إلى التحديث في مجموعة منفصلة.

استمرت هذه الترقية لمدة شهر تقريبًا. ومرة أخرى رأينا جميع المشكلات نفسها: في المساء ، بدأ تفويت طلبات العملاء. هذه المرة واجهنا IOPS. بدون تفكير طويل ، في مارس 2013 ، طلبنا معدات إضافية لخادمنا: محرك أقراص SSD بسعة 240 جيجابايت. لم يكن هناك خط من الخوادم مع محركات أقراص SSD مثبتة مسبقًا في ذلك الوقت.

ساعد! بدأ الخادم في سحب ما يصل إلى 380-400 طلب / ثانية. لمدة نصف عام تقريبًا ، كان كل شيء يعمل بسلاسة تامة ولم يتسبب في أي شكاوى معينة من المستخدمين. في أغسطس 2013 ، انتقلنا إلى EX40-SSD الذي تم طرحه حديثًا ، لأنه يناسب أغراضنا بشكل أفضل وكان أرخص من EX-4S مع SSD إضافي.

وفي نهاية عام 2013 .. توقعت الأمر ، كانت لدينا نفس المشكلة. علاوة على ذلك ، هذه المرة لم تكن هناك حلول واضحة وبسيطة. تم عمل السحر الأخير فوق الكود. الخادم جيد جدا. q4x2 ، الذي * لا متخصص ، بدوره ، "قام بتلويث" الخادم "بأفضل ما أستطيع."

محتويات /etc/sysctl.conf للمهتمين

# ملف تكوين Kernel 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
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 = 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


بشكل عام ، كل ما يمكن القيام به بالقليل من الدم قد تم القيام به. لقد بدأنا بالفعل في التفكير في شراء خادم ثان أو ثالث وإعداد الموازنة.
لكن في إحدى الأمسيات ، في محادثة مع q4x2 ، كان لدينا حجة مفادها أنه ليست كل المنصات مفيدة بشكل متساوٍ. وببساطة ، أقنعني أن جميع مشاكلنا كانت بسبب NodeJS ، وأنه كان مستعدًا لإنشاء نسخته الخاصة من الخادم في Java ، والتي من شأنها "كسر" Node في العلم البريطاني. لقد شككت بشدة في هذا ، لكنني وافقت على المشاركة في التجربة ، ومنذ ذلك الحين ، قررت أن أجرب شيئًا محليًا.

بما أنني ، كالعادة ، أردت شيئًا جديدًا ، وقع الاختيار على D والإطار المفعم بالحيوية. المثير للدهشة ، حتى أنا ، الذي كنت أعمل بشكل حصري تقريبًا على JS خلال السنوات الثلاث الماضية ، تمكنت من اختلاق نسخة عمل بسرعة نسبيًا. لقد طورته تحت Windows. ولكن عند النشر بموجب Centos 6.5 ، واجهتنا صعوبات كبيرة في تلبية التبعيات. كان على Linker أن يصف الأشياء الواضحة يدويًا.

لم يكن من الممكن التغلب على الصعوبات حتى النهاية ، لذلك تم إنهاء التجربة مع D قبل الموعد المحدد. لقد أحببنا حقًا اللغة نفسها ، ولكن حتى الآن ، للأسف ، لديها مشاكل مع مجموعة الأدوات.

بينما كنا نكتب كل هذا ، لم يستطع الخادم التعامل في المساء: لم يكن هناك وحدة معالجة مركزية كافية. لذلك قررنا اتخاذ خطوة أخرى ، هذه المرة إلى PX90-SSD (Xeon E5-1650 v2 ، 64 جيجا بايت ECC DDR3 ، 2 × 240 جيجا بايت SSD).

فجر عصر جديد

قبل أن يحصل خادم Node على وقت للفرح في النوى الجديدتين ، طرح q4x2 خادم Java الخاص به. ذكرني الكود بالإصدار الأول من خادم Node: كل شيء في ملف واحد بأسلوب إجرائي. لقد جلبنا الكود تدريجيًا إلى شكل إلهي ، لكن لا يزال من الواضح (بعد التخلص من قروح الطفولة) مدى سرعة هذا الخيار في Node. من حيث حمل وحدة المعالجة المركزية - حوالي أربع مرات. خلال ساعات الذروة ، عند 500 طلب / ثانية تقريبًا ، يتم استخدام نواة واحدة بواسطة عملية جافا الرئيسية. بالنسبة لإصدار Node على رباعي النواة ، كان هذا الحمل بعيد المنال ، وكان قريبًا جدًا من الحد الأقصى على ستة نوى.

في هذا الوقت فقط ، قررنا تقديم تفعيل الإحصائيات على موقعنا. هذا يعني أن رموز الوصول التي يتلقاها العملاء سوف تتجول في الشبكة مع كل طلب. لتأمينها قليلاً ، تمت استضافة الخادم خلف HTTPS. ثم كانت تنتظرنا مفاجأة أخرى.

أعلى قليلاً ، ذكرت تقرحات الأطفال في كود جافا. في غضون ذلك ، تعاملنا معهم لمدة أسبوعين ، ولم يعمل كود جافا بشكل أفضل من الرمز القديم ، وكان من المحتمل جدًا أن الخادم السداسي لن يسحب الوكيل + https.

من أجل عدم انتظار حدوث معجزة ، تم شراء خادم آخر على الفور: EX40 (i7-4770 ، 32 جيجابايت DDR3 ، 2 × 2 تيرابايت HDD) ليكون واجهة أمامية ويسحب https. صنع الألمان خادمًا ، ولكن مع مشكلة صغيرة واحدة ، كما اتضح لاحقًا: تم تعيين IP له في نطاق 5.x.x.x. لقد صنعنا واجهة أمامية عليها ، وعمل كل شيء بشكل رائع ، لكن بدأت الشكاوى تتراكم على المنتدى من أشخاص لم يعملوا.

بعد إجراء القليل من البحث حول هذه المشكلة ، اكتشفنا أن مشكلة 5.x.x هي مشكلة معروفة ، وهي مرتبطة بتطبيق يسمى Hamachi. علاوة على ذلك ، انتقلت الإصدارات الجديدة من Hamachi إلى 25.x.x.x (أتساءل عما إذا كان هؤلاء الأشخاص في الأساس لا يريدون استخدام الشبكات الخاصة لأغراضهم الخاصة؟) ، لكن هذا لم يجعل الأمر أسهل بالنسبة لنا. اضطررت إلى العودة إلى الخادم الرئيسي ، لأنه بحلول ذلك الوقت كان بإمكانه بالفعل التعامل مع اقتصادنا بالكامل بمفرده ، وحتى مع وجود إمدادات قوية.

في المجموع ، لدينا في الوقت الحالي الواجهة الخلفية بأكملها: تعمل التعليمات البرمجية + قاعدة البيانات الخاصة بنا على نفس الخادم. نادرا ما تتجاوز متوسطات الحمل واحدًا. ولكننا توصلنا الآن إلى عملية إعادة تنظيم أخرى لمزرعة الخوادم مع نقل قاعدة البيانات إلى خادم منفصل. أحد الأسباب: يواجه Mongo وقتًا عصيبًا للغاية مع بداية باردة - بعد إعادة التشغيل ، لا يسحب حتى نصف الحمل الذي يسحبه بعد الإحماء (بسبب هذا ، بالمناسبة ، كانت هناك مشاكل في 3 أغسطس -4). سيسمح لك النقل إلى خادم منفصل بعدم لمسه. سبب آخر هو أن لدينا بعض الأفكار لتطوير التعديل ، الأمر الذي سيتطلب زيادة كبيرة في حجم قاعدة البيانات. قد لا تكون 2 * 240 جيجابايت الحالية كافية. بشكل عام ، يمكننا القول أن مشكلة الواجهة الخلفية من جانبنا قد تم حلها. يبقى الآخر.

محاربة Wargaming API

ثاني أكبر مشكلة بعد أداء الخادم نفسه ، كان لدينا دائمًا تحديثات حول إحصائيات اللاعبين. لأسباب واضحة ، يهتم جميع مستخدمينا بإحصائيات اللعبة بطريقة أو بأخرى ، ويريد معظمهم رؤية هذه الإحصائيات محدثة قدر الإمكان (من الناحية المثالية ، في الوقت الفعلي). وفي طريقنا لحل هذه المشكلة ، كان لدينا دائمًا WG API. أو بالأحرى حدوده.

المشكلة الأكثر أهمية بالنسبة لنا هي الحد من عدد الطلبات من IP واحد. في الوقت الذي لم تكن فيه واجهة برمجة تطبيقات عامة حتى الآن ، كان الحد الأقصى لكل IP حوالي 10 طلبات / ثانية. كنا ، بعبارة ملطفة ، غير كافيين. لذلك ، فقد خرجوا بأفضل ما في وسعهم: كان لدينا العديد من الخوادم الوكيلة التي تم من خلالها إرسال طلبات واجهة برمجة التطبيقات.

مع ظهور API ، أصبح الأمر أسهل قليلاً من حيث الحد المتاح. تم تعيين حالة ممتازة لتطبيقنا ، والتي تمنحنا نظريًا الحق في تقديم 50 طلبًا / ثانية. ثم يبدأ A:

  1. في الإصدار القديم (وليس واجهة برمجة تطبيقات عامة ، بيانات لتطبيق جوال) ، تم جمع جميع البيانات التي نحتاجها لكل لاعب بطريقة واحدة. ومع ظهور واجهة برمجة التطبيقات العامة ، تمت إعادة توزيع البيانات وفقًا لطرق مختلفة ، وكان علينا تقديم طلبين لكل لاعب (/ account / info / ، / account / tank /).
  2. تدعم هذه الطرق الاستعلام عن عدة لاعبين في وقت واحد (حتى 100 لاعب). هذا ، من الناحية النظرية ، يمكننا طلب ما يصل إلى 5000 لاعب / ثانية. ولكن في الواقع ، استغرق طلب / حساب / دبابات / لـ 100 لاعب حوالي 45 ثانية ، وإذا تم إرسالها كثيرًا ، فسيبدأون في التراجع بشكل جماعي.
    من خلال التجربة والخطأ ، تم العثور على وصفة للعمل المستقر نسبيًا: طلب 20 لاعبًا كل ثانيتين. نعم ، أعادنا 10 لاعبين / ثانية. نظرًا لعدم كفاية هذه القيمة ، تم التمييز بين فترات التحديث لمستخدمي التعديل الخاص بنا وللآخرين.
    نقوم بتحديث المستخدمين 3-4 مرات أكثر. على سبيل المثال ، يدخل المستخدمون الآن قائمة انتظار التحديث بعد 3 ، والباقي - 11 يومًا بعد التحديث السابق.
  3. بعد مرور بعض الوقت ، طرح WG طريقة جديدة - / tank / stats /. أعطت الطريقة إحصائيات أكثر تفصيلاً عن خزانات اللاعب مقارنةً بـ / الحساب / الدبابات / ، وأردنا بطبيعة الحال الحصول عليها. ولكن! لا تدعم هذه الطريقة الاستعلام عن قائمة اللاعبين. واحد فقط. ولم يكن هذا هو الأسوأ: الأسوأ من ذلك ، أن هذه الطريقة أعطت دبابات غير موجودة لبعض اللاعبين.
    هذا مثال تم إرساله إلى فريق الدعم الفني لـ WG ، والذي يُظهر تباينًا في قراءات الطريقتين بمقدار ضعفين تقريبًا. بعد القليل من البحث ، اكتشفنا أن القراءات التي حصل عليها اللاعب على الدبابات صحيحة. فقط مؤشرات الدبابات غير الموجودة غير صحيحة. بالنسبة لنا ، هذا يعني أنه يتعين علينا الآن تقديم ثلاثة طلبات لكل حساب: / account / info / ، / account / tank / ، / tank / stats /. علاوة على ذلك ، هناك حاجة إلى / account / tank / فقط للحصول على القائمة الحالية للخزانات ، وتجاهل تلك غير الضرورية من / tank / stats / results.
    كل هذا أدى إلى حقيقة أن سرعة التحديث قد انخفضت الآن إلى 8 حسابات / ثانية. نأمل أن نتمكن يومًا ما من القيام بالمئات / ثانية ، وسيتحقق حلم العديد من المستخدمين ، إن لم يكن في الوقت الفعلي ، فعلى الأقل حول التحديثات اليومية.
  4. كانت هناك أيضًا بعض الأخطاء الصغيرة: على سبيل المثال ، بعد تقسيم الخزان الألماني PzIV إلى تعديلات Pz_IV_AusfD و Pz_IV_AusfH و Pz_IV_AusfA ، تغيرت معرفات هذه الدبابات بشكل طبيعي. ولكن لفترة طويلة ، أعطت API المعرف القديم = 17 لبعض الحسابات ، والذي يتوافق مع PzIV غير المشترك. و / الموسوعة / الدبابات / الطريقة ، التي نكتشف من خلالها مستوى ونوع الخزان ، لم يعد يحتويها هذا المعرف ، مما أدى أحيانًا إلى نتائج مضحكة عند حساب التصنيفات.
لحسن الحظ ، أصبح من الممكن الآن إرسال تقارير الأخطاء عن مثل هذه المعجزات. في السابق ، كانت الإجابة الوحيدة هي: غير مسموح لك باستخدام معرف تطبيق شخص آخر (؟ source_token = Intellect_Soft-WoT_Mobile-unofficial_stats). وهذا يعني ، ببطء ولكن بثبات ، أن التغييرات بدأت بشكل أفضل. لقد تم أخذنا على محمل الجد. لذلك ننتظر ونأمل ونؤمن!

هذا يختتم الجزء الثاني من القصة. سيكون هناك جزء آخر أمامك ، والذي سيخبرنا عن الشيء الأكثر إثارة للاهتمام - تطوير جزء العميل من التعديل.

العلامات:

إضافة علامات الموقع الإصدار: - تم التحديث: 24 يناير 2018

يمكن أن يكون تثبيت التعديلات في الألعاب مهمة شاقة. ولكن في World of Tanks ، أضاف المطورون في البداية دعمًا للتعديلات المخصصة ، لذلك في مجلد اللعبة ، يوجد مجلد خاص للتعديلات يسمى res_mods ، وهو المسؤول عن التعديلات.

نظرية كيفية عمل التعديل

دعونا نلقي نظرة على كيفية عمل كل هذا بشكل عام في Wot. أولاً ، تقوم اللعبة بتحميل جميع الموارد من مجلد الدقة ، والذي يحتوي على ملفات اللعبة مثل الصوت ، والقوام ، والنماذج ، والبرامج النصية ، والمزيد. يتم تعبئة كل هذا في World of Tanks في الأرشيف حتى يتم تحميل اللعبة بشكل أسرع قليلاً. في الواقع ، يمكننا أخذ الملف الذي نحتاجه من هناك (على سبيل المثال ، جلد الخزان) وتغييره. ثم نعيدها ، لتحل محل الملف الحالي. وسيعمل كل شيء. لكن هذه الطريقة غير مريحة ، أولاً ، سيتعين علينا حفظ الملفات الأصلية في حالة عدم نجاح أي شيء ، وثانيًا ، عندما يكون هناك الكثير من التعديلات ، لن نتمكن من حذف كل هذا ، لأننا بحاجة إلى تذكر ماذا وأين رميناها.

هذا ما يوجد من أجله مجلد res_mods ، بعد أن تقوم اللعبة بتحميل الملفات من مجلد res ، تقوم بتحميل الملفات من res_mods ، وإذا كان هناك ملف تم تحميله بالفعل من مجلد res ، فستتخذ اللعبة الخيار الأخير ، وهذا هو ، لدينا المعدل من مجلد res_mods. هذه هي الطريقة التي يتم بها كل شيء في World of Tanks بطريقة مريحة.

كيفية تثبيت التعديلات في عالم الدبابات؟

في الوقت الحالي ، يوجد مجلدين للتعديل في World of Tanks. الأول هو تعديل ، ظهر مؤخرًا وهو ضروري للتعديلات التي تم تعبئتها ولها تنسيق .wotmods. كان المجلد الثاني تقريبًا من البداية ، وهذا هو res_mods ، وهو ضروري لتعديل غير معبأ.

يحتوي كلا المجلدين على المزيد من المجلدات بداخلهما ، برقم الإصدار الحالي للعبة ، الآن هو 1.6.1.0 ، ويمكن ببساطة حذف مجلدات الإصدارات الأقدم حتى لا تتدخل.

على موقعنا ، في كل تعديل ، نكتب كيفية تثبيته. ولكن غالبًا ما ننشر التعديلات بالفعل مع المجلدات الضرورية ، وبالتالي ، كل ما هو مطلوب هو فتح الأرشيف الذي تم تنزيله ونسخه (أو فك ضغط المحتويات أو نقلها بالماوس ، هذا هو الشيء نفسه) إلى المجلد الذي لديك تركيب عالم الدبابات.

ملاحظة: إذا لم تقم بتغيير أي شيء أثناء تثبيت اللعبة ، فسيتم تثبيت الدبابات في 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 وانسخ محتويات الأرشيف الذي تم تنزيله هناك.
  • تثبيت الخطوط - الأمر بسيط ، يوجد مجلد يسمى "الخط" في الأرشيف ، انتقل إليه ، ثم انقر نقرًا مزدوجًا فوق كل ملف ، وبعد فتح الخط ، انقر فوق "تثبيت". الجميع. لا تحتاج إلى نسخ أي شيء.
  • تشغيل برنامج التثبيت (أو تشغيل البرنامج) - في هذه الحالة ، تكون هذه عادةً إما برامج أو حزم modpack مع المثبتات. ليست هناك حاجة لنسخ أي شيء ، فقط انقر نقرًا مزدوجًا وهذا كل شيء.

إلغاء تثبيت تعديل عالم الدبابات

لإزالة تعديل معين ، تحتاج إلى معرفة الملفات التي تم تثبيتها وإزالتها ببساطة. ولإزالة جميع التعديلات من الخزانات ، تحتاج فقط إلى مسح مجلدات 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 ، التي يحبها اللاعبون بشكل خاص ، حيث يمكنها إظهار وقت إعادة التحميل ، والتكبير ، ومتانة الخزان المتاحة ، وعدد القذائف في الأسطوانة ، وأكثر من ذلك بكثير.

تسمح لك تعديلات الصوت بتغيير التمثيل الصوتي للعبة ، مما يجعل صوت "الدبابات" المفضل لديك بطريقة جديدة. إنهم يحسنون تصميم الصوت ، ويجعلون الانفجارات ، والطلقات ، والأوامر ، وزئير اليرقات أكثر واقعية. هناك عدة أنواع منها ، ويمكن لكل منها خلق جو المعركة الخاص به. يتم تثبيتها بنفس الطريقة.

تنقسم تعديلات الرسوم أيضًا إلى عدة أنواع فرعية. يتضمن ذلك ميزة تسمح لك برؤية نقاط الضعف في درع الدبابات. تساعد ميزة تسمى "الجثث البيضاء" على رؤية العدو مختبئًا بعد المعركة. بالإضافة إلى ذلك ، بمساعدة التثبيت ، يمكنك جعل منصات السكك الحديدية ساطعة ، وطلاء المسارات المنسدلة باللون الأبيض ، وتحسين الرؤية عن بُعد ، وغير ذلك الكثير. كل هذا يساعد كثيرا في القتال.

لاستخدام هذه الخيارات ، يجب عليك أولاً تثبيتها في عميل اللعبة.

كيفية تثبيت تعديل على عالم الدبابات

يمكن ضبط جميع الإعدادات الإضافية في wot بشكل فردي ، ولكن من الأسهل بكثير العمل مع الحزمة بأكملها في وقت واحد - ما يسمى modpacks. تحتوي على تعديلات مختلفة للعبة مصممة لتبسيط الإستراتيجية وجعلها أكثر ملاءمة وراحة.

الأكثر شيوعًا هو "Modpack from Jove" ، ولكن هناك أيضًا الكثير من الحزم من مطورين آخرين. سيجد الجميع مجموعة مختارة ترضيهم. يعد تثبيتها أمرًا سهلاً - مثل برنامج عادي يستخدم أداة تثبيت بسيطة.

اختيار التعديلات الإضافية في Tanks مثير للإعجاب

استراتيجية خطوة بخطوة حول كيفية تثبيت التعديلات على عالم الدبابات

دعنا نبدأ:

  1. انتقل إلى المجلد مع عميل اللعبة. يمكنك العثور عليه غالبًا على العنوان التالي:
  2. د: / عالم الدبابات /.
  3. أبحث عن / res_mods. يتم إنشاء هذا المجلد تلقائيًا ، وهو ضروري حتى يتمكن اللاعبون من تثبيت التعديلات المطلوبة بأنفسهم.
  4. نقوم بإنشاء مجلد باسم رقعة اللعبة المستخدمة ، أي نسختها الحالية. على سبيل المثال - / 0. 9.13.

وبالتالي ، للتثبيت ، ستحتاج إلى المرور عبر المسار التالي: D / World of Tanks / res_mods / 0. 9.13.

تعمل التعديلات الجديدة على تحسين جودة اللعبة

كيفية تثبيت تعديل على wot: تحسين البصر

لكن ليس كل شيء بسيطًا كما في الحالة الموضحة أعلاه. ستتطلب بعض الترقيات ، مثل العديد من النطاقات ، إنشاء مجلدات إضافية. نتيجة لذلك ، قبل تثبيت التعديلات على wot ، سيتم إنشاء مجلد في المستند / 0. 9. 13 ، وهناك العديد في ذلك.

سيبدو المسار بالكامل كما يلي:

  • في ملف / 0. 9. 13. إنشاء ملف واجهة المستخدم الرسومية
  • قم بإنشاء مستند شكل الحجم في واجهة المستخدم الرسومية
  • نتحقق من المسار. يبدو كالتالي: D / World of Tanks / res_mods / 0. 9.13.0 / واجهة المستخدم الرسومية / الحجم

في الواقع ، لا يوجد شيء معقد في إنشاء مجلدات إضافية في wot ، لذلك لا توجد عادة مشاكل في تثبيت الإضافات المختلفة للاستراتيجية.

تحسين جودة المراجعة

تحسين الصوت

تثبيت إعدادات الصوت المتقدمة أمر بسيط للغاية. تحتاج إلى تنزيلها على الموقع ، وعادةً ما يسمى الملف / الصوت. سيحتوي الملف مع عميل اللعبة على نفس الملف ، ويجب نسخ كل شيء إلى مجلد اللعبة. نقوم بالنسخ مع استبدال المستندات الحالية حتى يذهب الوضع.

قبل التثبيت ، تأكد من إغلاق عميل اللعبة.

Mods for World of Tanks: حول الدبابات والإضافات إلى اللعبة. أنواع التعديلات وأسباب تثبيتها. تعليمات لتثبيت التعديلات + أفضل 10 أفضل + مقارنة بين أفضل 3 حزم modpack على الإنترنت.

على الرغم من أن World of Tanks لديها مجموعة واسعة من الميزات ، إلا أن معظم اللاعبين يفتقرون إلى الأشياء الصغيرة التي يمكن أن تجعل عملية الدبابات أكثر إثارة للاهتمام عدة مرات.

لحل هذه المشكلة ، يقوم العديد من الحرفيين في الشبكة بتطوير تعديلات لـ World of Tanks. حول الدبابات وبيئة اللعبة ، والإضافات المتوفرة وكيفية تثبيتها - سنجيب عن هذه الأسئلة وغيرها في مقالنا اليوم.

ما هي الموضة؟

مود- برنامج إضافي لعميل اللعبة الرئيسي يسمح لك بتغيير / تحسين عناصر الميكانيكا والتأثيرات المرئية.

تحسين الأداء القتالي ، وشاشات المعلومات المساعدة - تسمح هذه التحولات وغيرها للاعب بتخصيص واجهة اللعبة حسب رغبته وتفضيلات التصميم.

لماذا وضع تعديل في عالم الدبابات؟

  1. توسيع وظائف المركبات المدرعة.
  2. زيادة المعايير القياسية للخزانات.
  3. صقل عناصر اللعبة الفردية.
  4. تغيير العرض المرئي للمواقع الفردية.
  5. تخصيص الموسيقى التصويرية لذوقك.
  6. للحصول على المزيد من الإحصائيات والمعلومات الداعمة الأخرى التي تتيح لك التنقل بشكل أفضل في تصرفات دبابة العدو.

القائمة لا حصر لها - عدد الامتدادات كبير جدًا. إذا رغبت في ذلك ، فإن المستخدم لديه الفرصة لتغيير تصميم وميكانيكا العناصر الفردية للخزان بشكل لا يمكن التعرف عليه.

ما هي تعديلات عالم الدبابات حول الدبابات وكيفية تركيبها؟

أثناء وجود لعبة World of Tanks ، نما عدد التعديلات بشكل كبير. اليوم ، يمكن لمالك الدبابة أن يحول بندقيته إلى قوة حقيقية غير مقيدة ، ويدمر العدو بطائرة واحدة.

تعتبر بعض التغييرات الميكانيكية غشًا ، يتبعها تجميد الحساب ، لذلك تحتاج إلى التمييز بين التعديلات بعدة طرق.

تعديل لعبة World of Tanks حسب طريقة التطوير هي:

  • رسمي - صادر عن موظفي الشركة التي طورت اللعبة. جودتها أعلى من البقية + التغييرات تتعلق ، في الغالب ، بالتصميم الخارجي.
  • حقوق النشر - يتم إنتاج مثل هذه التعديلات حول الدبابات بواسطة الحرفيين. لا تتوافق جودة الرسم دائمًا مع مستوى مرتفع أو متوسط. تتعلق معظم التغييرات بضبط الدبابات في اللعبة.

إذا أثرت التعديلات الرسمية على اللعبة بشكل ضئيل ، فسيتم تقسيم تعديلات حقوق النشر إلى مقبولو الغش(أي أولئك الذين يمنحون التفوق على دبابة العدو بسبب التغيرات في الفيزياء أو ميكانيكا اللعب). يُحظر استخدام هذه الأخيرة ، وإذا ثبت استخدامها ، فسيواجه المستخدم حظرًا دائمًا على حساب اللعبة.

لاستخدام الوظائف المتقدمة ، يجب أولاً تثبيت التعديلات. تخصيص برامج خاصةو جمعيات كاملة("modpacks"). سيتم مناقشة هذا الأخير بمزيد من التفصيل أدناه.

1. مخطط تركيب وزارة الدفاع لعالم الدبابات.

  1. ابحث عن مجلد اللعبة. افتراضيًا (إذا لم تقم بتغيير المجلد في العميل) ، فسيكون موجودًا على نفس محرك الأقراص مثل نظام التشغيل "C"

    يضع المستخدمون الأكثر تقدمًا العميل على قرص بدون نظام تشغيل - سيوفر هذا البيانات عند إعادة تثبيت نظام التشغيل. مثال المسار - ج: / عالم الدبابات /

  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. كيفية تثبيت تعديل الصوت لعالم الدبابات؟

هناك نوع آخر من التعديلات على الشبكة يمكن للاعبين تغييرها - الصوت. إذا كنت قد سئمت من أصوات الطلقات العادية أو ضوضاء اليرقات ، فهذه التغييرات هي فقط ما تحتاجه.
  1. قم بتنزيل أرشيف mod الذي تريده من الموقع المواضيعي للعبة World of Tanks.
  2. ابحث عن مجلد عميل اللعبة على محرك الأقراص الثابتة.
  3. ابحث داخل المجلد مع المصاحبة الصوتية للعبة. في أغلب الأحيان ، لديها طريقة - ج: / عالم الدبابات / صوتي.
  4. انسخ ملفات الصوت من الأرشيف الذي تم تنزيله إلى المجلد الموجود مع الاستبدال.

قبل تثبيت أي تعديل للدبابات أو لغرض الزخرفة ، تأكد من إغلاق عميل اللعبة. إذا لم يتم تنفيذ هذه العملية ، فقد تحدث تعارضات بين التعديلات والبرامج المضمنة بالفعل ، مما سيؤدي إلى خروج من اللعبة أو توقف تام عن عملها.

3. ما هي أشهر تعديل للدبابات؟

    تهدف إلى التحويل.

    لا يمكن أن يوفر المشهد الأساسي معلومات كافية لتقييم الموقف ، لذلك ، باستخدام التحسينات ، يتمتع اللاعب بفرصة للتقدم بشكل كبير في التكتيكات القتالية وزيادة كفاءته.

    وقت إعادة تحميل السلاح ، والتكبير / التصغير ، والخصم ، وسعة الذخيرة / توفرها - ستساعد هذه البيانات وغيرها بشكل كبير المبتدئين في التنقل حتى في المواقف الحرجة.

    تحويل الرسومات.


    هذه تعديلات للدبابات لتغيير التصور أثناء المعركة.

    تسمح لك هذه التعديلات برؤية نقاط ضعف الدبابة ، وإطلاق النار من خلال مركبات العدو المكسورة ، وزيادة رؤية السيارة المدرعة ، بالإضافة إلى العديد من الأشياء الصغيرة الأخرى ، والتي سيسهل استخدامها الحياة للاعب عادي في World of الدبابات.

    تحويلات الصوت.

    يتضمن ذلك المجموعة الكاملة من المؤثرات الصوتية - اللقطات والضوء والنقد وما إلى ذلك.

    تحويل حظائر الطائرات.

    مكون مرئي لا يؤثر على طريقة اللعب نفسها. تُستخدم لإضفاء الجو المناسب على طريقة اللعب.

    إحصائيات شاشة التحويل.

    زيادة محتوى المعلومات في الشاشة النهائية بعد المعركة + القدرة على تتبع عدد كبير من المعلمات في الوقت الفعلي.

الحزم أو التعديلات الفردية - أيهما أفضل؟

إذا كنت جديدًا في عالم World of Tanks ، فسيؤدي استخدام الحزم إلى تبسيط عملية تثبيت التعديلات على الخزانات بشكل كبير. لا يتعين عليك فك العبوة يدويًا والبحث عن وجهة التعديل. كل ما عليك فعله هو تشغيل المثبت واتباع التعليمات خطوة بخطوة.

هناك العديد من التعديلات على الدبابات أكثر مما وصفناه أعلاه. هناك البعض الذي لا يتناسب مع أي من الفئات. قم بتنزيل التعديل بشكل منفصل أو استخدم الحزمة - الأمر متروك لك.

ضع في اعتبارك فقط حقيقة أنه عند استخدام حزمة من التعديلات للخزانات ، لن تتاح لك الفرصة للاختيار الكامل - عدد التعديلات الواردة في التجميع محدود وقد لا يلبي دائمًا متطلبات لاعبي WOT.

أفضل التعديلات في World of Tanks حول الدبابات وبيئة اللعبة: TOP-10


بعد معرفة عامة ، دعنا نقوم بتصفية الشبكة واختيار أفضل التعديلات في اتجاهات مختلفة يمكن أن تجعل عملية اللعبة أكثر راحة ، سواء بالنسبة للمبتدئين أو الناقلين المحترفين.

من المستحيل مراعاة الآراء الشخصية للجميع ، ولكن هناك مثل هذه التعديلات للدبابات التي تعد إلزامية للاستخدام من قبل الجميع.

عند تجميع الجزء العلوي ، تم إرشادنا من خلال استطلاعات الرأي في منتديات لعبة World of Tanks الرسمية. تم تثبيت كل تعديل على عميلهم من قبل أكثر من 50٪ من مستخدمي اللعبة (من أولئك الذين يستخدمون تعديل الدبابات بشكل عام).

1) البصر "سيف داموكلي".

تعد القدرة على التصويب بدقة هي الأساس للاعب في عالم الدبابات. لسوء الحظ ، فإن المشهد الأساسي محدود للغاية من حيث الوظائف ، لذا فإن تغيير هذا العنصر هو أول شيء يجب القيام به بعد تثبيت عميل اللعبة.

وزارة الدفاع عن دبابة "سيف المسلط" بالترتيب لعام 2017-2018. هو الحل الأفضل في قسم المشاهد.

وظائف وزارة الدفاع:

  • مشاهد لإطلاق النار على القناصة والممرات ؛
  • مشهد فني متخصص
  • مؤشرات اختراق الدروع ومعلومات كاملة حول قدرات الرؤية ؛
  • من الممكن حساب الفاصل الزمني لرحلة قذيفة قتالية ؛
  • يربط بين مؤشرات مدى الهدف وإمكانية هزيمتك ؛
  • يُظهر سرعة حركة دبابة العدو ؛
  • UVN + نصف قطر تفتيت الخزان.

تتناسب جميع المعلومات التي يوفرها النموذج جيدًا مع الواجهة ولا تتدخل في القتال. باستخدام البيانات حول الخصم بحكمة ، سيتمكن اللاعب المحترف من عرض الأكروبات في World of Tanks ، وسيقوم المبتدئ بتبسيط التدريب وتحسين المهارات التكتيكية بشكل كبير.

2) تلف لوح من لوكاستان.

تعديل لوحة الضرر الذي يسمح لسائقي الخزانات بتحسين مجموعة الوظائف الأساسية في عالم الدبابات. تم تطوير التعديل على أساس لوحة المؤلف المشهورة من Stlite.

اختلافات الموضة من نظائرها:

  • القدرة على عرض سجل تلف الخزان ؛
  • تظهر ارتداد الارتداد للقذائف ؛
  • تكون وحدات الخزان شفافة حتى تتلف - وهذا النهج يسهل تحليل الموقف ككل ؛
  • العد التنازلي لإصلاح وحدات الخزان ؛
  • مؤشر النار الساطع.

يأتي هذا الوضع في 3 إصدارات:

  • اللوحة الأولى ستطابق الوصف أعلاه.
  • سيتم وضع التعديل الثاني في وسط الشاشة وسيحتوي على معلومات حول وحدات الخزان.
  • الثالث يسلط الضوء على بيانات الإصلاح ، والتي ستكون موجودة أيضًا في المركز.

3) BATTLE INTERFACE Z-MOD من MARSOFF.

عمل جديد من المودر الشهير. تجمع واجهة هذا الوضع للدبابات بين أفضل العناصر في القتال فقط. للوهلة الأولى ، قد تبدو اللوحة صعبة الإدراك ، ولكن بعد معاركتين ، ستقدر إمكانيات هذا الوضع.

ميزات وزارة الدفاع:

  • تمت إزالة الممرات والمشاهد الفنية ؛
  • لا توجد لوحة تصحيح
  • لا يوجد مؤقت يعرض وقت الدبابة في المعركة ؛
  • لا توجد خرائط مصغرة مع نظرة عامة ؛
  • لا يوجد مشهد مدفعي على الخريطة المصغرة.

تخلصت الواجهة من الكثير من العناصر غير الضرورية ، وتم ترتيب جميع الوظائف الآن على هذه اللوحة المبسطة.

في التعديل ، كان هناك مؤشر على حدوث حريق بالقرب من الخزان وعد تنازلي لإصلاح الوحدات - العناصر الأكثر ضرورة. يوجد عداد السرعة الآن في الجزء الأوسط من الشاشة بالقرب من مشهد الخزان.

4) خريطة صغيرة ذكية لعالم الخزانات من لوكاستان.

في تصحيحات العميل الجديدة ، قام المطورون بتوسيع وظائف الأداة الأساسية ، لكن المعلومات لا تزال غير كافية ، لأن اللاعبين ما زالوا يبحثون عن تعديلات خرائط مصغرة عالية الجودة على الشبكة - وهذا واحد منهم.

الإضافات التي أدخلتها وزارة الدفاع:

  • دوائر المراجعة المضافة ؛
  • دائرة الرسم المضافة ؛
  • يتم عرض العلامات المقابلة في الأماكن التي دمرت فيها دبابات العدو ؛
  • تم زيادة حجم أيقونات الخزان ؛
  • صقل المعلومات المقدمة للمستخدم.

الوظائف الأساسية أيضا لم تختف. ضوء دبابة العدو ، UGN ، اتجاه شعاع البندقية - كل هذا سيبقى في أماكنهم الصحيحة.

تم تجميع التعديل مع مراعاة رغبات المئات من لاعبي World of Tanks ، مما يعني أن التعديل سيؤثر بشكل إيجابي على جودة اللعبة لكل من الناقلين المبتدئين والمحترفين.

5) جلود AESTHET من SERGEY EMETS لعالم الخزانات.

في WOT ، تجاوز عدد المركبات العسكرية 360 وحدة ، ولكل مركبة نقاط قوة وضعف. من أجل تجنب المفاجآت غير السارة على الأرجح ، تم تطوير تعديل خاص للدبابات يسمح لك بمعرفة سمك اختراق الدروع لأي مركبة في اللعبة.

تعتمد درجة الضعف على اللون الذي يقدمه الوضع:

  • أزرق - يصف محيط أقسام الوقود في الخزان ؛
  • أخضر - يصف محيط محرك السيارة القتالية ؛
  • أرجواني - كفاف لوضع الدروع.
  • أحمر - نقاط ضعف الخزان ، حيث يكون من الأسهل اختراقه.

تعد تعديلات World of Tanks الأخرى المشابهة غامضة للغاية ، وفي بعض الأحيان يكون من المستحيل التمييز بين المناطق. كما يوحي الاسم ، فإن جماليات العرض هي التي تميز هذا الوضع عن الآخرين - يتم تحديد جميع مناطق المشكلات فقط ، وليست مليئة بالألوان تمامًا.

على سبيل المكافأة ، هناك أيقونات تشير إلى اللاعب حول موقع الطاقم داخل الخزان ، مما يجعل من السهل تخويف أي منهم. يحتوي النموذج على مناطق اختراق للدبابات من المستويات 4 إلى 10 ضمناً. هذه المجموعة هي واحدة من أكبر المجموعات وأكثرها فاعلية في اللعبة.

6) قم بتغيير HANGARS عن طريق الضغط على زر مباشرة في HANGAR.

عدد تعديلات حظائر الطائرات في اللعبة هائل. "الجلود" مصنوعة من قبل كل شخص ليس كسولًا جدًا ، لذلك ، وفقًا للرأي الشخصي ، لا معنى لاختيار شيء من هذا القسم.

نود أن نلفت انتباهك إلى تعديل يسمح لك بتغيير حظائر الطائرات في World of Tanks دون مغادرة واجهة اللعبة. لكي يعمل التعديل ، ما عليك سوى تحديد حظيرة الطائرات من القائمة المنسدلة والتأكيد من خلال الزر "حفظ". ستصبح جميع التغييرات نافذة المفعول على الفور.

يتوفر التعديل الموجود في مجلد "الأسطح". يعمل التعديل مع كل من حظائر الطائرات الأساسية والمتميزة.

7) WOTLOGGER3 لعالم الصهاريج.


الإحصائيات هي أحد أهم المؤشرات التي تسمح لك بتحليل المعارك وإيجاد جذر المشكلة. تعد الوظيفة الأساسية للعميل أكثر من ضعيفة ، لذا فإن تثبيت تعديل للدبابات وفقًا للإحصاءات يعد خطوة إلزامية إذا كنت تخطط للعب WOT لأكثر من بضعة أسابيع.

ما هي الميزات التي يضيفها التعديل:

  • إحصائيات عن جميع المعارك التي تم لعبها خلال الفترة الزمنية المحددة ؛
  • مرشحات لاختيار المعارك مع الانتصارات / الهزائم ؛
  • عرض قائمة المعارك الكاملة بكمية كبيرة من البيانات المساعدة ؛
  • تجميع المعارك وفقا لمعايير معينة متاح.

يتم تحديث الوضع وتعديله باستمرار على الخزانات وفقًا لرغبات المستخدمين.

في البداية ، تم تقديم هذا الوضع كبرنامج مطلوب إطلاقه من خارج مساحة العميل. في التحديثات التالية ، تقرر إجراء تعديل مدمج ، مما سهل بشكل كبير حياة لاعبي World of Tanks في دراسة أداء معاركهم.

8) DEER / XVM لعالم الصهاريج.

النموذج الأكثر شيوعًا بين سائقي الدبابات - يستخدمه أكثر من 3500000 لاعب في عالم الدبابات يوميًا. ويرجع ذلك إلى وظائفها الضخمة ، والتي لا تستطيع حتى الناقلات المتمرسة التعامل معها على الفور.

ما يمكن أن يفعله جهاز الرنة:

  • لإظهار فعالية المعركة بدبابات كل من المنافسين والحلفاء في السلاح ؛
  • يعطي عدد الانتصارات / الهزائم لكل ناقلة ؛
  • مع الأخذ في الاعتبار النقطتين السابقتين ، يحسب احتمال الفوز من حيث النسبة المئوية ؛
  • يحتوي على سجل الضرر أثناء المعركة ؛
  • يحسن الخريطة المصغرة ويضيف إليها بيانات مساعدة عن الدبابات ؛
  • مؤشرات ضوئية مدمجة
  • يشير إلى سرعة اتصالك بالإنترنت - مؤشرات على القاعدة وفي حظيرة الطائرات ؛
  • أضاف مؤشرًا يشير إلى هجوم على القاعدة - يشير إلى عدد الدبابات + العد التنازلي لإكمال الاستيلاء ؛
  • تغيرت العلامات فوق الدبابات أيضًا.

القائمة المقدمة ليست سوى غيض من فيض من الوضع ، يتم الكشف عن وظائفها الكاملة من قبل اللاعب الموجود بالفعل في الدبابة أثناء المعركة نفسها. عدد المستحضرات المختلفة كبير جدًا ، لذا قم بتنزيل إرشادات التثبيت والتهيئة باستخدام التعديل ، حيث سيكون من الصعب للغاية فهم تعقيدات التعديل بنفسك.

قام المطورون بصنع نوعين من المودات للدبابات - الإصدارات الخفيفة والكاملة. الإصدار "الخفيف" مخصص لأجهزة الكمبيوتر الضعيفة ويحتوي فقط على تعقب الرنة وسجل الدخول.

9) رؤية "التيلة" لعالم الصهاريج.

أحد التعديلات الجديدة لتحسين رؤية الخزان. لا يؤذي تصميم الألوان بدرجات اللون الفيروزي العينين ويحسن الرؤية في مناطق المشاكل. التصميم ، على الرغم من أنه لا يمكن أن يعزى إلى المعيار ، ولكن بعد 5-7 معارك في الدبابات ، ستقبل بسهولة هذا المشهد في ترسانة التعديلات الخاصة بك.

وظائف وزارة الدفاع:

  • تغيير عبارة إعادة التحميل ؛
  • تم استبدال النسب الصحية بشريط XP ؛
  • ستعمل خرطوشة ذات عيار كبير كمؤشر للاختراق.

هذا الوضع هو واحد من أكثر الأشياء التي تم الترويج لها بين غير المعياريين. تنطبق التحديثات على جميع أنواع المشاهد ، والتي ستتيح لك الاستمتاع بمعارك عالية الجودة في الدبابات في أي نوع من المواقع.

10) مشروع WOT-MOD - مدير MOD.

لقد نظرنا إلى عدد كبير من التعديلات. ولكن ماذا لو كنت ترغب في تثبيت العديد من التعديلات مرة واحدة والاحتفاظ بالقدرة على تغييرها بسرعة؟ كما في حالة حظائر الطائرات ، يمكن للاعب الدبابة تبسيط حياته ببرنامج بسيط يدير جميع تعديلات World of Tanks المثبتة.

وظائف البرنامج:

  • القدرة على تثبيت / إزالة أو تعطيل التعديلات مؤقتًا من خلال واجهة البرنامج ؛
  • من الممكن إنشاء حزمة من التعديلات بنفسك ، ولن تحتاج إلى معرفة عميقة بالبرمجة هنا ؛
  • مناسب تمامًا لاختبار التعديلات على الخزانات - تم إنشاء تعديلات معطلة لهذا الغرض.

يتم توفير إرشادات تفصيلية لاستخدام نموذج World of Tanks جنبًا إلى جنب مع البرنامج ، ولكن حتى الطفل يمكنه فهم تعقيدات العمل هنا. هذه أداة مفيدة لأولئك الذين يرغبون في اختبار التعديلات في الخزانات ، لكنهم لا يريدون العبث باستمرار بالتعديلات يدويًا.

لقد اخترنا فقط أفضل التعديلات في World of Tanks حول الدبابات والبيئة في اللعبة. كل واحد منهم قادر على عكس قدرات سيارتك نوعياً وإطلاق العنان لإمكاناتها الكاملة.

أي حزمة تختارها عالم الدبابات؟

لقد تطرقنا بالفعل إلى موضوع حزم التعديل أعلاه قليلاً. يعد تجميع modpack المتوازن فنًا لا يمكن إلا لعشاق World of Tanks التعامل معه.

معايير اختيار Modpack:

    عدد التعديلات في العبوة.

    هذا لا يعني أن الخليط ليس من الواضح ما الذي سينزل. يجب أن يطالب لاعبو الدبابات بجميع التعديلات.

    جودة وزارة الدفاع.

    قد يؤدي استخدام التجميعات المشكوك فيها إلى الإضرار ليس فقط بعميل اللعبة ، بل بالكمبيوتر بأكمله. يجب أن تتكون الحزمة من تعديلات معتمدة رسميًا.

    فقط في هذه الحالة ، لا داعي للقلق بشأن سلامة المعلومات الشخصية على الجهاز.

    ديكور.

    يجب أن يكون للمثبت واجهة سهلة الاستخدام ولا ترهق عين المستخدم.

    معدل التحديث.

    معلمة مهمة للغاية ، لأنها تعتمد بشكل مباشر على ما إذا كانت التعديلات ستعمل على العميل أم لا. نظرًا للتحديثات المتكررة للعبة ، يجب على المؤلف الاستجابة بسرعة لهذه التغييرات ، وبالتالي ضبط التجميع.

بالنظر إلى كل ما سبق ، فقد اخترنا أفضل ثلاث حزم تعديل تفي بنسبة 100٪ بالشروط المحددة. من أجل الوضوح ، سنقوم بترتيبها في شكل جدول مقارن ، حيث يمكنك تقييم جميع مزايا ومحتوى كل منها من وجهة نظرك الشخصية.

كيف تحصل على ميزة كبيرة على العدو؟

أفضل تعديل لعالم الدبابات.

جدول مقارنة لأفضل 3 تعديل مبني على الشبكة.

أزياء AMWAY921أزياء من JOVE (JOVE)أزياء من PROTANKI
1. eXtended Visualization Mod - علامات ممتدة ، ضرر ناتج عن الارتداد ، تعديل الالتقاط الأساسي وسجل الضرر.منظار سوبر جوفا.النطاق القياسي مع مؤقت إعادة التحميل.
2. الكشف التلقائي عن العرض الحالي للخزان.كسوف شفاف في وضع القناص."اختيار جوف" - أوفر كروس. الشعيرات المتقاطعة في أضيق الحدود استنادًا إلى علامة التصويب الافتراضية للعبة.
3. استبدال الأصوات القياسية للعبة: "Call" عندما تتعرض الوحدات لأضرار جسيمة ويتم تشغيل الصوت عند تشغيل ميزة "الحاسة السادسة".لوحات تلف مختلفة."MathMod في MeltyMap". تم تطوير تعديل الواجهة بواسطة لاعبين من مجموعة الاتحاد الأوروبي.
4. تم تحسين مؤشر اتجاه الهجوم.خرائط مصغرة ذكية ، سواء في XVM أو البديل."Commander Camera" - تعديل لأقصى مسافة للكاميرا في وضع الممرات.
5 مؤشر محسّن لعدد المقذوفات.لمبات "الحاسة السادسة" + التمثيل الصوتي لهم."تعطيل التأثير" - تعطيل تأثير الكاميرا في وضع القناص.
6. قم بزيادة وقت عرض "اللمبة" عند تشغيل ميزة "الحاسة السادسة".أصوات مختلفة.معلومات حول إعادة الظهور عند التحميل في المعركة. بدلا من "تلميح" في شاشة التحميل.
7. عرض علامة منفصلة لـ TT10 على الخريطة المصغرة.علامات إعلامية.يمكنك تغيير سلوك الكاميرا - تعديل لتعطيل التأثيرات عند تلقي الضرر.
8. SafeShot: يمنع إطلاق النار على الدبابات المدمرة حديثًا.تعديل التكبير.مشهد الخادم - يُظهر هذا الوضع المكان الذي يتم فيه توجيه مشهد الدبابة وفقًا لخادم اللعبة.
9. إزالة التمويه والشعارات والنقوش على الخزانات.جلود تمويه شفافة وجثث دبابة بيضاء.إحصائيات موسعة. تعديل لعرض النتائج الإجمالية لجلسة اللعبة الحالية.
10. مشاهد ذات ميزات متقدمة.زيادة نطاق الرؤية على الخرائط مع الضباب.تحل علامات XVM الموجودة فوق المركبات محل علامات الخزان القياسية بأخرى أكثر إفادة.
11. لوحات الأضرار المخصصة: لوحة الأضرار القياسية ولوحة الضرر المخصصة.إحصائيات الجلسة."تمكين دائري الخزان" - عدة تعديلات لتخصيص قائمة الدبابات في حظيرة الطائرات.
12. تعطيل الوميض والخفقان للصورة عند حدوث ضرر.Wot Replays Manager هو برنامج للعمل مع الإعادة.الزوايا الأفقية. نموذج لا غنى عنه للدبابات بدون برج أو مع دوران محدود.
13. زوايا الارتفاع لـ Art-SPG و Fri-SPG.أفضل آلة حاسبة للدروع تأخذ بعين الاعتبار زاوية ميل المقذوف.لوحة المعلومات للهدف المحدد. يعرض التعديل معلومات أساسية عن دبابة خصمك.
14. تكبير / تصغير: أمر الكاميرا مع القدرة على تعطيل تأثيرات الكاميرا الديناميكية.WoT Tweaker هو برنامج لزيادة FPS عن طريق تعطيل التأثيرات المختلفة.براميل العدو على الخريطة المصغرة.
15. NoScroll: نطاق القناص فقط عند الضغط على "Shift"اتجاهات براميل العدو على الخريطة المصغرة.علامة اتجاه الضرر.
16. ZoomX: نطاق قناص متعدد المواضع (x2 ، x4 ، x8 ، x16).دائرة لاطلاق النار غير مرئية من الأدغال.حاسبة التقييم في المعركة.
17. إزالة التظليل في منظار القناص.وزارة الدفاع جثث الدبابات واليرقات البيضاء.تنبيه الحلفاء حول الضوء.
18. إحصائيات مفصلة للدورة على الخادم.تحسين تكبير x25 في نطاق القناصة.خزانات بيضاء. على غرار عربات الواغن البيضاء ، فهي تساعد على "انتزاع" المعارضين من وراء الغطاء.
19. رسائل ملونة عن نتائج المعركة.دبابات HP في الأذنين (في نسختين).اليرقات البيضاء سقطت. يُظهر الوضع بوضوح حالة هيكل المعارضين أو الحلفاء.

يوضح الجدول فقط أهم مكونات العبوات ، والتي يجب أن تكون في أي تجميع.

جميع الخيارات الثلاثة في الجزء العلوي من تصنيفات الشعبية ، ولكن احتل المركز الأول "Pro Tank".. تعمل مجموعة كاملة من المتخصصين في هذا المشروع. بعد تصحيحات World of Tanks الجديدة ، فإن هؤلاء الرجال هم أول من أصدر نسخة محدثة للإصدارات التي تم تغييرها من العميل.

استخدم تعديل عالم الدبابات حول الدبابات- يعني تحسين إنتاجية كل معركة بنسبة 40-50٪. وإذا استخدم أحد المحترفين تعديلات ، فعندئذٍ 100٪.

يعتبر البعض أن استخدام التعديلات يعد غشًا ، لكن التحسينات الوظيفية المعتمدة رسميًا تمنح الناقلة الحرية في اللعبة ، مما يوفر مزيدًا من المتعة من هذه العملية. وهذا أهم شيء في الدبابات!