ආරම්භකයින් සඳහා ක්රීඩා වල ජාල ආකෘතිය ගැන

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

මෙම මාර්ගෝපදේශය තුළ, ඔබේම ක්‍රීඩා එන්ජිමක් ලිවීමට පෙර ඔබ ඉගෙන ගත යුතු විවිධ සංකල්ප මෙන්ම ඒවා ඉගෙන ගැනීමට හොඳම සම්පත් සහ ලිපි ඔබ සමඟ බෙදා ගැනීමට මම කැමතියි.

සාමාන්‍යයෙන්, ජාල ගෘහ නිර්මාණ ශිල්පයේ ප්‍රධාන වර්ග දෙකක් තිබේ: peer-to-peer සහ client-server. peer-to-peer (p2p) ගෘහ නිර්මාණ ශිල්පය තුළ, ඕනෑම සම්බන්ධිත ක්‍රීඩක යුගලයක් අතර දත්ත හුවමාරු වන අතර, සේවාදායක-සේවාදායක ගෘහ නිර්මාණ ශිල්පය තුළ, දත්ත හුවමාරු වන්නේ ක්‍රීඩකයන් සහ සේවාදායකය අතර පමණි.

සමහර ක්‍රීඩා වල peer-to-peer ගෘහ නිර්මාණ ශිල්පය තවමත් භාවිතා වුවද, සේවාලාභියා-සේවාදායකය ප්‍රමිතියයි: එය ක්‍රියාත්මක කිරීමට පහසු වේ, කුඩා නාලිකා පළලක් අවශ්‍ය වන අතර වංචාවෙන් ආරක්ෂා වීම පහසු කරයි. එබැවින්, මෙම නිබන්ධනයේදී අපි සේවාදායක-සේවාදායක ගෘහ නිර්මාණ ශිල්පය කෙරෙහි අවධානය යොමු කරමු.

විශේෂයෙන්ම, අපි අධිකාරී සේවාදායකයන් ගැන වඩාත් උනන්දු වෙමු: එවැනි පද්ධතිවල, සේවාදායකය සැමවිටම නිවැරදියි. උදාහරණයක් ලෙස, ක්‍රීඩකයෙකු ඔහු ඛණ්ඩාංකවල (10, 5) සිටින බව සිතන්නේ නම් සහ සේවාදායකයා ඔහු (5, 3) හි සිටින බව ඔහුට පවසන්නේ නම්, සේවාදායකයා එහි පිහිටීම සේවාදායකය විසින් වාර්තා කරන ලද ස්ථානය සමඟ ප්‍රතිස්ථාපනය කළ යුතු අතර උපස්ථ නොවේ. අනෙක් අතට. බලයලත් සේවාදායකයන් භාවිතා කිරීම වංචාකරුවන් හඳුනා ගැනීම පහසු කරයි.

ජාල ක්‍රීඩා පද්ධති ප්‍රධාන කොටස් තුනක් ඇත:

  • ප්‍රවාහන ප්‍රොටෝකෝලය: සේවාදායකයන් සහ සේවාදායකය අතර දත්ත මාරු කරන ආකාරය.
  • යෙදුම් ප්‍රොටෝකෝලය: සේවාදායකයින්ගෙන් සේවාදායකයට සහ සේවාදායකයෙන් සේවාදායකයින්ට සම්ප්‍රේෂණය වන දේ සහ කුමන ආකෘතියෙන්ද යන්න.
  • යෙදුම් තර්කනය: සේවාලාභීන්ගේ සහ සේවාදායකයේ තත්ත්වය යාවත්කාලීන කිරීමට මාරු කළ දත්ත භාවිතා කරන ආකාරය.

එක් එක් කොටසෙහි කාර්යභාරය සහ ඒවාට සම්බන්ධ අභියෝග තේරුම් ගැනීම ඉතා වැදගත් වේ.

ප්රවාහන ප්රොටෝකෝලය

