میګاپیک: څنګه فاکتوریو د 200-پلیر ملټي پلیر ستونزه حل کړه

میګاپیک: څنګه فاکتوریو د 200-پلیر ملټي پلیر ستونزه حل کړه
د دې کال د می په میاشت کې ما د یو لوبغاړي په توګه ګډون وکړ کیترین آفسکی MMO پیښې. ما ولیدل چې کله د لوبغاړو شمیر یو ټاکلي شمیر ته ورسیږي، په هرو څو دقیقو کې ځینې یې "ټیټیږي". خوشبختانه ستاسو لپاره (مګر زما لپاره نه)، زه یو له دغو لوبغاړو څخه وم هر وختحتی د ښې اړیکې سره. ما دا د شخصي ننګونې په توګه واخیست او د ستونزې د لاملونو په لټه کې شوم. د درې اونیو ډیبګ کولو ، ازموینې او فکس کولو وروسته ، بګ په پای کې حل شوی ، مګر سفر دومره اسانه نه و.

په ملټي پلیر لوبو کې ستونزې د تعقیب لپاره خورا ستونزمن دي. دوی معمولا د خورا ځانګړي شبکې پیرامیټرو لاندې او د خورا ځانګړي لوبې حالتونو لاندې واقع کیږي (پدې حالت کې ، له 200 څخه ډیر لوبغاړي). او حتی کله چې یوه ستونزه بیا تولید کیدی شي ، دا په سمه توګه نشي ډیبګ کیدی شي ځکه چې د وقفې ځایونه دننه کول لوبه ودروي ، ټایمر ګډوډ کړي ، او معمولا د وخت پای ته رسیدو له امله د پیوستون لامل کیږي. خو د استقامت او په زړه پورې وسیله په نامه مننه clumsy زه وتوانید چې معلومه کړم چې څه تیریږي.

په لنډه توګه ، د ځنډ حالت سمولیشن د بګ او نامکمل پلي کیدو له امله ، پیرودونکي ځینې وختونه ځان په داسې حالت کې وموند چیرې چې باید په یو ساعت دوره کې د شبکې کڅوړه واستوي ، د شاوخوا 400 لوبې ادارو غوره کولو لپاره د لوبغاړو ان پټ عملونو څخه جوړ دی ( موږ دې ته "میګا پیکټ" وایو). له هغې وروسته، سرور نه یوازې اړتیا لري چې دا ټول ان پټ عملونه په سمه توګه ترلاسه کړي، بلکې نورو ټولو پیرودونکو ته یې هم واستوي. که تاسو 200 پیرودونکي لرئ، دا په چټکۍ سره ستونزه کیږي. سرور ته چینل په چټکۍ سره تړل کیږي، په پایله کې د پاکټ له لاسه ورکول او د بیا غوښتل شوي کڅوړو یوه کاسکیډ. د ان پټ عملونو ځنډول بیا د ډیرو پیرودونکو لامل کیږي چې میګا پیکټونه لیږل پیل کړي، او د دوی واوره نوره هم پیاوړې کیږي. بریالي پیرودونکي د بیرته راستنیدو اداره کوي، پاتې ټول له مینځه ځي.

میګاپیک: څنګه فاکتوریو د 200-پلیر ملټي پلیر ستونزه حل کړه
ستونزه خورا بنسټیزه وه، او ما د حل کولو لپاره 2 اونۍ وخت واخیست. دا خورا تخنیکي دی، نو زه به لاندې جوس تخنیکي توضیحات تشریح کړم. مګر لومړی ، تاسو اړتیا لرئ پوه شئ چې د 0.17.54 نسخه راهیسې چې د جون په 4 کې خپور شوی ، د لنډمهاله پیوستون ستونزو سره مخ دی ، ملټي پلیر ډیر مستحکم شوی ، او د ځنډ پټول خورا لږ بګي دي (لږ بریک کول او ټیلیپورټ کول). همچنان ، ما د جنګي ځنډونو پټولو لاره بدله کړې ، او امید لرم چې دا به دوی یو څه نرم کړي.

ملټي پلیر میګا پیک - تخنیکي توضیحات

د ساده کولو لپاره ، په لوبه کې ملټي پلیر داسې کار کوي: ټول پیرودونکي یوازې د لوبغاړي ان پټ ترلاسه کولو او لیږلو سره د لوبې حالت تقلید کوي (د "انپټ عمل" په نوم یادیږي. د ننوتلو کړنې). د سرور اصلي دنده لیږدول دي د ننوتلو کړنې او ډاډ ترلاسه کول چې ټول پیرودونکي په ورته دوره کې ورته کړنې ترسره کوي. تاسو کولی شئ پدې اړه نور په پوسټ کې ولولئ. FFF-149.

