سرور بازی آنلاین
#1
سلام
کسانی که قبلا بازی آنلاین ساختن و خودشون سرور داشتن سوالی ازشون دارم. یه سرور مجازی لینوکس دوهسته ای با 2 گیگ رم برای چندبازی همزمان مناسبه؟ بازی من دونفره هست و بطور متوسط هر کلاینت در هر ثانیه 4 پیام به سرور ارسال میکنه حجم هر پیام هم خیلی کمه حدود 20 بایت.   
  پاسخ


 سپاس شده توسط:
#2
برای حدود 40 تا 50 نفر آنلاین همزمان بسه .
البته این موضوع زیاد مهم نیست ؛ وقتی بازی منتشر بشه ، مثلا تعداد کاربران بازی به 1000 نفر برسه اونوقت تازه ی مقداری از سی پی یو میره رو فشار .
اما همین مقدار بسه فعلا .

من رم 8 با سی پی یو 4 خریداری کرده بودم ، حدودا 9000 کاربر فعال داشتم و مشکلی نداشتم .
البته این موضوع هم باید در نظر بگیریم که 9000 نفر هیچ وقت همزمان نیستن و بیشترین تعداد نفرات آنلاین 450 نفر بود که باز از این 450 نفر حالا در برنامه بنده به طور متوسط هر 30 ثانیه بروز رسانی ها انجام میشد نکته ای که من روی کد نویسی های سمت سرورم رعایت کرده بودم این بود که وقتی یک نفر ( از همه اون نفرات ) بعد از 30 ثانیه اطلاعاتش رو بروز رسانی میکرد ، اطلاعات کل سرور آپدیت میشد . به این صورت اون افرادی که مثلا میخوان چند صدم ثانیه یا چند ثانیه دیگه بروز رسانی کنند اطلاعاتشونو دیگه منابع زیادی از سرور ما اشغال نمیکنند و فقط اطلاعات خودشونو دریافت میکنند و خداحافظ ...

من حتی برای سیگنالینگ سیرا رو هم به همین صورت انجام دادم داخل بازیم ، درسته که کاربر هر ثانیه باید اطلاعات مثلا مختصات کاربر دیگه رو دریافت کنه ، اما احتیاجی نیست هر ثانیه هم اطلاعات امتیاز و مثلا تیز و اطلاعات غیره دیگه رو هم دریافت کنه ، پس من میومدم یا اینارو کلا از بازی حذف میکردم ، یا میومدم به این صورت در میاوردم که اگر تغییر جدی روی این متغیر ها انجام شد بروز بشن ، یا هر 10 ثانیه و ...

خیلی راه های طولانی و زیادی برای جلوگیری از مصرف بیهوده اطلاعات و اشغال منابع وجود داره .

موفق باشید /
  پاسخ


 سپاس شده توسط: hamedbz
#3
بازی شما هر 30 ثانیه بروزرسانی میشد؟ مگه ریل تایم نبوده؟
  پاسخ


 سپاس شده توسط:
#4
(1397/10/1، 09:18 عصر)hamedbz نوشته است: بازی شما هر 30 ثانیه بروزرسانی میشد؟ مگه ریل تایم نبوده؟

شما منظور من رو نفهمیدید ...

من توی مورد اول منظورم بروز رسانی بازی بود نه در هنگام بازی .

در مورد ریل تایم هم بهتون گفتم ، چیز های مهمی مثل دریافت مختصات بازیکن و این چیزایی که واقعا واجب هست رو توی دور اول دریافت میکردم و چیز هایی که مهم نبودند رو دریافت نمیکردم .
شما میگی حجم ناچیز 20 بایت یا هر چیز دیگه ای ...

بحث ما اینجا حجم نیست ، شما ببین اول میتونه سرورت اصلا 1000 تا درخواست همزمان رو بگیره بعد بیا درباره حجم بحث کن .
اگر شما بیای 20 تا چیز و بخوای ریل تایم آپدیت کنی ؛ 25 تا حمله همزمان داشته باشی میشه 1000 درخواست همزمان 22
یعنی شما 50 تا بازیکنت آنلاین باشه و بخوان با هم نبرد انجام بدن شما سرورت پر میشه ؛ حالا اگر هر اتک به طور متوسط 3 دقیقه باشه یعنی باید کاربران اگر بیشتر از 50 تا بودن وایسن تا سرور شما خلوت بشه .
////
مثال دقیق حرفی که میخوام بزنم میدونید چیه ؟ این کلش های مود یا هک شده رو دیدید که نصب میکنید 999999 جم دارن و ...
شما اگر توجه کرده باشید تو این نسخه های مود شده ی زمانی شما نمیتونید وارد سرور بشید که این موضوع دقیقا همون چیزی هست که ما بهش میگیم مشکل درخواست همزمان .
////
خب در ادامه صحبت های بالای بنده اگر شما بیای از چیز های غیر مهم بزنی تعداد درخواست ها کمتر میشه و اینطوری حجم اون 20 بایت هم کمتر میشه / اگر تعداد این ها کمتر بشه مثلا بشه 10 درخواست همزمان اونوقت به جای 50 بازیکن میتونید 100 بازیکن رو پشتیبانی کنید / تعداد بازیکن های پشتیبانی شده رو شما نمیتونی اینطوری بفهمی که الان من سرور بخرم با سی پی یو 2 چند بازیکن دقیقا میتونن توش بازی کنند ، چون باید اول بازی شما تموم بشه ببینیم هر بازیکن به طور متوسط چقدر فشار میاره رو سی پی یو .