පළමු පියවර වන්නේ සේවාදායකය සහ සේවාදායකයන් අතර දත්ත ප්රවාහනය සඳහා ප්රොටෝකෝලයක් තෝරා ගැනීමයි. මේ සඳහා අන්තර්ජාල ප්‍රොටෝකෝල දෙකක් තිබේ: TCP и UDP. නමුත් ඔබට ඒවායින් එකක් මත පදනම්ව ඔබේම ප්‍රවාහන ප්‍රොටෝකෝලය නිර්මාණය කළ හැකිය හෝ ඒවා භාවිතා කරන පුස්තකාලයක් භාවිතා කළ හැකිය.

TCP සහ UDP සංසන්දනය කිරීම

TCP සහ UDP යන දෙකම පදනම් වේ IP. IP මඟින් පැකට්ටුවක් මූලාශ්‍රයකින් ලබන්නා වෙත සම්ප්‍රේෂණය කිරීමට ඉඩ සලසයි, නමුත් යවන ලද පැකට්ටුව ඉක්මනින් හෝ පසුව ලබන්නා වෙත ළඟා වන බවටත්, එය අවම වශයෙන් එක් වරක්වත් එය වෙත ළඟා වන බවටත්, පැකට් අනුපිළිවෙල නිවැරදිව පැමිණෙන බවටත් සහතික නොවේ. නියෝග. එපමනක් නොව, පැකට්ටුවක අඩංගු විය හැක්කේ වටිනාකමෙන් ලබා දී ඇති සීමිත දත්ත ප්‍රමාණයක් පමණි MTU.

UDP යනු IP මුදුනේ තුනී ස්ථරයක් පමණි. එබැවින්, එය එකම සීමාවන් ඇත. ඊට වෙනස්ව, TCP බොහෝ විශේෂාංග ඇත. එය දෝෂ පිරික්සීම සමඟ නෝඩ් දෙකක් අතර විශ්වාසනීය, පිළිවෙලට සම්බන්ධයක් සපයයි. එබැවින්, TCP ඉතා පහසු වන අතර වෙනත් බොහෝ ප්‍රොටෝකෝල වල භාවිතා වේ, උදා. HTTP, FTP и SMTP. නමුත් මෙම සියලු විශේෂාංග මිලකට පැමිණේ: ප්රමාද.

මෙම කාර්යයන් ප්‍රමාද වීමට හේතු විය හැක්කේ මන්දැයි තේරුම් ගැනීමට, TCP ක්‍රියා කරන ආකාරය අප තේරුම් ගත යුතුය. යැවීමේ නෝඩයක් පැකට්ටුවක් ලැබීමේ නෝඩයකට සම්ප්‍රේෂණය කරන විට, එය පිළිගැනීමක් (ACK) ලැබීමට අපේක්ෂා කරයි. නිශ්චිත කාලයකට පසු එය නොලැබුනේ නම් (පැකට්ටුව හෝ පිළිගැනීම නැති වූ නිසා හෝ වෙනත් හේතුවක් නිසා), එවිට එය පැකට්ටුව නැවත යවයි. එපමනක් නොව, TCP මගින් පැකට් ලැබෙන්නේ නිවැරදි අනුපිළිවෙලට බව සහතික කරයි, එබැවින් නැතිවූ පැකට්ටුව ලැබෙන තුරු, අනෙක් සියලුම පැකට් ඒවා දැනටමත් ලබා ගන්නා සත්කාරකයාට ලැබී තිබුණද ඒවා සැකසීමට නොහැක.

නමුත් ඔබට සිතාගත හැකි පරිදි, බහු ක්‍රීඩක ක්‍රීඩා වල ප්‍රමාදය ඉතා වැදගත් වේ, විශේෂයෙන්ම FPS වැනි ක්‍රියාදාම-ඇසුරුම් ප්‍රභේදවල. බොහෝ ක්‍රීඩා UDP ඔවුන්ගේම ප්‍රොටෝකෝලය සමඟ භාවිතා කරන්නේ එබැවිනි.

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

ඉතින්, TCP එතරම් උරා බොනවා නම්, අපි UDP මත පදනම්ව අපගේම ප්‍රවාහන ප්‍රොටෝකෝලය නිර්මාණය කරමුද?

ඒක ටිකක් සංකීර්ණයි. සූදු ජාල පද්ධති සඳහා TCP බොහෝ දුරට උපප්‍රශස්ත වුවද, එය ඔබගේ නිශ්චිත ක්‍රීඩාව සඳහා හොඳින් ක්‍රියා කළ හැකි අතර ඔබේ වටිනා කාලය ඉතිරි කරයි. උදාහරණයක් ලෙස, ප්‍රමාදය හැරවුම් පාදක ක්‍රීඩාවක් හෝ LAN ජාල වල පමණක් ක්‍රීඩා කළ හැකි ක්‍රීඩාවක් සඳහා ගැටළුවක් නොවිය හැක, ප්‍රමාදය සහ පැකට් අලාභය අන්තර්ජාලයට වඩා බෙහෙවින් අඩුය.

World of Warcraft, Minecraft සහ Terraria ඇතුළු බොහෝ සාර්ථක ක්‍රීඩා TCP භාවිතා කරයි. කෙසේ වෙතත්, බොහෝ FPSs තමන්ගේම UDP මත පදනම් වූ ප්‍රොටෝකෝල භාවිතා කරයි, එබැවින් අපි ඒවා ගැන වැඩි විස්තර පහතින් කතා කරමු.

ඔබ TCP භාවිතා කිරීමට තීරණය කරන්නේ නම්, එය අක්රිය කර ඇති බවට වග බලා ගන්න Nagle ගේ ඇල්ගොරිතම, එය යැවීමට පෙර පැකට් බෆර් කරන නිසා, එයින් අදහස් වන්නේ එය ප්‍රමාදය වැඩි කරන බවයි.

බහු ක්‍රීඩක ක්‍රීඩා වල සන්දර්භය තුළ UDP සහ TCP අතර වෙනස්කම් ගැන වැඩිදුර දැන ගැනීමට, ඔබට Glenn Fiedler ගේ ලිපිය කියවිය හැක. UDP එදිරිව TCP.

තමන්ගේම ප්රොටෝකෝලය

ඉතින් ඔබට ඔබේම ප්‍රවාහන ප්‍රොටෝකෝලයක් නිර්මාණය කිරීමට අවශ්‍යයි, නමුත් ආරම්භ කළ යුත්තේ කොතැනින්දැයි නොදන්නේද? Glenn Fiedler මේ ගැන අපූරු ලිපි දෙකක් ලියා ඇති නිසා ඔබ වාසනාවන්තයි. ඔබ ඔවුන් තුළ බොහෝ බුද්ධිමත් සිතුවිලි සොයා ගනු ඇත.

පළමු ලිපිය ක්‍රීඩා ක්‍රමලේඛකයින් සඳහා ජාලකරණය 2008, දෙවන එකට වඩා පහසු, ක්‍රීඩා ජාල ප්‍රොටෝකෝලයක් ගොඩනැගීම 2016. ඔබ පැරණි එකෙන් පටන් ගන්නා ලෙස මම නිර්දේශ කරමි.

Glenn Fiedler UDP මත පදනම් වූ අභිරුචි ප්‍රොටෝකෝලයක් භාවිතා කිරීමේ විශාල යෝජකයෙකු බව සලකන්න. ඔහුගේ ලිපි කියවීමෙන් පසු, වීඩියෝ ක්‍රීඩා වල TCP බරපතල අඩුපාඩු ඇති බවට ඔබ ඔහුගේ මතය අනුගමනය කරනු ඇති අතර, ඔබට ඔබේම ප්‍රොටෝකෝලය ක්‍රියාත්මක කිරීමට අවශ්‍ය වනු ඇත.

නමුත් ඔබ ජාලකරණයට අලුත් නම්, ඔබටම උදව්වක් කර TCP හෝ පුස්තකාලයක් භාවිතා කරන්න. ඔබේම ප්‍රවාහන ප්‍රොටෝකෝලය සාර්ථකව ක්‍රියාත්මක කිරීමට, ඔබ පෙර බොහෝ දේ ඉගෙන ගත යුතුය.

ජාල පුස්තකාල