څرنګه چې سرور باید د کومو کړنو په اړه پریکړه وکړي، د لوبغاړي کړنې د لاندې لارې په اوږدو کې حرکت کوي: د پلیر عمل -> د لوبې پیرودونکي -> شبکه -> سرور -> شبکه -> د لوبې پیرودونکي. دا پدې مانا ده چې د لوبغاړي هر عمل یوازې وروسته له هغه ترسره کیږي چې د شبکې له لارې د ګردي سفر لاره جوړه کړي. د دې له امله ، لوبه به خورا ورو ورو ښکاري ، نو نږدې سمدلاسه په لوبه کې د ملټي پلیر څرګندیدو وروسته ، د ځنډونو پټولو میکانیزم معرفي شو. د ځنډ پټول د نورو لوبغاړو عملونو او د سرور پریکړې کولو په پام کې نیولو پرته د پلیر ان پټ انډول کوي.

میګاپیک: څنګه فاکتوریو د 200-پلیر ملټي پلیر ستونزه حل کړه
فاکتوریو د لوبې حالت لري د لوبې حالت د نقشې بشپړ حالت دی، لوبغاړی، ادارې، او نور هرڅه. دا د سرور څخه ترلاسه شوي عملونو پراساس په ټولو مراجعینو کې په ثابت ډول سمول شوی. د لوبې حالت سپیڅلی دی، او که چیرې دا کله هم د سرور یا کوم بل پیرودونکي څخه توپیر پیل کړي، نو بیا همغږي رامنځته کیږي.

پرته له د لوبې حالت موږ د ځنډ حالت لرو د ځنډ حالت. دا د اصلي حالت یوه کوچنۍ فرعي برخه لري. د ځنډ حالت مقدس نه دی او یوازې د هغه انځور استازیتوب کوي چې د لوبې حالت به په راتلونکي کې د لوبغاړي د معلوماتو پراساس څنګه ښکاري د ننوتلو کړنې.

د دې کولو لپاره، موږ د تولید شوي کاپي ساتو د ننوتلو کړنې د ځنډ په کتار کې.

میګاپیک: څنګه فاکتوریو د 200-پلیر ملټي پلیر ستونزه حل کړه
دا دی، د پیرودونکي لوري ته د پروسې په پای کې، انځور یو څه داسې ښکاري:

  1. درخواست وکړئ د ننوتلو کړنې ټولو لوبغاړو ته د لوبې حالت هغه طریقه چې دا ان پټ کړنې له سرور څخه ترلاسه شوي.
  2. د ځنډ له کتار څخه هرڅه لرې کړئ د ننوتلو کړنې، کوم چې د سرور په وینا ، دمخه پلي شوي د لوبې حالت.
  3. ړنګول د ځنډ حالت او بیا یې تنظیم کړئ نو دا بالکل ورته ښکاري د لوبې حالت.
  4. د ځنډ له کتار څخه ټول عملونه پلي کړئ د ځنډ حالت.
  5. د معلوماتو پر بنسټ د لوبې حالت и د ځنډ حالت لوبه لوبغاړي ته وړاندې کړئ.

دا ټول په هره بیټ کې تکرار کیږي.

ډیر ستونزمن؟ آرام مه کوئ، دا ټول نه دي. د بې اعتباره انټرنیټ اتصالاتو جبرانولو لپاره، موږ دوه میکانیزمونه جوړ کړي دي:

  • پریښودل شوي ټکونه: کله چې سرور دا پریکړه کوي د ننوتلو کړنې د لوبې په تاکتیک کې به اعدام شي، بیا که هغه نه وي ترلاسه کړی د ننوتلو کړنې ځینې ​​​​لوبغاړي (د بیلګې په توګه، د ډیر ځنډ له امله)، هغه به انتظار ونه کړي، مګر دې پیرودونکي ته به خبر ورکړي "ما ستاسو په نظر کې نه نیولی. د ننوتلو کړنې، زه به هڅه وکړم چې دوی په راتلونکي بار کې اضافه کړم. دا د دې لپاره ترسره کیږي چې د یو لوبغاړي د اتصال (یا کمپیوټر سره) سره د ستونزو له امله ، د نقشې تازه کول د هرچا لپاره ورو نه کیږي. د یادولو وړ ده چې د ننوتلو کړنې له پامه نه غورځول کیږي، مګر په ساده ډول ځنډول کیږي.
  • د بشپړ دورې سفر ځنډ: سرور هڅه کوي اټکل وکړي چې د پیرودونکي او سرور ترمینځ د دورې سفر ځنډ د هر پیرودونکي لپاره څه دی. په هرو 5 ثانیو کې، دا د اړتیا سره سم د پیرودونکي سره د نوي ځنډ په اړه خبرې کوي (په دې پورې اړه لري چې په تیرو کې پیوستون څنګه چلند کړی)، او د دې مطابق د دورې سفر ځنډ زیاتوي یا کموي.