شما برای اینکه بفهمی چقدر منابع احتیاج داری باید در مقیاس های کمتر محاسبه رو انجام بدی ، مثلا به جای 100 بازیکن ، با 10 بازیکن تست میکنید . میبینید سی پی یو روش 8 درصد فشار میاد . خب حالا پس شما میتونی اینطوری بگی که اگر 100 بازیکن بیاد بین 80 تا 90 درصد منابع شما اشغال میشه . منم دقیقا همین کار رو کردم اصلا چیز تخصصی لازم نبود !

موفق باشید /
  پاسخ


 سپاس شده توسط: shazde ، hamedbz ، ᔕinaᗪehghani
#5
آقا قربانت، چقدر مفصل توضیح دادین. یه سوال دیگه ای که داشتم: بازی من جوریه که بجای اینکه در هر ثانیه 5 بار دیتا بفرستم می تونم در هر ثانیه یکبار بفرستم یعنی جمع کنم و با هم بفرستمشون که البته حجم دیتا 5 برابر بیشتر میشه. با توجه به توضیحات شما فکر کنم یکجا بفرستم بهتره، درسته؟
راستی درحال حاضر بازی آنلاین منتشر شده دارید؟ اگه دارید لینکش بفرستید ببینیم. 39

  پاسخ


 سپاس شده توسط:
#6
(1397/10/2، 03:01 صبح)hamedbz نوشته است: آقا قربانت، چقدر مفصل توضیح دادین. یه سوال دیگه ای که داشتم: بازی من جوریه که بجای اینکه در هر ثانیه 5 بار دیتا بفرستم می تونم در هر ثانیه یکبار بفرستم یعنی جمع کنم و با هم بفرستمشون که البته حجم دیتا 5 برابر بیشتر میشه. با توجه به توضیحات شما فکر کنم یکجا بفرستم بهتره، درسته؟
راستی درحال حاضر بازی آنلاین منتشر شده دارید؟ اگه دارید لینکش بفرستید ببینیم. 39

همه اطلاعات ارسالی یکی هست ، چطوری با خودتون حساب کردید که اگر یکجا بفرستید حجمش زیاد میشه ؟

بلعکس درستش اینه که به جای اینکه 5 بار بفرستید ، یک بار هر 5 تارو آپدیت کنید . مگه قبلا چیکار میکردید ؟  17
صد درصد از اول باید یکجا میفرستادید ، حجم اطلاعات تفاوتی نمیکنه .

من بازی منتشر شده در حال حاضر ندارم ، چند سالی هست فقط اپ مینویسم و منتشر میکنم / درباره بازی هم چون قبلا یک بازی آنلاین منتشر کردم و 2 . 3 تا پروژه دیگه هم انجام دادم و در حال حاضرم دارم روی یک پروژه بزرگ کار میکنم اطلاعاتم تقریبا زیاد هست.
البته مطمئنا بعد از پایان این پروژه تجربیات من صد برابر خواهد شد ، همیشه تجربه با آزمون و خطا به دست میاد  15

موفق باشید .
  پاسخ


 سپاس شده توسط: shazde
#7
ممنون از توضیحاتتون
امیدوارم پروژه ای که روش کار می کنید به موفقیت برسه.
  پاسخ


 سپاس شده توسط: shazde ، hasansanaei ، ᔕinaᗪehghani


موضوع‌های مشابه…
موضوع نویسنده پاسخ بازدید آخرین ارسال
  وینوس - خروجی آفلاین اندروید miladesign 476 263,593 1403/10/23، 02:18 عصر
آخرین ارسال: Tggi
Wink سوال در مورد تبلیغ بازی در تپسل _1515Team_ 2 1,966 1403/10/22، 08:05 عصر
آخرین ارسال: Tggi
  انتخاب رشته کامپیوتر M.Y 5 3,276 1401/4/11، 06:21 عصر
آخرین ارسال: M.Y
  خرید سورس بازی های شما Hamed85 4 2,773 1401/1/31، 11:02 صبح
آخرین ارسال: Hamed85
  فروش سورس شبه بازی ۴۱۱۴۸ امیرعلی فیروزبخش 0 1,665 1400/11/18، 09:09 عصر
آخرین ارسال: امیرعلی فیروزبخش

پرش به انجمن: