1396/2/1، 12:53 عصر
سلام.
در سال های اخیر، بازی های آنلاین رشد خوبی داشته اند و مخصوصا زمانی که این مدل بازی به صورت همزمانی یا Realtime برگزار میشه ، حذابیت کار فوق العاده بالا میره.
به شخصه وقتی بازی کلش رویال رو بازی می کنم، علاوه بر جذابیت فوق العاده ی بازی برای من، به نوعی تمرین برای افزایش قدرت تصمیم گیری لحظه ای و در کنار اون استرس خاصی برام ایجاد میشه. این موضوع رو از دوستان دیگه ای که این بازی رو انجام میدن هم پرسیدم و نظرشون همینه.
خب با توجه به قدرت کانستراکت در بازی سازی آنلاین و چند نفره ، معمولا دیده شده دوستان به جای استفاده از پلاگین Multiplayer فقط به استفاده از سرور ( هاست ) برای برگزاری انلاین بازی بسنده می کنن.
یعنی در واقع، مثلا در بازی نبرد فرماندهان، استفاده ای از پلاگین مذکور نشده و فقط ارسال اطلاعات مربوط به هر بازیکن، بر روی سرور اتفاق می افته و در لحظه ی وارد شدن کاربر به بازی ، یه سری اطلاعات با استفاده از Ajax از سرور خونده میشه و روی بازی فعلی، پیاده میشه.
اینکار به اینصورت هست که شما مثلا در زمانی که نیستید، بهتون حمله میشه. خب شما اگه شکست بخورید، مقداری سکه ( مثلا 200 تا ) از دست می دید و اینطوری اگه شما از قبل 1000 تا سکه داشتید، حالا که بعد از اون شکستی که نبودید، وارد بازی می شید، باید مقدار سکه ی شما 800 تا باشه.
در بازی نبرد فرماندهان یا امثال اون، Clash of Clans , Boom Beach و ... دقیقا همین کار در حال انجام هست.
حالا اگه شما در بازی شبیه به نبرد فرماندهان ( آقای حیدرزاده ) بخواید نیروهاتون همزمان با شخص دیگری ، به جنگ بپردازند، باید از روش مولتی پلیر، استفاده کنید.
خود استفاده از این روش، داستان هایی داره، اما بهترین روش تمرین این پلاگین، استفاده از نمونه های آماده ی خود کانستراکت2 هست و نمونه ای که در اینجا مدنظر هست رو میتونین از قسمت جستجوی پروژه های نمونه در کانستراکت با جستجوی عبارت multiplayer - real-time game رو مورد آزمایش قرار بدید.
برای تست بازی باید حداقل دو Tab جدا در مرورگر باز کنین و پس از Login در بازی ( ثبت نام نمیخواد، فقط اسم لازمه ) اونو تست کنین.
اولین اشکالی که پیش میاد در مورد بازی های دو نفره هست. خب، برای اینکار می تونین روش اتصال به اتاق رو که در مثال هست، به روش زیر تغییر بدید:
خب، با این روش، بر خلاف روش اصلی این بازی نمونه، فقط دو نفر همزمان میتونن از بازی باشن، اولین نفر میشه HOST و دومین نفر میشه Peer
در اینجا، ممکنه یه مشکلی پیش بیاد و اون هم اینه که ، اگه کلش رویال رو بازی کرده باشین، میدونین که بازی باید تقریبا عادلانه باشه. یعنی اگه شما سطح تجربه تون 9 باشه، معمولا با افرادی نبرد رو انجام می دین که در همین سطح هستند.
البته غیر از این سطح بندی، کلش رویال به تعداد جام هایی که دارید هم نگاه می کنه و مثلا اگه شما سطحتون 9 باشه با 1989 تا جام، ممکنه حریفتون سطحش 8 باشه، اما تعداد جام های اون هم بین 1995 - 1975 باشه.
این تقریبا عادلانه است. ( البته با دقت و بازی بیشتر در کلش رویال، می تونین به این نتیجه برسید که چون تعداد کاربران بازی، بسیار زیاده، کلش رویال، حریف شما رو به نسبت کارت هایی که برای بازی انتخاب کردین، انتخاب میکنه و بازی بیشتر عادلانه میشه )
حالا چرا قضیه ی عادلانه بودن رو گفتم؟
به این خاطر که اگه شما بازی دو نفره بسازین، باید روشی باشه که بتونین عدالت رو برای نبرد دو نفره، برقرار کنین و نباید به صورتی باشه که یه کاربری با سطح مثلا 10 که درخواست نبرد میده، با کسی نبرد کنه که سطحش 2 هست. در اینصورت کاربر 10 معمولا همیشه برنده میشه و سطحش بالاتر میره، و اون کاربر ضعیف تر، ضعیفتر میشه ( چقدر این قضیه شبیه به پولدار ها و فقیرهاست ):
راه حل چیه؟
من یه مثال ساده میزنم و فکر میکنم مثال روشن باشه.
اساس اتصال به یک کاربر در بازی های مولتی پلیر ، اتصال به Room هست . در صورتی که شما حداکثر کاربران یک Room رو دو نفر قرار بدید، کاربر سومی امکان اتصال به اتاق فعلی رو نداره.
در نتیجه، نفر سوم خودش میشه Host و باید منتظر Peer باشه ( رجوع شود به آموزش های آقا مجتبی )
اگه شما در بازی Room رو با نام game انتخاب کنین، اولین روم ( اتاق ) که پر میشه، اتاق بعدی اسمش میشه Room2 و همینطوری ادامه پیدا میکنه.
مگه اینکه اتاقی خالی بشه که دوباره از اسم اون استفاده بشه.
از طرفی ، شما همیشه سطح کاربر رو دارید، خب بر اساس این سطح، میتونین بر اساس نام Room و سطح کاربر، این اتصال رو برقرار کنین.
یعنی مثلا شما کلا 10 تا کاربر دارین، که میشه 5 تا اتاق، اگه کاربراتون دو نفر ، دو نفر سطح های 2 - 4 - 6 - 8- 10 داشته باشن، کافیه که شما با تغییر نام Room به یک اسمی که قراره به کاربری که همون سطح رو داره و قراره Peer باشه، اتصال رو دو نفره و بر اساس سطح کنین.
برای تست این روش، 4 مرتبه نرم افزار کانستراکت2 رو باز کنین و توی هر 4 تا بازی نمونه ی فوق الذکر رو باز کنین.
همچنین، اسم بازی رو به یه اسم خاص تغییر بدید( برای جلوگیری از اتصال با سایر کاربرانی که در حال تست بازی هستن)
همونطور که در تصویر مشاهده میشه، دو تا نمونه ی بالای صفحه با ROOM_NAME با مقدار level5 هستند و دو تای پایین level10
البته من به صورت دستی وارد کردم، و در اصل شما باید از شرط هایی برای این قضیه استفاده کنین. البته این فقط برای تست هست و در واقع شما باید اینکار رو با استفاده از سرور انجام بدید. یعنی برنامه ای ، فرضا php بنویسین که کاربری که درخواست اتصال میده، رو توی خودش نگه داره و کاربر بعدی رو هم سطح اون هست، بهش متصل کنه.
ان شاء الله یا من ، یا دوستانی که تخصص دارن، این مورد رو تکمیل خواهیم کرد.
خب برای تست بازی هایی که باز کردین، دکمه ی F4 رو بزنین ( داخل نرم افزار ) ( اینکار باعث میشه اولین لایوت بازی که همون Login هست ، اجرا بشه )
و طبق تصویر زیر می بینین که کار به درستی انجام میشه.
امیدوارم مورد استفاده دوستان واقع بشه.
و من الله توفیق.
در سال های اخیر، بازی های آنلاین رشد خوبی داشته اند و مخصوصا زمانی که این مدل بازی به صورت همزمانی یا Realtime برگزار میشه ، حذابیت کار فوق العاده بالا میره.
به شخصه وقتی بازی کلش رویال رو بازی می کنم، علاوه بر جذابیت فوق العاده ی بازی برای من، به نوعی تمرین برای افزایش قدرت تصمیم گیری لحظه ای و در کنار اون استرس خاصی برام ایجاد میشه. این موضوع رو از دوستان دیگه ای که این بازی رو انجام میدن هم پرسیدم و نظرشون همینه.
خب با توجه به قدرت کانستراکت در بازی سازی آنلاین و چند نفره ، معمولا دیده شده دوستان به جای استفاده از پلاگین Multiplayer فقط به استفاده از سرور ( هاست ) برای برگزاری انلاین بازی بسنده می کنن.
یعنی در واقع، مثلا در بازی نبرد فرماندهان، استفاده ای از پلاگین مذکور نشده و فقط ارسال اطلاعات مربوط به هر بازیکن، بر روی سرور اتفاق می افته و در لحظه ی وارد شدن کاربر به بازی ، یه سری اطلاعات با استفاده از Ajax از سرور خونده میشه و روی بازی فعلی، پیاده میشه.
اینکار به اینصورت هست که شما مثلا در زمانی که نیستید، بهتون حمله میشه. خب شما اگه شکست بخورید، مقداری سکه ( مثلا 200 تا ) از دست می دید و اینطوری اگه شما از قبل 1000 تا سکه داشتید، حالا که بعد از اون شکستی که نبودید، وارد بازی می شید، باید مقدار سکه ی شما 800 تا باشه.
در بازی نبرد فرماندهان یا امثال اون، Clash of Clans , Boom Beach و ... دقیقا همین کار در حال انجام هست.
حالا اگه شما در بازی شبیه به نبرد فرماندهان ( آقای حیدرزاده ) بخواید نیروهاتون همزمان با شخص دیگری ، به جنگ بپردازند، باید از روش مولتی پلیر، استفاده کنید.
خود استفاده از این روش، داستان هایی داره، اما بهترین روش تمرین این پلاگین، استفاده از نمونه های آماده ی خود کانستراکت2 هست و نمونه ای که در اینجا مدنظر هست رو میتونین از قسمت جستجوی پروژه های نمونه در کانستراکت با جستجوی عبارت multiplayer - real-time game رو مورد آزمایش قرار بدید.
برای تست بازی باید حداقل دو Tab جدا در مرورگر باز کنین و پس از Login در بازی ( ثبت نام نمیخواد، فقط اسم لازمه ) اونو تست کنین.
اولین اشکالی که پیش میاد در مورد بازی های دو نفره هست. خب، برای اینکار می تونین روش اتصال به اتاق رو که در مثال هست، به روش زیر تغییر بدید:
خب، با این روش، بر خلاف روش اصلی این بازی نمونه، فقط دو نفر همزمان میتونن از بازی باشن، اولین نفر میشه HOST و دومین نفر میشه Peer
در اینجا، ممکنه یه مشکلی پیش بیاد و اون هم اینه که ، اگه کلش رویال رو بازی کرده باشین، میدونین که بازی باید تقریبا عادلانه باشه. یعنی اگه شما سطح تجربه تون 9 باشه، معمولا با افرادی نبرد رو انجام می دین که در همین سطح هستند.
البته غیر از این سطح بندی، کلش رویال به تعداد جام هایی که دارید هم نگاه می کنه و مثلا اگه شما سطحتون 9 باشه با 1989 تا جام، ممکنه حریفتون سطحش 8 باشه، اما تعداد جام های اون هم بین 1995 - 1975 باشه.
این تقریبا عادلانه است. ( البته با دقت و بازی بیشتر در کلش رویال، می تونین به این نتیجه برسید که چون تعداد کاربران بازی، بسیار زیاده، کلش رویال، حریف شما رو به نسبت کارت هایی که برای بازی انتخاب کردین، انتخاب میکنه و بازی بیشتر عادلانه میشه )
حالا چرا قضیه ی عادلانه بودن رو گفتم؟
به این خاطر که اگه شما بازی دو نفره بسازین، باید روشی باشه که بتونین عدالت رو برای نبرد دو نفره، برقرار کنین و نباید به صورتی باشه که یه کاربری با سطح مثلا 10 که درخواست نبرد میده، با کسی نبرد کنه که سطحش 2 هست. در اینصورت کاربر 10 معمولا همیشه برنده میشه و سطحش بالاتر میره، و اون کاربر ضعیف تر، ضعیفتر میشه ( چقدر این قضیه شبیه به پولدار ها و فقیرهاست ):
راه حل چیه؟
من یه مثال ساده میزنم و فکر میکنم مثال روشن باشه.
اساس اتصال به یک کاربر در بازی های مولتی پلیر ، اتصال به Room هست . در صورتی که شما حداکثر کاربران یک Room رو دو نفر قرار بدید، کاربر سومی امکان اتصال به اتاق فعلی رو نداره.
در نتیجه، نفر سوم خودش میشه Host و باید منتظر Peer باشه ( رجوع شود به آموزش های آقا مجتبی )
اگه شما در بازی Room رو با نام game انتخاب کنین، اولین روم ( اتاق ) که پر میشه، اتاق بعدی اسمش میشه Room2 و همینطوری ادامه پیدا میکنه.
مگه اینکه اتاقی خالی بشه که دوباره از اسم اون استفاده بشه.
از طرفی ، شما همیشه سطح کاربر رو دارید، خب بر اساس این سطح، میتونین بر اساس نام Room و سطح کاربر، این اتصال رو برقرار کنین.
یعنی مثلا شما کلا 10 تا کاربر دارین، که میشه 5 تا اتاق، اگه کاربراتون دو نفر ، دو نفر سطح های 2 - 4 - 6 - 8- 10 داشته باشن، کافیه که شما با تغییر نام Room به یک اسمی که قراره به کاربری که همون سطح رو داره و قراره Peer باشه، اتصال رو دو نفره و بر اساس سطح کنین.
برای تست این روش، 4 مرتبه نرم افزار کانستراکت2 رو باز کنین و توی هر 4 تا بازی نمونه ی فوق الذکر رو باز کنین.
همچنین، اسم بازی رو به یه اسم خاص تغییر بدید( برای جلوگیری از اتصال با سایر کاربرانی که در حال تست بازی هستن)
همونطور که در تصویر مشاهده میشه، دو تا نمونه ی بالای صفحه با ROOM_NAME با مقدار level5 هستند و دو تای پایین level10
البته من به صورت دستی وارد کردم، و در اصل شما باید از شرط هایی برای این قضیه استفاده کنین. البته این فقط برای تست هست و در واقع شما باید اینکار رو با استفاده از سرور انجام بدید. یعنی برنامه ای ، فرضا php بنویسین که کاربری که درخواست اتصال میده، رو توی خودش نگه داره و کاربر بعدی رو هم سطح اون هست، بهش متصل کنه.
ان شاء الله یا من ، یا دوستانی که تخصص دارن، این مورد رو تکمیل خواهیم کرد.
خب برای تست بازی هایی که باز کردین، دکمه ی F4 رو بزنین ( داخل نرم افزار ) ( اینکار باعث میشه اولین لایوت بازی که همون Login هست ، اجرا بشه )
و طبق تصویر زیر می بینین که کار به درستی انجام میشه.
امیدوارم مورد استفاده دوستان واقع بشه.
و من الله توفیق.