ඔබට TCP වඩා කාර්යක්ෂම දෙයක් අවශ්‍ය නම්, නමුත් ඔබේම ප්‍රොටෝකෝලය ක්‍රියාත්මක කිරීමේ කරදරයකින් තොරව සහ බොහෝ විස්තර වෙත යාමට අවශ්‍ය නම්, ඔබට ජාලකරණ පුස්තකාලයක් භාවිතා කළ හැකිය. ඒවායින් බොහොමයක් තිබේ:

  • yojimbo ග්ලෙන් ෆීඩ්ලර්
  • RakNet, එය තවදුරටත් සහාය නොදක්වයි, නමුත් එහි දෙබලකි SLikeNet එය තවමත් ක්‍රියාකාරී බව පෙනේ.
  • ENet බහු ක්‍රීඩක FPS සඳහා නිර්මාණය කරන ලද පුස්තකාලයකි කැට
  • GameNetworkingSockets කපාටය

මම ඒවා සියල්ලම උත්සාහ කර නැත, නමුත් එය භාවිතා කිරීමට පහසු සහ විශ්වාසදායක නිසා මම ENet වලට කැමතියි. ඊට අමතරව, එහි පැහැදිලි ලියකියවිලි සහ ආරම්භකයින් සඳහා නිබන්ධනයක් ඇත.

ප්රවාහන ප්රොටෝකෝලය: නිගමනය

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

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

මට උපදෙස් දෙකක් තිබේ:

  • ප්‍රවාහන ප්‍රොටෝකෝලය හැකිතාක් ඉතිරි යෙදුමෙන් වියුක්ත කරන්න එවිට එය සියලු කේතය නැවත ලිවීමෙන් තොරව පහසුවෙන් ප්‍රතිස්ථාපනය කළ හැකිය.
  • ඕනෑවට වඩා ප්‍රශස්ත කරන්න එපා. ඔබ ජාලකරණ විශේෂඥයෙක් නොවේ නම් සහ ඔබට අභිරුචි UDP-පාදක ප්‍රවාහන ප්‍රොටෝකෝලයක් අවශ්‍ය දැයි විශ්වාස නැත්නම්, ඔබට TCP හෝ විශ්වසනීයත්වය සපයන පුස්තකාලයකින් ආරම්භ කළ හැක, පසුව කාර්ය සාධනය පරීක්ෂා කර මැන බලන්න. ගැටළු ඇති වුවහොත් සහ හේතුව ප්‍රවාහන ප්‍රොටෝකෝලය බව ඔබට විශ්වාස නම්, ඔබේම ප්‍රවාහන ප්‍රොටෝකෝලය නිර්මාණය කිරීමට කාලය විය හැකිය.

මෙම කොටස අවසානයේ, ඔබ කියවන ලෙස මම නිර්දේශ කරමි බහු ක්‍රීඩක ක්‍රීඩා ක්‍රමලේඛනය හැඳින්වීම මෙහි සාකච්ඡා කෙරෙන බොහෝ මාතෘකා ආවරණය වන බ්‍රයන් හූක් විසිනි.

යෙදුම් ප්රොටෝකෝලය

දැන් අපට සේවාදායකයන් සහ සේවාදායකය අතර දත්ත හුවමාරු කර ගත හැකි බැවින්, කුමන දත්ත මාරු කළ යුතුද සහ කුමන ආකෘතියෙන්ද යන්න තීරණය කළ යුතුය.

සම්භාව්‍ය යෝජනා ක්‍රමය නම්, සේවාදායකයන් සේවාදායකයට ආදානය හෝ ක්‍රියා යවන අතර, සේවාදායකය විසින් වත්මන් ක්‍රීඩා තත්ත්වය සේවාදායකයින් වෙත යවයි.

