خلاصه بازیهای آنلاین چندنفره با پشتیبانی از تعداد کاربران بالا باید مکانیسمهایی را برای پشتیبانی از تعداد فزاینده بازیکنان با استفاده از منابع اضافی فراهم کنند. این مقاله تجزیه و تحلیل جامعی از مکانیسمهای توزیع چند سرور عملاً اثباتشده، منطقهبندی، نمونهسازی، و تکثیر و وظایف توسعهدهنده بازی ارائه میدهد. ما یک رویکرد توسعه جدید و سطح بالا را پیشنهاد می کنیم که سه مکانیسم توزیع را به طور یکپارچه در بازی های آنلاین امروزی ادغام می کند. به عنوان پایه احتمالی برای این رویکرد سطح بالا، ما سیستم میانافزاری چارچوب بلادرنگ (RTF) را توصیف میکنیم که توسعهدهنده را از وظایف سطح پایین آزاد میکند و به او اجازه میدهد در سطح بالایی از انتزاع طراحی باقی بماند. ما توضیح می دهیم که چگونه RTF از اجرای بازی های آنلاین تک سرور پشتیبانی می کند و چگونه RTF اجازه می دهد تا سه مکانیسم توزیع چند سرور را در طول فرآیند توسعه ترکیب کند. در نهایت، به طور خلاصه توضیح میدهیم که چگونه RTF قابلیت مدیریت و نگهداری را برای بازیهای آنلاین در یک زمینه شبکه با سناریوهای تخصیص منابع پویا فراهم میکند. توسعه بازیهای آنلاین چندنفره در مقیاس بزرگ (MMOGs) در مقایسه با توسعه بازیهای آنلاین معمولی برای تعداد کاربران کوچک بسیار پیچیدهتر است. از آنجایی که یک طراحی سرور گیمینگ منفرد قادر به ارائه تعداد بالای کاربران و پردازش بازی مربوط به MMOG های معاصر نیست، طراحی چند سرور اجباری می شود. این منجر به تعدادی از مسائل طراحی جدید و پیچیده می شود، از جمله ارتباطات چند سرور کارآمد، مهاجرت شی بین سرورها، مدیریت اتصال مشتری توزیع شده، همگام سازی داده ها در سرورها، تعادل بار، مشکلات تاخیر و موارد دیگر. پرداختن صحیح به این جنبه ها در فرآیند توسعه بازی نیاز به تخصص داخلی بالایی دارد و از برنامه نویسی و ابزارهای شبکه سطح پایین استفاده می کند که باعث می شود وقت گیر، مخاطره آمیز و اغلب پرهزینه باشد. این مقاله ابتدا ساختار اساسی بازیهای آنلاین امروزی را تجزیه و تحلیل میکند و طبقهبندی رویکردهای توسعه کنونی را توسعه میدهد. بر اساس این تحلیل، ما سپس یک رویکرد توسعه جدید و سطح بالا را توصیف میکنیم که هدف آن سادهسازی فرآیند توسعه و بهبود بهرهوری آن در عین حفظ سطح بالایی از انعطافپذیری برای توسعهدهنده است. رویکرد ما با طیف وسیعی از بازیهای آنلاین مناسب است: از بازیهای سنتی تک سرور گرفته تا MMOGهای چند سروری، با امکان ارتقای طراحی تک سرور تا یک بازی چند سروری و چند نفره. ما با جزئیات چارچوب Real-Time (RTF) را شرح می دهیم - یک سیستم میان افزاری که از رویکرد سطح بالا پیشنهادی برای توسعه بازی پشتیبانی می کند. RTF، که اولین رویکرد معماری و متدولوژی توسعه ارائه شده آن در [1، 2] معرفی شده است، راه حل های یکپارچه ای را برای انواع مشکلات توسعه و زمان اجرا ارائه می دهد. این راه حل ها شامل ارتباطات اولیه برای انواع مشکلات توسعه و زمان اجرا می شود، از قابلیت های ارتباطی اولیه گرفته تا بازی های آنلاین تک سرور تا راه حل های پیچیده برای مدیریت توزیع MMOG. این به ویژه شامل طراحی شی گرا و انتقال کارآمد ساختارهای داده بازی، رابط ها و سرویس هایی است که به توسعه دهنده اجازه می دهد تا به طور موثر MMOG را در چندین سرور پردازش کند، عملکرد نظارت و کنترل یکپارچه برای بازی ها، و امکانات مدیریتی برای توزیع چند سروری MMOG ها. . اکثر بازی های آنلاین امروزی معمولاً یک دنیای مجازی فضایی را شبیه سازی می کنند که از نظر مفهومی به بخش ایستا و بخش پویا تقسیم می شود. بخش استاتیک، برای مثال، ویژگیهای محیطی مانند منظره، ساختمانها و سایر اشیاء غیرقابل تغییر را پوشش میدهد. از آنجایی که بخش استاتیک از قبل شناخته شده است، هیچ تبادل اطلاعاتی در مورد آن بین سرورها و بازیکنان مورد نیاز نیست. بخش پویا شامل اشیایی مانند آواتارها، شخصیت های غیربازی کننده (NPC) که توسط کامپیوتر کنترل می شوند، مواردی که می توانند توسط بازیکنان جمع آوری شوند یا به طور کلی، اشیایی که می توانند وضعیت خود را تغییر دهند را پوشش می دهد. این اشیا موجودیت نامیده می شوند و مجموع همه موجودات، بخش پویا دنیای بازی است. هر دو بخش با هم حالت بازی را می سازند که نشان دهنده دنیای بازی در یک نقطه زمانی خاص است. برای ایجاد یک بازی به طور مداوم در حال پیشرفت، وضعیت بازی به طور مکرر در زمان واقعی در یک حلقه بی پایان، به نام حلقه زمان واقعی، به روز می شود. شکل 1 یک تکرار از حلقه های زمان واقعی سرور را برای بازی های چند نفره بر اساس معماری سرویس گیرنده-سرور نشان می دهد. شکل یک سرور را نشان می دهد، اما در یک سناریوی چند سروری ممکن است گروهی از فرآیندهای سرور توزیع شده بین چندین ماشین باشد. یک تکرار حلقه شامل سه مرحله اصلی است. در ابتدا کلاینت ها ورودی کاربران را پردازش کرده و به سرور ارسال می کنند (مرحله 1 در شکل). سپس سرور با اعمال اقدامات دریافتی کاربر و منطق بازی، از جمله هوش مصنوعی (AI) NPCها و شبیهسازی محیطی، به وضعیت فعلی بازی (مرحله 2) یک حالت بازی جدید را محاسبه میکند. در نتیجه این محاسبه، حالات چندین موجودیت پویا تغییر کرده است. مرحله آخر 3 حالت جدید بازی را به مشتریان منتقل می کند. بخش مرکزی سیستم نرم افزار بازی شامل حالت بازی و پردازش مداوم حالت بازی است. در این مقاله، ما به جای اینکه بر روی رابط کاربری بازی، یعنی نمایش محیط مجازی که بازیکن با آن در تعامل است، روی توسعه حالت بازی و پردازش آن تمرکز کنیم. (من) منطق بازی: موجودیت ها، رویدادها (ساختارهای داده)، و قوانین پردازشی که محیط مجازی را توصیف می کنند. (ii) موتور بازی: حلقه بلادرنگ که به طور پیوسته رویدادهای (کاربر) را طبق قوانین منطق بازی پردازش می کند تا حالت بازی جدید را محاسبه کند. (iii) توزیع بازی: پارتیشن بندی منطقی دنیای بازی در میان سرورهای متعدد، مدیریت توزیع محاسباتی بر اساس وضعیت واقعی بازی و ارتباطات. (الف) توزیع رابط کاربری و پردازش وضعیت بازی بین مشتری و سرور، و (ب) توزیع پردازش حالت بازی در معماری چند سرور. این سه جنبه بسته به الزامات و ویژگی های یک ژانر خاص بازی به طور متفاوتی مورد بررسی قرار می گیرند. به عنوان مثال، بازیهای اکشن سریع بر ارتباطات کارآمد و پیادهسازی موتور تکیه دارند در حالی که فقط از منطق و محتوای بازی نسبتاً ساده استفاده میکنند. پیچیدگی جنبه توزیع بازی معمولاً با تعداد و تراکم کاربران شرکت کننده در یک بازی افزایش می یابد و بنابراین برای MMOG ها چالش برانگیز است. مستقیم ترین رویکردی که برای توسعه بازی استفاده می شود، طراحی و پیاده سازی کل سیستم نرم افزاری به صورت جداگانه است. تیم توسعه هر سه جنبه اصلی سیستم نرم افزار بازی را طراحی و پیاده سازی می کند: منطق بازی، موتور بازی و توزیع بازی. این به توسعه دهندگان اجازه می دهد تا کنترل کامل بر روی کد خود و اجرای بهینه با تمرکز بر نیازهای عملکرد فردی بازی داشته باشند. در حالی که توسعه سفارشی کل یک بازی بسیار پیچیده است، بنابراین هزینه بر و مستعد خطا است، گاهی اوقات تنها راه برای دستیابی به اهداف خاص طراحی بازی به دلیل انعطاف پذیری آن است. این رویکرد از کتابخانه های ارتباطی ویژه و سیستم های میان افزاری (مانند Quazal Net-Z [6]) برای توسعه بازی استفاده می کند. همانطور که در شکل 2 (ب) نشان داده شده است، توسعهدهنده بازی از میانافزار استفاده میکند تا ارتباط بین کلاینتها و سرورها را در یک بازی توزیعشده در حالی که موتور بازی و منطق را به تنهایی پیادهسازی میکند، تحقق بخشد. با استفاده از این رویکرد، توسعهدهنده انعطاف کافی برای طراحی و پیادهسازی جنبههای منطق بازی و موتور بازی دارد در حالی که میانافزار با توزیع بازی سروکار دارد. با این حال، کتابخانههای موجود معمولاً بر روی یک معماری خاص تمرکز میکنند و انعطافپذیری توسعه موتور را کاهش میدهند. علاوه بر این، این رویکرد به ندرت برای توسعه MMOG های مبتنی بر چند سرور استفاده شده است زیرا یک کتابخانه ارتباطی خالص برای این بازی ها کافی نیست. یک میانافزار برای MMOGها همچنین باید با کار دشوار توزیع پردازش بازی در میان سرورهای متعدد، که فقط چند سیستم میانافزاری برای آنها در دسترس هستند (مانند Emergent Server Engine [7] یا BigWorld [8]) مقابله کند. با این رویکرد که در شکل 2(c) نشان داده شده است، یک موتور بازی موجود، یعنی جزء پردازشی یک بازی، برای توسعه یک بازی کاملاً جدید مجدداً استفاده می شود. این امر پیچیدگی توسعه را کاهش می دهد. برخی از استودیوهای بازی سازی موتورهای بازی خود را عمدتاً به منظور فروش مجدد و صدور مجوز برای موتور طراحی می کنند. نمونه هایی از موتورهای محبوب و اغلب مورد استفاده موتور Quake 3 یا موتور Unreal هستند. با این حال، یک موتور خاص کاملاً انعطاف ناپذیر است زیرا معمولاً به یک سبک بازی خاص گره خورده است. شکل 2(d) رویکرد اصلاح بازی (اصطلاحات اصطلاحی جامعه برای اصلاح یک بازی موجود) را از طریق یک رابط اختصاصی برای برنامهنویسی منطق بازی نشان میدهد. این اولین بار توسط توسعه دهندگان سرگرمی انجام شد که محتوای واقعی بازی را تغییر دادند. امروزه ساخت مدها بر اساس ابزارهای سطح بالایی است که توسط خود استودیوهای بازی سازی ساخته شده و از آنها نیز استفاده می شود. چنین ابزارهایی امکان ایجاد محتوای بازی توسط طراحان را با حداقل تلاش برنامه نویسی فراهم می کند. جنبه اصلی مودینگ ایجاد محتوای بازی جدید در چارچوب محدودیت های منطق بازی موجود است. از این رو نسبتاً غیر قابل انعطاف است. با این وجود، مودینگ امکان توسعه مفاهیم نوآورانه بازی را فراهم میکند، و گاهی اوقات یک مود حتی از بازی اصلی محبوبتر میشود، به عنوان مثال، مد ضد حمله مبتنی بر بازی Half-Life Valve. چارچوب بلادرنگ ما، همانطور که در شکل 2 (e) نشان داده شده است، یک رویکرد توسعه بازی جدید را امکان پذیر می کند که پشتیبانی پردازشی بیشتری را نسبت به استفاده از یک میان افزار ارتباطی ارائه می دهد، اما یک موتور بازی کامل را تشکیل نمی دهد و انعطاف پذیری بالاتری را ممکن می سازد. بنابراین، RTF را می توان در بین رویکردهای (b) و (c) طبقه بندی کرد. ویژگی ها و کاربرد RTF که این طبقه بندی را توجیه می کند، در بخش های بعدی مورد بحث قرار می گیرد. شکل 3 طبقه بندی ما از پنج رویکرد توسعه مورد بحث را با توجه به انعطاف پذیری و پیچیدگی آنها نشان می دهد. بیشترین سادگی از نظر زیرساخت نرم افزاری توزیع شده توسط موتورهای بازی موجود (c) یا جعبه ابزارهای اصلاح شده (d) ارائه می شود. با این حال، این رویکردها دارای اشکال قابل توجهی هستند که کاملاً انعطاف ناپذیر هستند. بدیهی است که توسعه کاملاً سفارشی (a) در عین پیچیده بودن بیشترین انعطاف را ارائه می دهد. استفاده از میان افزار ویژه (b) یک جایگزین امیدوارکننده برای کارهای خاص است: استفاده از آن پیچیدگی توسعه بازی را کاهش می دهد. پشتیبانی ارتباطی خالص برای MMOG ها کافی نیست: برای چنین سیستم های توزیع شده بزرگی، مدیریت چند سرور بسیار گسترده است و پیچیدگی توسعه را افزایش می دهد. همانطور که در طبقه بندی نشان داده شده است، RTF برای ارائه بالاترین انعطاف ممکن در طراحی بازی به توسعه دهنده طراحی شده است و در عین حال او را از وظایف پیچیده پیاده سازی سطح پایین در فرآیند توسعه بازی آزاد می کند. چارچوب بلادرنگ یک میان افزار ارتباطی و محاسباتی سطح بالا برای بازی های آنلاین تک سرور و چند سرور فراهم می کند. RTF از پردازشهای سمت سرور و سمت کلاینت یک بازی آنلاین با مجموعهای از خدمات اختصاصی پشتیبانی میکند که به توسعهدهندگان اجازه میدهد موتور بهینهشده خود را در سطح بالایی از انتزاع مبتنی بر موجودیت به شیوهای انعطافپذیر پیادهسازی کنند. شکل 4 یک نمونه چند سرور عمومی از یک بازی توسعه یافته در بالای RTF را نشان می دهد. میان افزار RTF با مدیریت موجودیت و رویداد در حلقه کلاینت بلادرنگ و پردازش حالت مستمر بازی در حلقه سرور بلادرنگ، و توزیع پردازش وضعیت بازی در چندین حلقه سرور بلادرنگ سروکار دارد. توسعه دهنده حلقه بلادرنگ مخصوص بازی را روی کلاینت و سرور و همچنین منطق بازی را با استفاده از میان افزار RTF برای تبادل اطلاعات بین فرآیندها پیاده سازی می کند. RTF بر اساس یک رویکرد ماژولار است و علاوه بر جنبه پردازش بازی، اجزای اضافی را برای سایر جنبه های بازی های توزیع شده فراهم می کند. شکل 5 مؤلفه هایی را نشان می دهد که در کنار ماژول موازی سازی ارتباط و محاسبات (CCP) وجود دارد که بخش پردازش بازی را کنترل می کند. اجزای نشان داده شده شامل یک ماژول برای ذخیره مداوم اطلاعات مربوط به بازی است که به ویژه برای MMORPG ها مرتبط است. ماژول پایداری امکان ذخیره و بازیابی موجودیت های مشخص شده توسط توسعه دهنده برنامه را در و از یک پایگاه داده رابطه ای فراهم می کند. یک ماژول استریم صوتی از ارتباطات صوتی Voice over IP (VoIP) از طریق RTP (پروتکل همزمان) پشتیبانی میکند و یک رابط برای راهاندازی کانالها، جابجایی کاربران بین آنها و برای لغو صدای کاربران فراهم میکند. سایر جنبه های مهم MMOG ها که معمولاً دارای جلسات بازی طولانی مدت هستند، نظارت و کنترل احتمالات است. ماژول کنترل و مانیتورینگ نقطه پایانی میان افزار برای توسعه دهندگان برنامه است تا دستوراتی را برای هدایت برنامه در زمان اجرا دریافت کنند و موارد داخلی را در مورد وضعیت برنامه گزارش دهند. توسعهدهنده میتواند نمایههایی را تعریف کند که ویژگیهای کنترل و نظارت خاص بازی را در بالای این ماژول منعکس کند. همچنین پروفایل های از پیش تعریف شده ای برای معیارهای نظارت معمولی و کنترل وظایف در بازی ها وجود دارد و RTF از برخی از این ماژول های از پیش تعریف شده پشتیبانی می کند، به عنوان مثال، مقادیر داخلی RTF مانند ویژگی های ارتباطی (مصرف پهنای باند، تأخیر، نرخ بسته) و ویژگی های توزیع (تعداد بسته) را گزارش می کند. مشتریان، تعداد نهادها، تعداد رویدادهای مبادله شده)، به طوری که توسعهدهنده برنامه ملزم به گزارش صریح چنین اطلاعاتی نیست. توسعه پردازش حالت بازی در بازی های آنلاین شامل چندین کار است، همانطور که در شکل 6 نشان داده شده است. صرف نظر از توسعه یک MMOG چند سروری یا یک بازی اکشن در مقیاس کوچک تک سروری، توسعه دهنده باید به سه وظیفه کلی، AoI اهمیت دهد. مدیریت، پردازش وضعیت بازی، و طراحی ساختار داده، هنگام ساخت بازی در بالای RTF. اگر بازی از چندین سرور استفاده می کند، موازی سازی و توزیع چند سرور نیز باید توسط توسعه دهندگان مراقبت شود. در زیر این وظایف برای توسعهدهنده، RTF انواع عملکردهای سطح پایین مانند سریالسازی و ارتباطات بهینهشده رویداد و موجودیت، مدیریت وضعیت بازی و پردازش احتمالاً توزیع شده آن را ارائه میکند. به طور کلی، این تفکیک وظایف بین توسعه دهنده و RTF منعکس کننده رویکرد کلی RTF است که در شکل 2 (e) ترسیم شده است. ارائه عملکردهای سطح بالا مرتبط با موتور بازی در بالای یک میان افزار ارتباطی بهینه شده. بخشهای فرعی زیر بر وظایف توسعهدهنده تمرکز دارند و روش کلی توسعه ارائه شده توسط RTF را ارائه میکنند. حالت پویا یک بازی آنلاین معمولاً به عنوان مجموعه ای از موجودیت ها توصیف می شود که نمادها، NPC ها یا آیتم های موجود در دنیای مجازی را نشان می دهند. علاوه بر موجودیت ها، رویدادها ساختار مهم دیگری در موتور بازی آنلاین برای نمایش ورودی های کاربر و اقدامات دنیای بازی هستند. ساختارهای داده سلسله مراتبی برای رویدادها و موجودیت ها در دنیای پیچیده بازی باید به روشی بهینه برای ارتباط شبکه کارآمد قابل سریال سازی باشند. هنگامی که فقط از یک میان افزار ارتباطی استفاده می کنید، توسعه دهندگان باید ساختارهای داده و مکانیسم های سریال سازی را از ابتدا بسازند، در حالی که استفاده از موتور موجود مستلزم استفاده از موجودیت ها و رویدادهای از پیش تعریف شده است که انعطاف پذیری را کاهش می دهد. RTF یک موجودیت و مفهوم رویداد سطح بالا بهینهسازی شده را ارائه میکند که امکان سریالسازی خودکار را فراهم میکند و در عین حال انعطافپذیری کامل طراحی را ارائه میدهد. هنگام استفاده از RTF، موجودیت ها و رویدادها به عنوان کلاس های C++ شی گرا پیاده سازی می شوند. توسعه دهنده معنای ساختارهای داده را با توجه به منطق بازی تعریف می کند. تنها معنایی موجودیت ها که توسط RTF از پیش تعیین شده است، اطلاعات مربوط به موقعیت آنها در دنیای بازی است. بنابراین، موجودیت ها از یک کلاس پایه خاصی از RTF مشتق می شوند که نمایش یک موقعیت را برای موجودیت ها تعریف می کند. این امر ضروری است زیرا توزیع پردازش حالت بازی در چندین سرور بر اساس مکان یک موجودیت در دنیای بازی است. علاوه بر نیاز به ارث بردن از، طراحی ساختارهای داده کاملاً قابل تنظیم برای منطق بازی خاص است، همانطور که در مثال یک موجودیت ماشین مسابقه نشان داده شده در الگوریتم 1 نشان داده شده است.توسعه سطح بالا گیمینگ آنلاین چند سرور در شیراز
1. مقدمه
2. طراحی سرور پایه بازی های آنلاین
3. رویکردهای توسعه سرور گیمینگ
به منظور مقایسه رویکردهای مختلف توسعه معماری کلی توزیع شده بازیهای آنلاین، سه جنبه اصلی زیر را از سیستمهای نرمافزار بازی آنلاین شناسایی میکنیم:
جنبه سوم، توزیع بازی، می تواند بیشتر به دو سطح توزیع تقسیم شود:
(الف) توسعه سفارشی
(ب) میان افزار ارتباط سرور گیمینگ
(ج) استفاده از موتور موجود
(د) اصلاح بازی
(ه) میان افزار چند سرور RTF
4. نمای کلی RTF
5. وظایف توسعه عمومی
5.1. وظیفه (1) - طراحی ساختار داده