مرجع اموزش بازی سازی با یونیتی 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 بازیکن تیر خورده کم کند , فرض کنید این داده ارسالی توسط سرور دریافت نشود این مورد نیاز به دقت دارد , برای همچین مواردی ما راه حل هایی داریم که در درس های اینده با آنها آشنا خواهید شد و فعلا خارج از بحث این درس می باشد.
برای مشاهده سایر آموزش ها به ادرس زیر مراجعه نمایید , با تشکر.
مطلبی دیگر از این انتشارات
معرفی بازی موبایل !Leap on
مطلبی دیگر از این انتشارات
آموزش تمام Skill Move های فیفا ۲۲
مطلبی دیگر از این انتشارات
تاثیرات بازی های رایانهای بر برنامه نویسی