සේවාදායකයා යවන්නේ සම්පූර්ණ තත්වය නොව, ක්‍රීඩකයා අසල ඇති ආයතන සහිත පෙරූ තත්වයකි. ඔහු එසේ කරන්නේ හේතු තුනක් නිසා ය. පළමුව, සම්පූර්ණ තත්වය ඉහළ සංඛ්‍යාතයකින් සම්ප්‍රේෂණය කිරීමට නොහැකි තරම් විශාල විය හැක. දෙවනුව, සේවාදායකයින් ප්‍රධාන වශයෙන් දෘශ්‍ය සහ ශ්‍රව්‍ය දත්ත කෙරෙහි උනන්දුවක් දක්වයි, මන්ද බොහෝ ක්‍රීඩා තර්කනය ක්‍රීඩා සේවාදායකයේ අනුකරණය කර ඇත. තෙවනුව, සමහර ක්‍රීඩා වලදී ක්‍රීඩකයාට නිශ්චිත දත්ත දැන ගැනීමට අවශ්‍ය නැත, නිදසුනක් ලෙස, සිතියමේ අනෙක් පැත්තේ සතුරාගේ පිහිටීම, එසේ නොමැතිනම් ඔහුට පැකට් උදුරා ගත හැකි අතර ඔහුව මරා දැමීමට කොතැනට යා යුතුද යන්න හරියටම දැන ගත හැකිය.

අනුක්‍රමිකකරණය

පළමු පියවර වන්නේ අපට යැවීමට අවශ්‍ය දත්ත (ආදාන හෝ ක්‍රීඩා තත්වය) සම්ප්‍රේෂණය සඳහා සුදුසු ආකෘතියකට පරිවර්තනය කිරීමයි. මෙම ක්රියාවලිය හැඳින්වේ අනුක්රමිකකරණය.

වහාම සිතට එන සිතුවිල්ල වන්නේ JSON හෝ XML වැනි මිනිසුන්ට කියවිය හැකි ආකෘතියක් භාවිතා කිරීමයි. නමුත් මෙය සම්පූර්ණයෙන්ම අකාර්යක්ෂම වන අතර බොහෝ නාලිකාව නාස්ති කරනු ඇත.

ඒ වෙනුවට ද්විමය ආකෘතිය භාවිතා කිරීම රෙකමදාරු කරනු ලැබේ, එය වඩාත් සංයුක්ත වේ. එනම්, පැකට් වල අඩංගු වන්නේ බයිට් කිහිපයක් පමණි. මෙහිදී සලකා බැලිය යුතු ගැටලුවක් තිබේ බයිට් ඇණවුම, විවිධ පරිගණක වල ​​වෙනස් විය හැක.

දත්ත අනුක්‍රමික කිරීමට, ඔබට පුස්තකාලයක් භාවිතා කළ හැකිය, උදාහරණයක් ලෙස:

පුස්තකාලය අතේ ගෙන යා හැකි ලේඛනාගාරයක් නිර්මාණය කරන බවටත්, අවසානය ගැන සැලකිලිමත් වන බවටත් වග බලා ගන්න.

විකල්ප විසඳුමක් වන්නේ එය ඔබම ක්‍රියාත්මක කිරීමයි; විශේෂයෙන් ඔබ ඔබේ කේතයට දත්ත කේන්ද්‍රීය ප්‍රවේශයක් භාවිතා කරන්නේ නම් එය විශේෂයෙන් අපහසු නොවේ. ඊට අමතරව, පුස්තකාලය භාවිතා කරන විට සෑම විටම කළ නොහැකි ප්රශස්තකරණයන් සිදු කිරීමට එය ඔබට ඉඩ සලසයි.

ග්ලෙන් ෆීඩ්ලර් අනුක්‍රමිකකරණය ගැන ලිපි දෙකක් ලිවීය: පැකට් කියවීම සහ ලිවීම и අනුක්‍රමික උපාය මාර්ග.

සංකෝචනය

සේවාලාභීන් සහ සේවාදායකය අතර මාරු කරන ලද දත්ත ප්‍රමාණය නාලිකාවේ කලාප පළලින් සීමා වේ. දත්ත සම්පීඩනය මඟින් ඔබට එක් එක් ස්නැප්ෂොට් එකක වැඩිපුර දත්ත මාරු කිරීමට, යාවත්කාලීන සංඛ්‍යාතය වැඩි කිරීමට හෝ නාලිකා අවශ්‍යතා අඩු කිරීමට ඉඩ සලසයි.

බිට් ඇසුරුම්

