حداکثر تعداد پلیرهای همزمان در بازی
فهرست مطالب
در این مقاله ی کوتاه و فنی قصد پرداختن به موضوعی را داریم که دغدغه و سوال بسیاری از توسعه دهندگان است.
ماکسیمم تعداد پلیر همزمان در بازی های MMO ؟؟
قطعا تا به حال نمونه بازی های MMO (مولتی پلیر آنلاین انبوه) زیادی را دیده اید؛ یا بازی های بتل رویال،FPS (شوتر اول شخص) و به طور کلی بازی هایی که به صورت همزمان و ریل تایم تعداد پلیرهای زیادی را وارد یک مپ می کنند.
حال سوال اینجاست که ما در این بازی ها حداکثر چه میزان پلیری را می توانیم به صورت همزمان داشته باشیم؟
یا شاید اگر بخواهیم دقیق تر این سوال را مطرح کنیم، باید پرسید ماکسیمم تعداد پلیرهای همزمان به چه عواملی بستگی دارد.
اگر شما هم منتظر پاسخ هستید؛ پس تا پایان مقاله همراه ما باشید.
تعداد پلیرهای همزمان در بازی به چه عواملی بستگی دارد
قطعا اولین و مهم تیتر ما دقیقا بررسی همین موضوع است که چه عواملی در این تعداد حداکثری تاثیر گذار است.
سرور
بدون شک اولین و مهم ترین عاملی که تعیین کننده ی حداکثر تعداد پلیرهای همزمان یا همان ICU در بازی شما هست؛ مربوط به سرور می شود.
انواع مختلف سرور وجود دارد با قدرت های سخت افزاری متفاوت از سرورهای اشتراکی و ابری تا سرورهای مجازی و اختصاصی.
سرورهایی که داخل کشور هستند و یا سرورهایی که در خارج از کشور قرار دارند.
و سخت افزار آن ها از حداقل ۲ هسته تا بالای ۱۰ هسته به همراه سایر مشخصات مانند رم، حافظه و …
حال با توجه به پتانسیل بازی، عواملی که در ادامه گفته می شود و تعداد کاربر همزمانی که می گیرد، سرور مورد نظر باید انتخاب شود.
اما دانستن چندین نکته در اینجا ضروری است:
۱- بازی های بزرگ با تعداد کاربران همزمان بالای ۱۰۰ نفر از سرورهای اختصاصی استفاده می کنند.
۲- زمانی که بحث بازی های بتل رویال، MMO و شوتر به میان می آید که به صورت کامل ریل تایم بوده و پینگ آن ها باید در حد صدم ثانیه باشد؛ در صورتیکه بازی دارای پلیرهای بالای ۳۰ نفر به صورت همزمان باشد؛ سرورهای داخل کشور پاسخگو نبوده و باید اقدام به تهیه ی سرورهای خارجی کرد.
۳- مشخصا هر چه میزان تعداد پلیرهای همزمان یک بازی بالاتر برود در نتیجه هزینه های سرور نیز بیشتر خواهد شد.
(اگر در این قسمت دنبال یک سری اعداد دقیق می گردید؛ مانند مشخصات دقیق سرور، هزینه ها و … سخت در اشتباهید؛ زیراکه در ادامه موارد دیگری را معرفی خواهیم کرد؛ که به طور مستقیم بر انتخاب نوع سرور و هزینه های شما تاثیر گذار است؛ و به نحوی توسعه دهندگان سمت سرور هر بازی تنها افرادی هستند که می توانند به صورت «حدودی» این اعداد و ارقام را ارائه دهند.
حال چرا می گوییم «حدودی»، به این علت که انتخاب سرور در برخی مواقع نیازمند آزمون و خطا می باشد و با آزمون و خطا، مشخصات دقیق آن براورد می شود؛ که خوشبختانه این مورد مشکلاتی را ایجاد نمی کند زیراکه به راحتی می توان سرور را ارتقا داد.)
برنامه نویسی سمت سرور
دومین مورد مهم و تعیین کننده در تعداد پلیرهای همزمان بازی، مربوط به برنامه نویسی سمت سرور می شود.
سمت سرور یک بازی را به روش های بسیاری می توان پیکربندی کرد.
روش هایی مانند استفاده از سرویس های آماده مانند فوتون یا فایربیس (که البته متاسفانه هر دوی آن ها فیلتر هستند) تا کد نویسی اختصاصی با node.js، asp.net، پایتون و …
در ابتدای کار باید این موضوع توسط توسعه دهندگان بررسی شود که بازی قرار است به چه میزان نصب برسد و در نهایت تکنولوژی پیاده سازی سمت سرور آن مشخص شود.
زیراکه هر یک از این روش ها به خصوص استفاده از سرویس های آماده، محدودیت ها و مزایای خاص خود را دارند که وابسته به نوع بازی، نوع سیستم مولتی پلیر و تعداد کاربران آن انتخاب می شوند.
سیستم مولتی پلیر
اگر از مقاله ی «انواع حالت های مولتی پلیر بازی» دیدن کرده باشید؛ متوجه خواهید شد که بازی ها معماری های متنوعی را برای سمت مولتی پلیر خود دارند.
اما در این مقاله منظور ما بازی هایی آنلاین ریل تایم می باشد که در لحظه باید تعاملات پلیرها با یکدیگر را ثبت کند.
همین آنلاین ریل تایم بودن بازی نیز، دارای نرخ ها و پینگ های متفاوتی است.
به عنوان مثال یک بازی شوتر بتل رویال ریل تایم نیازمند پینگ خیلی پایین تری نسبت به یک بازی ریسینگ ریل تایم است.
به همین خاطر نوع بازی و نوع سیستم مولتی پلیر آن نیز بسیار مهم است.
منابع درگیر کننده
هر بازی دارای یک حجم و سناریویی می باشد.
هر بازی دارای یک سری تعاملاتی در لحظه است.
یک بازی در لحظه دارای ۱۰.۰۰۰ تعامل می باشد؛ یک بازی در لحظه دارای ۵۰.۰۰۰ تعامل.
در واقع این تعاملات هر چه بیشتر باشد؛ حجم پردازش سمت سرور را نیز سنگین تر خواهد کرد.
این تعاملات در عملکردهایی است که بازی در گیم پلی خود به پلیر می دهد و حتی گرافیک بازی و حجم آن نیز در این پردازش ها بسیار تاثیر گذار است.
به همین خاطر حجم تعاملات در لحظه، مورد بسیار مهم دیگری است که در انتخاب نوع سرور و حداکثر میزان پلیر در لحظه ی بازی تاثیر گذار است.
دیوایز
حجم منابع درگیر کننده تنها فشار را بر روی سرور ننداخته و به شکل قابل توجهی بر روی دیوایز نیز تاثیر گذار است.
به همین علت است که بازی های بزرگی مانند Red Dead Redemption یا GTA، بالدرز گیت، سایبرپانک و … با تعداد کاربرای همزمان بسیار بالا نمی توانند بر روی موبایل انتشار داده شوند.
زیراکه این بازی ها منابع سخت افزاری بسیاری را درگیر کرده و برای دیوایزهای قدرتمند ساخته شده اند.
به همین علت می توان گفت قطعا بازی های کنسول و پی سی از بازی های موبایلی توانایی پردازش بسیار بالاتری را برای کاربران همزمان دارند.
(در نهایت می توان گفت مشخص شدن این تعداد به مقدار بسیاری به بهینه سازی بازی بستگی دارد (بهینه سازی در کد و سمت آرت) و همچنین انتخاب بین بهترین موتورهای بازی سازی مانند یونیتی یا آنریل تاثیری را در این موضوع دارد.)
Room
قبل از پرداختن به مفهوم Room این نکته را مجددا تکرار می کنیم که در نظر داشته باشید مواردی که در حال گفتن آن هستیم مربوط به بازی های آنلاین ریل تایم در سبک های بتل رویال، شوتر و هر نوع بازی با تعاملات بالا و پینگ پایین است؛ در غیر اینصورت اگر صرفا مفهوم تعداد کاربر همزمان یا ICU را در نظر داشته باشیم؛ کار خیلی راحت تر است و به عنوان مثال یک بازی تخته نرد آنلاین به راحتی و با سرورهای داخلی می تواند تا ۱۰۰۰ کاربر آنلاین همزمان را نیز ساپورت کند و حتی بیشتر.
و اما مفهوم Room.
اجازه بدهید روم را با یک مثال به صورت بهتری توضیح دهیم.
یک بازی مانند فورتنایت را در نظر داشته باشید؛ یک بازی بتل رویال شوتر.
در این بازی، مپ ها و مود های مختلفی وجود دارد؛ اما به صورت همزمان این بازی اجازه ی تعامل حدود ۱۰۰ پلیر را می دهد.
این به این معناست که ممکن است در لحظه این بازی دارای کاربران آنلاین بالای ۱۰.۰۰۰ تا باشد؛ اما برای پردازش سرور؛ بازی اجازه ی تعداد کاربر همزمان بیشتر از ۱۰۰ نفر را در هر مپ نمی دهد.
اشتباه نکنید، این به این معنا نیست که در هر مپ تنها صد پلیر به صورت همزمان می توانند بازی کنند؛ در واقع سیستم سمت سرور به اینصورت است که زمانیکه پلیر ۱۰۱ امی قصد ورود به مپ را داشت؛ به اصطلاح یک Room جدید ساخته شده و با پلیرهای دیگر وارد همان مپ اما در یک Room جدید خواهند شد؛ که پردازش سرور را راحت تر کند.
تقریبا اکثریت بازی ها، منابع سمت سرور خود را به همین شکل مدیریت خواهند کرد.
(به طور کلی از تعداد پلیرهای همزمان فورتنایت در یک روم می توان این نتیجه را گرفت که حداکثر میزان پلیر همزمان در یک مپ از یک بازی شوتر برای موبایل تا حداکثر ۱۰۰ نفر عدد مناسبی است؛ که البته همین عدد برای سرورهای داخلی غیر ممکن بوده و نیازمند سرورهای خارجی و هزینه های قابل توجهی است.)
آماری تقریبی
طبق بررسی ها و نقل قول هایی از کامنیوتی یونیتی آمار و اعداد جالبی را بدست آورده ایم که در ادامه با شما به اشتراک می گذاریم.
«صحبت ما در رابطه با تعداد اشیایی است که هر کلاینت می تواند ببینید یا درباره آنها بدانید؛ است.
آیا همه بازیکنان دیگر روی صفحه قابل مشاهده هستند یا در فواصل بسیار زیاد یا در “روم” های مختلف پخش شده اند؟
طبق تجربه ی کاربران هر کلاینت در هر روم می تواند تا ماکسیمم با ۱۰۰ بازیکن دیگر تعامل داشته باشد.
اما سرور شما همچنان باید همه ی روم ها را ردیابی کند.
تعداد سوکتهای روی یک سرور معمولاً در یک دستگاه لینوکس، فقط پورتهای 32000 است، اما تا 65000 تقریباً در دسترس هستند و هر بار که از یک اتصال استفاده میشود، نمیتوان آن را دوباره برای 1 یا 2 دقیقه (قابل تنظیم) استفاده کرد.
بنابراین به صورت پیشفرض میتوانید تضمین کنید که 533 سوکت در هر زمان در صورت اتصال/قطع مکرر در دسترس خواهند بود.
بنابراین اگر از یک تبدیل واحد برای هر بازیکن و فیزیک سمت سرور استفاده می کنید، می توان گفت هر سرور می تواند تا ۲۰۰ الی ۳۰۰ بازیکن به صورت همزمان در «تمامی روم ها» را پشتیبانی کند. (البته بازهم این عدد حدودی بوده و کاملا وابسته به موارد است که در ابتدای مقاله به آن اشاره شد؛ به عنوان مثال طبق منابع دیگر این عدد تا ۱۱۰۰ پلیر نیز برای تمامی روم ها نیز گفته شده است.)
اما با استفاده از شبکه یونیتی میتوانید اتاقها یا گروههای متعددی داشته باشید تا هر بازیکن نیازی به دانستن اطلاعاتی از هر بازیکن دیگری نداشته باشد و حتی میتوانید افراد را بین سرورها جابهجا کنید، بنابراین باید میزبانی بازی شما در چندین سرور پارتیشن بندی شود.
NPC ها و وجود بات
شاید برایتان سوال باشد اگر فرض را بر این بگذاریم که در هر روم در ماکسیمم حالت ۱۰۰ پلیر را می توان داشت، پس چگونه در بازی های MMO مانند فورتنایت، پابجی، اورواچ و … به ظاهر شاهد پلیر های بسیار بیشتری هستیم.
پاسخ این سوال در دو دلیل خلاصه می شود:
۱- جایگذین شدن پلیرها
زمانیکه شما در حال بازی کردن هستید، در هر لحظه ممکن است پلیری از بازی خارج شده و پلیر دیگری به بازی وارد شود و جایگذین آن شود تا روم را پر کند.
زمانیکه این پروسه دائم در حال تکرار باشد؛ شما به عنوان پلیر تصویر می کنید که در این مپ تعداد پلیرهای زیادی وجود دارد؛ در صورتیکه در سمت بک اند صرفا پروسه ی جایگذینی در حال رخ دادن است.
۲- وجود بات و NPC
اگر به جای یک پلیر از یک بات یا NPC استفاده شد؛ این موضوع باعث می شود که به مراتب منابع کمتری از سرور درگیر شود؛ به همین خاطر بسیاری از بازی ها از این بات ها در روم های خود استفاده می کنند، بدون اینکه پلیرها متوجه آن شوند. (البته پلیرهای حرفه ای قطعا متوجه خواهند شد 🙂 )
مهرشاد شادان مهر
مدرس سئو، طراح سایت، انیماتور، سناریو نویس بازی
درد انضباط یا حسرت ؟؟
برو سراغ انضباط چون درد حسرت انباشته می شود.