Megapack: Factorio 200-ක්‍රීඩක බහු ක්‍රීඩක ගැටලුව විසඳූ ආකාරය

Megapack: Factorio 200-ක්‍රීඩක බහු ක්‍රීඩක ගැටලුව විසඳූ ආකාරය
මේ වසරේ මැයි මාසයේදී මම ක්‍රීඩකයෙක් ලෙස සහභාගි වුණා MMO සිදුවීම් KatherineOfSky. ක්‍රීඩකයින් සංඛ්‍යාව නිශ්චිත සංඛ්‍යාවකට ළඟා වූ විට, සෑම මිනිත්තු කිහිපයකට වරක් ඔවුන්ගෙන් සමහරක් “වැටෙන” බව මම දුටුවෙමි. ඔබගේ වාසනාවට (නමුත් මට නොවේ), මම විසන්ධි වූ ක්‍රීඩකයන්ගෙන් කෙනෙකි සෑම විට, හොඳ සම්බන්ධතාවයක් සමඟ පවා. මම මෙය පුද්ගලික අභියෝගයක් ලෙස ගෙන ගැටලුවට හේතු සෙවීමට පටන් ගතිමි. සති තුනක දෝශ නිරාකරණය, පරීක්ෂණ සහ නිවැරදි කිරීම් වලින් පසුව, අවසානයේ දෝෂය නිවැරදි කරන ලදී, නමුත් ගමන එතරම් පහසු නොවීය.

බහු ක්‍රීඩක ක්‍රීඩා වල ගැටළු සොයා බැලීම ඉතා අපහසුය. ඒවා සාමාන්‍යයෙන් සිදුවන්නේ ඉතා නිශ්චිත ජාල පරාමිතීන් සහ ඉතා නිශ්චිත ක්‍රීඩා තත්වයන් යටතේය (මෙම අවස්ථාවෙහිදී, ක්‍රීඩකයින් 200 කට වඩා වැඩි ගණනක් ඇත). තවද ගැටලුව ප්‍රතිනිෂ්පාදනය කළ හැකි වුවද, එය නිසි ලෙස නිදොස් කළ නොහැක, මන්ද බ්‍රේක්පොයින්ට් ඇතුළු කිරීම ක්‍රීඩාව නතර කරයි, ටයිමර් ව්‍යාකූල කරයි, සහ සාමාන්‍යයෙන් සම්බන්ධතාවය කල් ඉකුත් වීමට හේතු වේ. නමුත් නොපසුබට උත්සාහයට ස්තූතියි සහ අපූරු මෙවලමක් ලෙස හැඳින්වේ දුරකතනය නාද මොකද වෙන්නේ කියලා හොයාගන්න මට පුළුවන් වුණා.

කෙටියෙන් කිවහොත්, දෝෂයක් සහ ප්‍රමාද තත්ත්‍ව සමාකරණයේ අසම්පූර්ණ ක්‍රියාවට නැංවීම හේතුවෙන්, සේවාදායකයාට සමහර විට එක් ඔරලෝසු චක්‍රයක් තුළ ක්‍රීඩකයාගේ තේරීම් ක්‍රියා 400කින් සමන්විත ජාල පැකට්ටුවක් යැවීමට සිදුවනු ඇත (අපි මෙය "මෙගා පැකට්ටුවක්" ලෙස හඳුන්වන්න). එවිට සේවාදායකය විසින් මෙම ආදාන ක්‍රියා සියල්ල නිවැරදිව ලබා ගැනීම පමණක් නොව අනෙකුත් සියලුම සේවාලාභීන් වෙත යැවිය යුතුය. ඔබට සේවාදායකයින් 200 ක් සිටී නම්, මෙය ඉක්මනින් ගැටලුවක් බවට පත්වේ. සේවාදායකය වෙත සබැඳිය ඉක්මනින් අවහිර වන අතර, එය පැකට් නැතිවීමට සහ නැවත ඉල්ලන ලද පැකට් කඳුරැල්ලකට තුඩු දෙයි. ආදාන ක්‍රියාව ප්‍රමාද කිරීමෙන් පසුව තවත් සේවාදායකයින් මෙගාපැකට් යැවීමට හේතු වන අතර, හිම කුණාටුව තවත් විශාල වීමට හේතු වේ. වාසනාවන්ත සේවාදායකයින් යථා තත්ත්වයට පත් වීමට සමත් වේ; අනෙක් සියල්ලන්ම වැටේ.