පළමු තාක්ෂණය වන්නේ බිට් ඇසුරුම් කිරීමයි. අපේක්ෂිත අගය විස්තර කිරීමට අවශ්‍ය බිටු ගණන හරියටම භාවිතා කිරීමෙන් එය සමන්විත වේ. උදාහරණයක් ලෙස, ඔබට විවිධ අගයන් 16 ක් තිබිය හැකි enum එකක් තිබේ නම්, සම්පූර්ණ බයිටයක් (බිට් 8) වෙනුවට ඔබට බිටු 4ක් පමණක් භාවිතා කළ හැක.

Glenn Fiedler ලිපියේ දෙවන කොටසින් මෙය ක්‍රියාත්මක කරන්නේ කෙසේද යන්න පැහැදිලි කරයි පැකට් කියවීම සහ ලිවීම.

බිට් ඇසුරුම් විශේෂයෙන් නියැදීම සමඟ හොඳින් ක්‍රියා කරයි, එය ඊළඟ කොටසේ මාතෘකාව වනු ඇත.

නියැදීම

නියැදීම අගයක් සංකේතනය කිරීමට හැකි අගයන් උප කුලකයක් පමණක් භාවිතා කරන පාඩු සහිත සම්පීඩන ක්‍රමයකි. විචක්ෂණභාවය ක්‍රියාත්මක කිරීමට ඇති පහසුම ක්‍රමය වන්නේ පාවෙන ලක්ෂ්‍ය සංඛ්‍යා වට කිරීමයි.

Glenn Fiedler (නැවතත්!) ඔහුගේ ලිපියේ නියැදීම ප්‍රායෝගිකව භාවිතා කරන ආකාරය පෙන්වයි Snapshot සම්පීඩනය.

සම්පීඩන ඇල්ගොරිතම

මීළඟ තාක්ෂණය වනුයේ පාඩු රහිත සම්පීඩන ඇල්ගොරිතම වේ.

මෙන්න, මගේ මතය අනුව, ඔබ දැනගත යුතු වඩාත්ම සිත්ගන්නා ඇල්ගොරිතම තුන:

  • හෆ්මන් කේතීකරණය පූර්ව-පරිගණක කේතය සමඟ, එය අතිශය වේගවත් වන අතර හොඳ ප්රතිඵල ලබා ගත හැක. එය Quake3 ජාලකරණ එන්ජිමෙහි පැකට් සම්පීඩනය කිරීමට භාවිතා කරන ලදී.
  • zlib දත්ත ප්‍රමාණය කිසිදා වැඩි නොකරන පොදු කාර්ය සම්පීඩන ඇල්ගොරිතමයකි. කොහොමද බලන්න පුළුවන් මෙහි, එය විවිධ යෙදුම්වල භාවිතා කර ඇත. තත්ත්වයන් යාවත්කාලීන කිරීම සඳහා එය අතිරික්ත විය හැක. නමුත් ඔබට සේවාදායකයෙන් සේවාදායකයින්ට වත්කම්, දිගු පෙළ හෝ භූමි යැවීමට අවශ්‍ය නම් එය ප්‍රයෝජනවත් විය හැකිය.
  • ධාවන දිග පිටපත් කිරීම - මෙය බොහෝ විට සරලම සම්පීඩන ඇල්ගොරිතම වේ, නමුත් එය ඇතැම් දත්ත වර්ග සඳහා ඉතා ඵලදායී වන අතර, zlib ට පෙර පෙර සැකසුම් පියවරක් ලෙස භාවිතා කළ හැක. බොහෝ යාබද මූලද්‍රව්‍ය පුනරාවර්තනය වන ටයිල් හෝ වොක්සෙල් වලින් සමන්විත භූමි සම්පීඩනය සඳහා එය විශේෂයෙන් සුදුසුය.

ඩෙල්ටා සම්පීඩනය

අවසාන සම්පීඩන තාක්ෂණය ඩෙල්ටා සම්පීඩනයයි. එය සමන්විත වන්නේ වත්මන් ක්‍රීඩා තත්ත්වය සහ සේවාදායකයාට ලැබුණු අවසාන තත්වය අතර ඇති වෙනස්කම් පමණක් සම්ප්‍රේෂණය වන බැවිනි.

