مرجع اموزش بازی سازی با یونیتی https://rosedev.ir
دوره ساخت بازی آنلاین ( فصل یک - درس دو ) TCP vs UDP
تفاوت TCP و UDP
TCP : این دو پروتکل برای ارسال و دریافت انواع داده استفاده می شوند کامپیوتر های متصل به اینترنت , برای ارسال و دریافت داده از TCP استفاده میکنند همچنین پروتکل TCP قابل اتکا بوده به نوعی که گفته میشود هیچ موقع بسته ای موقع ارسال و دریافت گم نمیشود ( از دست نمی رود ) . در موقع ارسال داده از کامپیوتر 1 به کامپیوتر 2 این دو دستگاه ابتدا با هم اتصال پیدا می کنند و سپس داده ها ارسال و دریافت میشود , این نوع ارسال دریافت بسیار مطمئنتر از روش UDP است.
با اینحال فشار زیادی به سیستم وارد میکند چون هر دو سیستم باید داده های ارسالی را مرتب چک کنند و اگر داده ای به مقصد نرسیده بود دوباره ارسال می شود , همین امر باعث کندی این روش نسبت به UDP میشود.
نرم افزار های پیام رسان یک نمونه عالی برای توضیح کارکرد این روش هستند.
UDP : برعکس پروتکل TCP این پروتکل داده های ارسالی را ردیابی نمیکند و این کار باعث میشود تا حدودی احتمال از دست دادن داده موقع ارسال و دریافت اطلاعات بین دو کامپیوتر وجود داشته باشد , اما همین امر باعث سبک تر و تا چندین برابر سریعتر بودن این روش نسبت به TCP میشود.
همچنین سایز بسته های ( بافرها ) ارسالی با UDP کوچکتر از TCP است , معمولا سرور بازی ها را از نوع UDP انتخاب میکنند به چند دلیل :
- UDP بسیار سریعتر است
- هزینه های سرور را در بلند مدت مخصوصا در صورتی که تعداد کاربران زیاد باشند بسیار کاهش میدهد.
- درصد از دست دادن اطلاعات خیلی کم بوده و با ترفندهایی کاملا قابل حل می باشد.
چه موقع داده های ارسالی از دست میروند ؟
اگر کامپیوتر ارسال کننده و کامپیوتر دریافت کننده در شرایط عادی باشند , هیچ داده ای از دست نمی رود . شرایط از دست دادن داده رو پایین تر توضیح میدم خدمتتون :
- اگر به هر دلیلی کامپیوتر دریافت کننده قابلیت پردازش اطلاعات دریافت شده رو نداشته باشد ( رم پر , cpu ضعیف , کدنویسی درهم و نامرتب , بهینه نبودن داده و ... )
- اتصال ضعیف و دارای قطع و وصلی
- اشتباهات رایج کدنویسی ( شاید بگید که برای من شامل نمیشه ولی اتفاقا برای همه شامل میشه )
گم شدن یا از دست دادن داده های ارسالی چه موقع مهم است و چه موقع مهم نیست ؟
فرض کنید میخواهیم حرکت یک گیم آبجکت را از راست به چپ برای تمام کاربرهای آنلاین نمایش دهیم ما هر 0.5 ثانیه یکبار transform این ابجکت را برای همه ی کاربرها ارسال میکنیم حالا اگر از 100 بسته ارسالی 90 تا دریافت شود و 10 بسته تحویل گرفته نشود مشکل خاصی ایجاد نمی کند , این دقیقا زمانیست که از دست دادن داده های ارسالی برای ما مهم نیست ,
حالا فرض کنید که یک پلیر گلوله ای شلیک کرده و آن به بازیکن حریف برخورد کرده است حال ما یک داده برای سرور ارسال میکنیم که مثلا مقدار 10 واحد از hp بازیکن تیر خورده کم کند , فرض کنید این داده ارسالی توسط سرور دریافت نشود این مورد نیاز به دقت دارد , برای همچین مواردی ما راه حل هایی داریم که در درس های اینده با آنها آشنا خواهید شد و فعلا خارج از بحث این درس می باشد.
برای مشاهده سایر آموزش ها به ادرس زیر مراجعه نمایید , با تشکر.
مطلبی دیگر از این انتشارات
علت برتری کالاف دیوتی موبایل بر سایر بازی های آنلاین
مطلبی دیگر از این انتشارات
مافیای دامنههای آی آر
مطلبی دیگر از این انتشارات
5 بازی ابرقهرمانی برتر دی سی و مارول