Megapack: Factorio 200-ක්‍රීඩක බහු ක්‍රීඩක ගැටලුව විසඳූ ආකාරය
ගැටලුව ඉතා මූලික වූ අතර එය විසඳීමට මට සති 2ක් ගත විය. එය ඉතා තාක්ෂණික ය, එබැවින් මම ඉස්ම සහිත තාක්ෂණික විස්තර පහතින් පැහැදිලි කරමි. නමුත් පළමුව, ඔබ දැනගත යුත්තේ ජූනි 0.17.54 වන දින නිකුත් කරන ලද 4 අනුවාදයේ සිට තාවකාලික සම්බන්ධතා ගැටළු හමුවේ බහු ක්‍රීඩකයා වඩාත් ස්ථායී වී ඇති අතර ප්‍රමාදයන් සැඟවීම අඩු දෝෂ සහිත වී ඇති බවයි (අඩු මන්දගාමී සහ ටෙලිපෝට් කිරීම). මම සටන් ප්‍රමාදය සැඟවී ඇති ආකාරය ද වෙනස් කර ඇති අතර මෙය එය ටිකක් සුමට කරයි යැයි මම බලාපොරොත්තු වෙමි.

බහු ක්‍රීඩක මෙගා පැක් - තාක්ෂණික විස්තර

සරලව කිවහොත්, ක්‍රීඩාවක බහු ක්‍රීඩකයා ක්‍රියා කරන්නේ මේ ආකාරයට ය: සියලුම සේවාදායකයින් ක්‍රීඩාවේ තත්වය අනුකරණය කරයි, ක්‍රීඩක ආදානය පමණක් ලබා ගැනීම සහ යැවීම (“ආදාන ක්‍රියා” ලෙස හැඳින්වේ, ආදාන ක්රියා) සේවාදායකයේ ප්රධාන කාර්යය වන්නේ මාරු කිරීමයි ආදාන ක්රියා සහ සියලුම සේවාලාභීන් එකම ඔරලෝසු චක්‍රයේ එකම ක්‍රියා සිදු කරන බව පාලනය කරන්න. ඔබට මේ ගැන වැඩි විස්තර ලිපියෙන් කියවිය හැකිය FFF-149.

සේවාදායකය විසින් සිදු කළ යුතු ක්‍රියාවන් පිළිබඳව තීරණ ගත යුතු බැවින්, ක්‍රීඩකයාගේ ක්‍රියා මෙම මාර්ගය ඔස්සේ දළ වශයෙන් ගමන් කරයි: ක්‍රීඩක ක්‍රියාව -> ක්‍රීඩා සේවාදායකයා -> ජාලය -> සේවාදායකය -> ජාලය -> ක්‍රීඩා සේවාදායකයා. මෙයින් අදහස් කරන්නේ සෑම ක්‍රීඩකයෙකුගේම ක්‍රියාව සිදු කරනු ලබන්නේ ජාලය හරහා වට සංචාරයක් කිරීමෙන් පසුව බවයි. මේ නිසා, ක්‍රීඩාව දරුණු ලෙස මන්දගාමී බවක් පෙනෙනු ඇත, එබැවින් ක්‍රීඩාවේ බහු ක්‍රීඩකයන් හඳුන්වා දුන් වහාම වාගේ, ප්‍රමාදයන් සැඟවීමට යාන්ත්‍රණයක් හඳුන්වා දෙන ලදී. ප්‍රමාදය සැඟවීම අනෙකුත් ක්‍රීඩකයන්ගේ ක්‍රියා සහ සේවාදායකයේ තීරණ සැලකිල්ලට නොගෙන ක්‍රීඩක ආදානය අනුකරණය කරයි.