එය මුලින්ම භාවිතා කරන ලද්දේ Quake3 ජාල එන්ජිමෙහිය. එය භාවිතා කරන ආකාරය විස්තර කරන ලිපි දෙකක් මෙන්න:

ග්ලෙන් ෆීඩ්ලර් ඔහුගේ ලිපියේ දෙවන කොටසේ ද එය භාවිතා කළේය Snapshot සම්පීඩනය.

ගුප්ත කේතනය

ඊට අමතරව, ඔබට සේවාදායකයන් සහ සේවාදායකය අතර තොරතුරු මාරු කිරීම සංකේතනය කිරීමට අවශ්‍ය විය හැකිය. මේ සඳහා හේතු කිහිපයක් තිබේ:

  • රහස්‍යභාවය/රහස්‍යභාවය: පණිවිඩ කියවිය හැක්කේ ලබන්නාට පමණක් වන අතර, ජාලය උදුරා ගන්නා වෙනත් කිසිඳු පුද්ගලයෙකුට ඒවා කියවිය නොහැක.
  • සත්‍යාපනය: ක්‍රීඩකයෙකුගේ භූමිකාව රඟ දැක්වීමට කැමති පුද්ගලයෙකු ඔහුගේ යතුර දැන සිටිය යුතුය.
  • වංචා වැලැක්වීම: අනිෂ්ට ක්‍රීඩකයින්ට ඔවුන්ගේම වංචාකාරී පැකේජ නිර්මාණය කිරීම වඩා දුෂ්කර වනු ඇත, ඔවුන්ට සංකේතාංකන ක්‍රමය ප්‍රතිනිෂ්පාදනය කිරීමට සහ යතුර සොයා ගැනීමට සිදුවනු ඇත (එය එක් එක් සම්බන්ධතාවය සමඟ වෙනස් වේ).

මේ සඳහා පුස්තකාලයක් භාවිතා කිරීමට මම තරයේ නිර්දේශ කරමි. භාවිතා කිරීමට මම යෝජනා කරමි ලිබ්සෝඩියම්, එය විශේෂයෙන් සරල සහ විශිෂ්ට නිබන්ධන ඇති නිසා. විශේෂයෙන් සිත්ගන්නා කරුණ නම් නිබන්ධනයයි යතුරු හුවමාරුව, එක් එක් නව සම්බන්ධතාවය සමඟ නව යතුරු උත්පාදනය කිරීමට ඔබට ඉඩ සලසයි.

යෙදුම් ප්රොටෝකෝලය: නිගමනය

මෙය අපගේ යෙදුම් ප්‍රොටෝකෝලය අවසන් කරයි. සම්පීඩනය සම්පූර්ණයෙන්ම විකල්ප බව මම විශ්වාස කරන අතර එය භාවිතා කිරීමේ තීරණය රඳා පවතින්නේ ක්රීඩාව සහ අවශ්ය කලාප පළල මත පමණි. සංකේතනය, මගේ මතය අනුව, අනිවාර්ය වේ, නමුත් පළමු මූලාකෘතිය තුළ ඔබට එය නොමැතිව කළ හැකිය.

යෙදුම් තර්කනය

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

එපමණක් නොව, රාජ්ය යාවත්කාලීන දෙකක් අතර, ලෝකය සම්පූර්ණයෙන්ම ස්ථිතික වේ. රාජ්ය යාවත්කාලීන අනුපාතය අඩු නම්, චලනයන් ඉතා ජර්කි වනු ඇත.

මෙම ගැටලුවේ බලපෑම අවම කිරීම සඳහා තාක්ෂණික ක්රම කිහිපයක් ඇත, මම ඒවා ඊළඟ කොටසෙහි ආවරණය කරමි.

Latency Smoothing Techniques

මෙම කොටසේ විස්තර කර ඇති සියලුම ශිල්පීය ක්‍රම මාලාවේ විස්තරාත්මකව සාකච්ඡා කෙරේ වේගවත් බහු ක්‍රීඩකයා ගේබ්‍රියෙල් ගම්බෙට්ටා. මෙම විශිෂ්ට ලිපි මාලාව කියවීමට මම තරයේ නිර්දේශ කරමි. මෙම ශිල්පීය ක්‍රම ප්‍රායෝගිකව ක්‍රියා කරන ආකාරය බැලීමට ඔබට ඉඩ සලසන අන්තර්ක්‍රියාකාරී ආදර්ශනයක් ද එයට ඇතුළත් වේ.

