بازی رایانه - بررسی آسمان دز- همایش ملی بازی های رایانه دانشگاه شریف-صفحه1

بررسی بازی رایانه ای آنلاین ASMAN DEZ
نخستین همایش ملی بازی های رایانه ای – دانشگاه صنعتی شریف
کارشناسان : فرزام ملک آرا ،سعید حیدری،علیرضا یارمحمدی


تدوین گزارش : مریم ثابت قدم اصفهان

 

 


نشست اول > مهندس فرزام ملک آرا  :


معرفی بازی
با توجه به اینکه کسی در ایران هنوز روی گیم آنلاین به ویژه در سبک Browser base فعالیتی نداشته است ، لذا تجربه ما برای افراد برنامه نویس در بازی سازی و یا کسانی که مایل به ورود به این صنعت هستند بسیار مفید است ؛ سعی می کنیم که در جلسه امروز در مورد لایه های فنی ، طراحی و کمی در مورد مشکلات موجود صحبت کنیم.

 



توصیف کوچکی که می توان در مورد بازی آنلاین MMO داد این است که تعداد خیلی زیادی افراد وارد بازی می شوند؛ بطوری که یکی از پارامترهای اصلی این بازی ، تعامل میان بازی کنان آن است. این افراد در هر زمان که مایل باشند می توانند وارد یا خارج شوند با این پیش فرض که امتیازاتی که کسب کرده اند ؛ به محض خروجشان حذف نگردد. البته یک استثناء در سبک بازی استراتژیک است ؛ بدین معنا که احتمال دارد که در زمانی که در بازی حاضر نیستید ؛ کسی به شما حمله کند. بطور مثال در بازی آسمان دز ، شما سیاره ای دارید که یک سری سفینه در داخل این سیاره قرار داده اید. اما در زمان ورود دوباره در می یابید که سیاره شما خالی از آنهمه سفینه است. زیرا  در زمان غیبت شما مورد تهاجم دشمن قرار گرفته است.
در مورد بازی MMO browser based ، کل بازی مبتنی بر وب است. شما احتیاج به نصب هیچ چیزی ندارید و تنها با دسترسی به اینترنت قادر به ارتباط با این بازی هستید. نکته جالب توجه در این سبک بازی این است که دارای گرافیک های محدودی است و خبری از گرافیک های Real-Time نیست. البته ابزارهایی نیز برای  ایجاد محیط سه بعدی  در مرور گر وجود دارد ؛ ابزارهایی نظیر 03D گوگل که محیط های سه بعدی را در محیط وب قابل دسترس می سازد. در بازی مبتنی بر وب ، درواقع ما با تخیل مخاطب سروکار داریم.



تاریخچه ساخت بازی
پروژه مذکور را از حدود 18 ماه پیش آغاز کردیم. اولین بار که سناریو آن را می نگاشتیم ؛ در فکر خلق یک مجموعه بازی بودیم. جالب است که دو بار قبل آن نیز تلاش ناموفقی در تولید بازی داشتیم.در حقیقت از سال 1380 ما در حال کار بر روی محیط 3D بودیم. ولی گیم یک  موضوع متفاوت و کاملاً پیچیده ای است. در شبیه سازی ها باید تمام محاسبات ، بسیار دقیق و مرتب باشد.

شکل گیری سناریو در فضای علمی تخیلی و با خلق مجموعه بازی ها در هشتصد سال آینده تحقق یافت. توجیه مالی نیز برایمان بسیار مهم بود و نمی خواستیم همانند دو پروژه پیشین ، با شکست مواجه شویم. روی کاغذ دریافتیم دسترسی به پروژه مبتنی بر وب آسان تر است . گرچه در آینده به نادرستی این قضیه پی بردیم. البته سعی کردیم در زمان نمایشگاه دیجیتال با مسئولان یک  بازی آنلاین آلمانی ( تراویان ) که در ایران سمینارهایی در اینباره برگزار کرده بودند ؛ ارتباطاتی برقرار نماییم. اما هر بار هیچ راهنمایی در حوزه تکنیک و تجاری و همچنین روشهای درآمد زایی ارائه نشد. به هر حال ، این حوزه بسیار نوپا است که می تواند علاقه مندان بسیاری را جذب خود نماید و لذا می توان در این ژانر وارد شد و درآمد زایی کرد. بطوری که بتوان محصولاتی را نیز به خارج از ایران فرستاد. درجایی خواندم که یکی از بازی های آنلاین در یک کشور اروپایی ، به یکی از پرسود ترین منابع در آمد زای این کشور تبدیل شده است. لذا من نیز بر این باورم که بازی مبتنی بر وب از قابلیت رقابت با سایر بازی های جهان برخوردار خواهد شد.
از آنجا که رسالتی را نیز بر دوش خود احساس می کردیم؛ به فکر ساخت بازی علمی تخیلی افتادیم. لذا سعی کردیم با بنیاد نجوم و فیزیک همکاری نماییم تا کاربر ، اطلاعاتی را نیز در این حوزه های علمی در حین بازی اتخاذ نماید. در این پروژه نیازمند همفکری افراد خبره بودیم و لذا به سایتی به نام fantasy.ir انجمن علمی تخیلی کاران ایرانی مراجعه کردیم که داستان های بسیار زیادی در آنجا ساخته و پرداخته می شود . یکی از کارهای ما این بود که اسکلت آسمان دز را که در آن زمان "پروژه رهایی " نام داشت ؛ در آنجا قرار داده و بازخوردهای خوبی کسب کنیم. اینچنین با حداقل هزینه، 70% داستان بازی آسمان دز در آنجا ساخته شد.