Megapack: Factorio 200-ක්‍රීඩක බහු ක්‍රීඩක ගැටලුව විසඳූ ආකාරය
Factorio සතුව ක්‍රීඩා තත්වයක් ඇත ක්‍රීඩා තත්වය කාඩ්පත, ක්‍රීඩකයා, ආයතන සහ අනෙකුත් සියල්ලෙහි සම්පූර්ණ තත්ත්වය වේ. සේවාදායකයෙන් ලැබෙන ක්‍රියාවන් මත පදනම්ව සියලුම සේවාලාභීන් තුළ එය නියත වශයෙන්ම අනුකරණය කෙරේ. ක්‍රීඩා තත්වය පරිශුද්ධ වන අතර, එය කවදා හෝ සේවාදායකයෙන් හෝ වෙනත් සේවාලාභියෙකුගෙන් වෙනස් වීමට පටන් ගන්නේ නම්, desync සිදුවේ.

හැර ක්‍රීඩා තත්වය අපට ප්‍රමාද වීමේ තත්වයක් ඇත ප්‍රමාද තත්ත්වය. එහි බිම් මට්ටමේ කුඩා උප කුලකයක් අඩංගු වේ. ප්‍රමාද තත්ත්වය පූජනීය නොවන අතර ක්‍රීඩක යෙදවුම් මත පදනම්ව අනාගතයේදී ක්‍රීඩා තත්ත්වය කෙබඳු වනු ඇත්ද යන්න පිළිබඳ පින්තූරයක් නිරූපණය කරයි ආදාන ක්රියා.

මෙම කාර්යය සඳහා, අපි නිර්මාණය කළ පිටපතක් ගබඩා කරමු ආදාන ක්රියා ප්‍රමාද පෝලිමේ.

Megapack: Factorio 200-ක්‍රීඩක බහු ක්‍රීඩක ගැටලුව විසඳූ ආකාරය
එනම්, ක්‍රියාවලිය අවසානයේ සේවාදායකයාගේ පැත්තේ පින්තූරය මේ වගේ දෙයක් පෙනේ:

  1. අපි අයදුම් කරන්නෙමු ආදාන ක්රියා සියලුම ක්‍රීඩකයින් වෙත ක්‍රීඩා තත්වය මෙම ආදාන ක්‍රියා සේවාදායකයෙන් ලැබුණු ආකාරය.
  2. අපි ප්‍රමාද පෝලිමෙන් සියල්ල ඉවත් කරමු ආදාන ක්රියා, සේවාදායකයට අනුව, දැනටමත් අයදුම් කර ඇත ක්‍රීඩා තත්වය.
  3. මකන්න ප්‍රමාද තත්ත්වය එය හරියටම සමාන වන පරිදි නැවත සකසන්න ක්‍රීඩා තත්වය.
  4. අපි ප්‍රමාද පෝලිමේ සිට සියලුම ක්‍රියා යොදන්නෙමු ප්‍රමාද තත්ත්වය.
  5. දත්ත මත පදනම්ව ක්‍රීඩා තත්වය и ප්‍රමාද තත්ත්වය අපි ක්‍රීඩාව ක්‍රීඩකයාට ලබා දෙනවා.

මේ සියල්ල සෑම මිනුමකින්ම පුනරාවර්තනය වේ.

අමාරු වැඩිද? විවේක ගන්න එපා, මේ සියල්ලම නොවේ. විශ්වාස කළ නොහැකි අන්තර්ජාල සම්බන්ධතා සඳහා වන්දි ගෙවීම සඳහා, අපි යාන්ත්‍රණ දෙකක් නිර්මාණය කර ඇත:

  • මඟ හැරුණු කිනිතුල්ලන්: සේවාදායකය එය තීරණය කරන විට ආදාන ක්රියා ක්රීඩාවේ පහර දී ක්රියාත්මක කරනු ඇත, පසුව ඔහු නොලැබුනේ නම් ආදාන ක්රියා සමහර ක්රීඩකයන් (උදාහරණයක් ලෙස, වැඩි ප්රමාදයක් හේතුවෙන්), ඔහු බලා නොසිටිනු ඇත, නමුත් මෙම සේවාදායකයාට දැනුම් දෙනු ඇත "මම ඔබේ සැලකිල්ලට ගත්තේ නැත. ආදාන ක්රියා, මම ඒවා ඊළඟ තීරුවේ එක් කිරීමට උත්සාහ කරමි." මෙය සිදු කරනුයේ එක් ක්‍රීඩකයෙකුගේ සම්බන්ධතාවයේ (හෝ පරිගණකයේ) ගැටළු හේතුවෙන්, සිතියම් යාවත්කාලීන කිරීම අනෙක් සියල්ලන්ටම මන්දගාමී නොවන පරිදි ය. බව සඳහන් කිරීම වටී ආදාන ක්රියා නොසලකා හරිනු නොලැබේ, නමුත් සරලව පසෙකට දමන්න.
  • සම්පූර්ණ වට-සංචාර ප්‍රමාදය: සේවාදායකයා සහ සේවාදායකයා අතර එක් එක් සේවාදායකයා සඳහා වට-සංචාර ප්‍රමාදය කුමක්දැයි අනුමාන කිරීමට සේවාදායකය උත්සාහ කරයි. සෑම තත්පර 5 කට වරක්, එය අවශ්‍ය නම් (සම්බන්ධතාවය අතීතයේ හැසිරුණු ආකාරය මත පදනම්ව) සේවාදායකයා සමඟ නව ප්‍රමාදයක් සාකච්ඡා කරන අතර ඒ අනුව වට-සංචාර ප්‍රමාදය වැඩි කරයි හෝ අඩු කරයි.

ඔවුන් විසින්ම, මෙම යාන්ත්‍රණ තරමක් සරල ය, නමුත් ඒවා එකට භාවිතා කරන විට (බොහෝ විට සම්බන්ධතා ගැටළු සමඟ සිදු වේ), කේතයේ තර්කනය කළමනාකරණය කිරීමට අපහසු වන අතර බොහෝ දාර අවස්ථා සමඟ. අතිරේකව, මෙම යාන්ත්‍රණ ක්‍රියාත්මක වන විට, සේවාදායකය සහ ප්‍රමාද පෝලිම විශේෂය නිසි ලෙස ක්‍රියාත්මක කළ යුතුය ආදාන ක්‍රියාව නම යටතේය StopMovementInTheNextTick. මෙයට ස්තූතියි, සම්බන්ධතාවයේ ගැටළු තිබේ නම්, චරිතය තනිවම ධාවනය නොවේ (උදාහරණයක් ලෙස, දුම්රියක් ඉදිරිපිට).

ආයතන තේරීම ක්‍රියාත්මක වන ආකාරය අපි දැන් ඔබට පැහැදිලි කළ යුතුයි. සම්ප්රේෂණය කරන ලද වර්ග වලින් එකක් ආදාන ක්‍රියාව ආයතන තේරීමේ තත්වයේ වෙනසක් වේ. එය ක්‍රීඩකයා සැරිසරන්නේ කුමන ආයතනයටද යන්න සෑම කෙනෙකුටම කියයි. ඔබට සිතාගත හැකි පරිදි, මෙය සේවාලාභීන් විසින් එවන ලද වඩාත් පොදු ආදාන ක්‍රියා වලින් එකකි, එබැවින් කලාප පළල සුරැකීමට, හැකිතාක් අඩු ඉඩක් ගැනීමට අපි එය ප්‍රශස්ත කර ඇත. එය ක්‍රියා කරන ආකාරය නම්, එක් එක් ආයතනය තෝරා ගන්නා විට, නිරපේක්ෂ, ඉහළ නිරවද්‍ය සිතියම් ඛණ්ඩාංක ගබඩා කිරීම වෙනුවට, ක්‍රීඩාව පෙර තේරීමෙන් අඩු නිරවද්‍ය සාපේක්ෂ ඕෆ්සෙට් එකක් ගබඩා කරයි. මූසික තේරීම් පෙර තේරීමට ඉතා ආසන්න බැවින් මෙය හොඳින් ක්‍රියාත්මක වේ. මෙය වැදගත් අවශ්‍යතා දෙකක් මතු කරයි: ආදාන ක්රියා ඒවා කිසිවිටෙක මඟ හැරිය යුතු අතර නිවැරදි අනුපිළිවෙලින් සම්පූර්ණ කළ යුතුය. සඳහා මෙම අවශ්යතා සපුරා ඇත ක්‍රීඩා තත්වය. නමුත් කාර්යයේ සිට ප්රමාද තත්ත්වය ක්‍රීඩකයා සඳහා "ප්‍රමාණවත් තරම් හොඳ පෙනුමක්" තුළ, ඔවුන් ප්‍රමාද තත්ත්වයෙන් සෑහීමකට පත් නොවේ. ප්‍රමාද තත්ත්වය සැලකිල්ලට නොගනී බොහෝ අන්ත අවස්ථා, ඔරලෝසු චක්‍ර මඟ හැරීම සහ වට-ගමන් සම්ප්‍රේෂණ ප්‍රමාදයන් වෙනස් කිරීම හා සම්බන්ධයි.