පළමු තාක්‍ෂණය නම් සේවාදායකයෙන් ප්‍රතිචාරයක් ලැබෙන තෙක් බලා නොසිට ආදාන ප්‍රතිඵලය කෙලින්ම යෙදීමයි. එය හැඳින්වේ සේවාලාභියාගේ පැත්තේ අනාවැකි. කෙසේ වෙතත්, සේවාදායකයාට සේවාදායකයෙන් යාවත්කාලීනයක් ලැබුණු විට, එය එහි අනාවැකිය නිවැරදි බව තහවුරු කළ යුතුය. මෙය එසේ නොවේ නම්, සේවාදායකයා ඒකාධිපති බැවින් ඔහුට සේවාදායකයෙන් ලැබුණු දේ අනුව ඔහුගේ තත්වය වෙනස් කිරීමට අවශ්‍ය වේ. මෙම තාක්ෂණය මුලින්ම භාවිතා කරන ලද්දේ භූමිකම්පාවේදීය. ලිපියෙන් ඔබට ඒ ගැන වැඩි විස්තර කියවිය හැකිය Quake Engine කේත සමාලෝචනය Fabien Sanglars [පරිවර්තනයයි Habré මත].

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

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

ග්ලෙන් ෆීඩ්ලර් (සෑම විටම මෙන්!) 2004 දී ලිපියක් ලිවීය ජාල භෞතික විද්‍යාව (2004), එහිදී ඔහු සේවාදායකය සහ සේවාලාභියා අතර භෞතික විද්‍යා සමාකරණ සමමුහුර්ත කිරීම සඳහා පදනම දැමීය. 2014 දී ඔහු නව ලිපි මාලාවක් ලිවීය ජාලකරණ භෞතික විද්යාව, භෞතික විද්‍යා සමාකරණ සමමුහුර්ත කිරීම සඳහා වෙනත් ශිල්පීය ක්‍රම විස්තර කරන ලදී.

Valve wiki හි ලිපි දෙකක් ද ඇත, මූලාශ්‍ර බහු ක්‍රීඩක ජාලකරණය и සේවාලාභියා/සේවාදායකය තුළ ප්‍රමාද වන්දි ක්‍රම ක්‍රීඩාව තුළ ප්‍රොටෝකෝලය සැලසුම් කිරීම සහ ප්‍රශස්තකරණය ප්රමාදයන් සඳහා වන්දි සලකා බලයි.

වංචා වැළැක්වීම

වංචා වැළැක්වීම සඳහා ප්රධාන තාක්ෂණික ක්රම දෙකක් තිබේ.

පළමුවැන්න: වංචාකරුවන්ට අනිෂ්ට පැකට් යැවීම වඩාත් අපහසු කරයි. ඉහත සඳහන් කළ පරිදි, මෙය ක්රියාත්මක කිරීමට හොඳ ක්රමයක් වන්නේ සංකේතාංකනයයි.

දෙවනුව: ඒකාධිපති සේවාදායකයකට ලැබිය යුත්තේ විධාන/ආදාන/ක්‍රියා පමණි. සේවාදායකයාට ආදානය යැවීමෙන් හැර සේවාදායකයේ තත්ත්වය වෙනස් කිරීමට නොහැකි විය යුතුය. ඉන්පසුව, සේවාදායකයට ආදානය ලැබෙන සෑම අවස්ථාවකම, එය භාවිතා කිරීමට පෙර එය වලංගු දැයි පරීක්ෂා කළ යුතුය.

යෙදුම් තර්කනය: නිගමනය

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

වෙනත් ප්රයෝජනවත් සම්පත්

ඔබ ජාල ආකෘතිවල වෙනත් සම්පත් ගවේෂණය කිරීමට කැමති නම්, ඔබට ඒවා මෙතැනින් සොයා ගත හැක:

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

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