پخپله ، دا میکانیزمونه خورا ساده دي ، مګر کله چې دوی یوځای کارول کیږي (کوم چې ډیری وختونه د پیوستون ستونزو سره پیښیږي) ، د کوډ منطق اداره کول ستونزمن کیږي او د ډیری قضیو سره. سربیره پردې ، کله چې دا میکانیزمونه پلي کیږي ، سرور او د ځنډ قطار باید په سمه توګه ځانګړي پلي کړي. د ننوتلو عمل د نوم لاندې StopMovementInTheNextTick. د دې څخه مننه، د اړیکو د ستونزو په صورت کې، کرکټر به پخپله نه ځي (د بیلګې په توګه، د اورګاډي لاندې).

اوس زه اړتیا لرم چې تاسو ته تشریح کړم چې د ادارې انتخاب څنګه کار کوي. یو له منظور شوي ډولونو څخه د ننوتلو عمل د یوې ادارې د انتخاب حالت کې بدلون دی. دا هرچا ته وايي چې کوم لوبغاړی د موږک سره ځړول شوی. لکه څنګه چې تاسو لیدلی شئ ، دا د پیرودونکو لخوا لیږل شوي یو له خورا مکرر ان پټ عملونو څخه دی ، نو د بینډ ویت خوندي کولو لپاره ، موږ دا غوره کړی ترڅو دا د امکان تر حده لږ ځای ونیسي. دا د دې په څیر پلي کیږي: کله چې هره اداره غوره کیږي، د دې پرځای چې د مطلق، لوړ دقیق نقشې همغږي ذخیره کړي، لوبه د تیرو انتخاب څخه د ټیټ دقت نسب آفسیټ ذخیره کوي. دا ښه کار کوي ځکه چې د موږک انتخاب معمولا د تیر انتخاب سره ډیر نږدې کیږي. دا دوه مهمې اړتیاوې رامینځته کوي: د ننوتلو کړنې هیڅکله باید پریښودل نشي او باید په سم ترتیب کې ترسره شي. دا اړتیاوې د دې لپاره پوره کیږي د لوبې حالت. مګر د دندې راهیسې د ځنډ حالت د لوبغاړي لپاره "کافي ښه لید" کې ، دوی د ځنډ حالت کې راضي ندي. د ځنډ حالت په پام کې نه نیسي ډیری سرحدی قضیېد ساعتونو پریښودلو او د ګردي سفر لیږد ځنډ بدلولو سره تړاو لري.

تاسو دمخه اټکل کولی شئ چې دا چیرته ځي. په نهایت کې ، موږ د میګا پیکج ستونزې لاملونو لیدو پیل کوو. د ستونزې ریښه دا ده چې د ادارې انتخاب منطق تکیه کوي د ځنډ حالت، او دا حالت تل سم معلومات نه لري. نو میګا پیکټ د دې په څیر رامینځته شوی:

  1. لوبغاړی د پیوستون مسلو سره مخ دی.
  2. د سایکلونو پریښودو او د ګردي سفر لیږد ځنډ تنظیم کولو میکانیزمونه په عمل کې راځي.
  3. د ځنډ ریاست کتار د دې میکانیزمونو حساب نه کوي. دا د دې لامل کیږي چې ځینې کړنې له وخت څخه مخکې لرې شي یا په غلط ترتیب کې پرمخ ځي، چې پایله یې ناسمه ده د ځنډ حالت.
  4. لوبغاړی د پیوستون ستونزه نلري او د سرور سره د نیولو لپاره تر 400 سایکلونو پورې سمول کوي.
  5. په هر دور کې، یو نوی عمل رامینځته کیږي او سرور ته د لیږلو لپاره چمتو کیږي، د ادارې انتخاب بدلوي.
  6. پیرودونکي سرور ته د 400+ ادارې انتخاب بدلونونو میګا پیکټ لیږي (او د نورو کړنو سره: د ډزو حالت ، د چلولو حالت ، او داسې نور هم له دې ستونزې سره مخ شوي).
  7. سرور 400 ان پټ عملونه ترلاسه کوي. څرنګه چې دا اجازه نه لري چې د یو واحد ان پټ عمل پریږدي، دا ټولو پیرودونکو ته لارښوونه کوي چې دا کړنې ترسره کړي او په شبکه کې یې لیږي.

عجیبه خبره دا ده چې یو میکانیزم چې د بینډ ویت ساتلو لپاره ډیزاین شوی د لوی شبکې کڅوړو په پایله کې رامینځته شوی.

موږ دا مسله د ټولو تازه کنډک قضیې په حل کولو او د قطار ملاتړ ځنډولو سره حل کړې. که څه هم دا یو څه وخت نیولی ، دا د ګړندي هیکونو تکیه کولو پرځای په پای کې سم ترلاسه کولو ارزښت درلود.

سرچینه: www.habr.com

Add a comment