معماری بازی

 


معماری این بازی از دو قسمت  Core , UI تشکیل شده است.
Core این بازی با همکاری دوستان به زبان c++ نوشته شده است و تقاضاهایی که از جانب کاربر به سرور می رسد ؛ طی دو سه مرحله کنترل می گردد و سرانجام به Core رسیده و در آنجا پردازش می شود.
UI بخشی از این دیتاها را نگه می دارد . از آنجا که در ابتدا روال کار بر پایه Requestو Respond ( درخواست و پاسخ ) استوار بود؛  لذا بروز مشکلات در مرحله Synchronize دردسرهای زیادی ایجاد می کرد.
برای Multithreading  در اپلیکیشن نوشته شده به زبان سی پلاس از Library Boost استفاده کردیم. و همچنین از زبانهای HTML, PHP,Java script,  و همچنین از Library های دیگری نظیر Css , My SQL, PHP My admin, My SQL Dumper بهره گرفتیم تا قادر باشیم داده های خود را در سرور مدیریت نماییم.
 



یکی از اصلی ترین Subsystem های داخل Core ، Base بود

کل بازی ما یک State machine کلی است . یعنی از یک State  به یک State  دیگر وارد می شود . و حتی طی فعالیت کاربر ، سعی می کنیم که طبق State خودمان حرکت کنیم. این باعث می شود که علاوه بر منظم کردن کد ، در زمان روبرو شدن با Error ، بسیار راحت تر بتوان آنرا برطرف نمود؛ اینکه کاربر چطور از Core برگردد و چطور ادامه داد ه و از کجا شروع کند؟

 



سیستم ما یک سیستم Multithread است که فکر می کنم غیر از این نمی توانستیم کار دیگری انجام دهیم ؛چه به سبب میزان پردازش بالا و چه بر اساس در خواست هایی که از طرف کاربر می رسد.

Subsystem دیگری که در این بازی استفاده شده ، Battle System است که جنگ ها را در داخل بازی تنظیم می کند. بعد از چندین ماه آن را عمداً در thread کاملاً مجزا ایجاد کردیم. زیرا حجیم ترین فعالیت در بازی ما ، جنگ هایی است که توسط کاربران تحقق می یابد و لذا پردازش بسیار سنگینی را می طلبد.

Rule Manager ارتباط مستقیمی با  Game Designer دارد. در واقع Rule تعریف می کند که Data base به صورت record ذخیره شود و اینچنین دیتای هر اکشن انجام شده را کنترل کرده و اطمینان حاصل می کند که آیا قابل اجراء است یا خیر؟

Scheduler یکی از مهمترین اجزاء است. در واقع اجرای فعالیتی است که به زمان بعدی و بدون  log user موکول می شود.

Transmitter قسمتی است که با وب در ارتباط است.
Utilities کنترل یک سری داده های تکراری است به نحوی که باعث کنترل اجرای آن ها شود. اگر در هر بار درخواست ، یک پروسه انجام گیرد ؛ بسیار زمان بر است. لذا این دیتاها در جایی ذخیره شده و مجدد مورد استفاده کاربر دیگر قرار می گیرد.

 

دانشنامه صفحه 1 :

Browser base:  مبتنی بر مرورگر

Core : هسته ( نوعی حافظه که قبل از ارائه و در دسترس قرار گرفتن حافظه Ram مورد استفاده قرار می گیرد)

Multithread: انجام سریع چند عملیات بطور متوالی

Subsystem: زیر سیستم ( یک سیستم ثانویه که معمولاً قادر به انجام عملیات بطور مستقیم یا بطور ناهمگام با یک سیستم کنترل کننده است ).

Synchronize : همزمان سازی ( تنظیم زمان بندی رویدادها به گونه ای که رویدادها در دو یا چند سیستم یا واحد وظیفه مند همزمان رخ دهند ).

Rule: قاعده ( یک راه انداز که وقتی اجراء می شود ؛ یک وارسی بر روی داده های ذخیره شده در یک سرور پایگاه داده ها و زمانی که داده ها تغییر می یابند؛ بعمل می آورد. ).

Rule manager: مدیریت قاعده

State : حالت ، وضعیت ( خصایص لحظه ای یک شئ که وضعیت جاری شئ را مشخص می کند ).

Record : ثبت کردن (قرار دادن داده بر روی یک دستگاه یا رسانه ذخیره سازی).

Scheduler: زمان بند ( یکی از عملیات مدیریت فرایند که توسط هسته سیستم عامل یا مؤلفه مدیریت فرایند سیستم عامل اعمال می گردد ؛ زمان بندی و توزیع وقت CPU به فرایند است که توسط زمان بند انجام می گیرد ).

Transmitter : توزیع کننده ، فرستنده

Library: کتابخانه ( مجموعه ای از توابع برنامه سازی شده که جهت استفاده توسط هر برنامه ای آماده و در دسترس باشد).

 

©  Copyright 2010/ Animationdata.com & Partners

 

    صفحه 1                 صفحه 2                   صفحه 3               صفحه 4              عناوین مطالب

 

آمار بازدیدکنندگان

آنلاین: 1
امروز: 584
دیروز: 292
ماه: 1634
سال: 9002
کل: 191161
آخرین بازدید: 21:27