මෙය සිදු වන්නේ කොතැනටදැයි ඔබට දැනටමත් අනුමාන කළ හැකිය. අපි අවසානයේ මෙගාපැක් ගැටලුවට හේතු බලන්න පටන් ගන්නවා. ගැටලුවේ මූලය වන්නේ ආයතන තේරීමේ තර්කනය රඳා පැවතීමයි ප්‍රමාද තත්ත්වය, සහ මෙම තත්වය සෑම විටම නිවැරදි තොරතුරු අඩංගු නොවේ. එමනිසා, මෙගාපැකට් එකක් මේ වගේ දෙයක් ජනනය කරයි:

  1. ක්රීඩකයාට සම්බන්ධතා ගැටළු තිබේ.
  2. ඔරලෝසු චක්‍ර මඟ හැරීම සහ වට-ගමන් සම්ප්‍රේෂණයේ ප්‍රමාදය නියාමනය කිරීම සඳහා යාන්ත්‍රණ ක්‍රියාත්මක වේ.
  3. ප්‍රමාද රාජ්‍ය පෝලිම මෙම යාන්ත්‍රණයන් සැලකිල්ලට නොගනී. මෙය සමහර ක්‍රියා අකාලයේ ඉවත් කිරීමට හෝ වැරදි අනුපිළිවෙලකට සිදු කිරීමට හේතු වේ, වැරදි ප්‍රතිඵලයකි ප්‍රමාද තත්ත්වය.
  4. ක්‍රීඩකයාට සම්බන්ධතා ගැටලුවක් ඇති අතර, සේවාදායකය සමඟ අල්ලා ගැනීම සඳහා, චක්‍ර 400 ක් දක්වා අනුකරණය කරයි.
  5. එක් එක් ටික් එකකදී, නව ක්‍රියාවක්, ආයතන තේරීම වෙනස් කිරීම, උත්පාදනය කර සේවාදායකය වෙත යැවීමට සූදානම් වේ.
  6. සේවාලාභියා 400+ ආයතන තේරීමේ වෙනස්කම් වල මෙගා කාණ්ඩයක් සේවාදායකය වෙත යවයි (සහ වෙනත් ක්‍රියාවන් සමඟ: වෙඩි තැබීමේ අවස්ථා, ඇවිදීමේ තත්වයන්, ආදියද මෙම ගැටලුවෙන් පීඩා විඳිති).
  7. සේවාදායකයට ආදාන ක්‍රියා 400 ක් ලැබේ. කිසිදු ආදාන ක්‍රියාවක් මඟ හැරීමට එයට ඉඩ නොදෙන බැවින්, එම ක්‍රියාවන් සිදු කිරීමට සියලුම සේවාලාභීන්ට නියෝග කර ඒවා ජාලය හරහා යවයි.

උත්ප්‍රාසය නම් කලාප පළල සුරැකීම සඳහා නිර්මාණය කරන ලද යාන්ත්‍රණයක් විශාල ජාල පැකට් නිර්මාණය කිරීම අවසන් වීමයි.

යාවත්කාලීන කිරීම් සහ පසුබැසීම පෝලිම් ආධාරකයේ සියලුම අන්ත අවස්ථා නිරාකරණය කිරීමෙන් අපි මෙම ගැටලුව ආමන්ත්‍රණය කළෙමු. එය ඉතා සුළු කාලයක් ගත වුවද, අවසානයේ ඉක්මන් හැක් කිරීම් මත විශ්වාසය තැබීමට වඩා එය නිවැරදිව ලබා ගැනීම වටී.

මූලාශ්රය: www.habr.com

අදහස් එක් කරන්න