بازی ساز تخصصی ترین تارنمای آموزش ساخت بازی دو بعدی سه بعدی و طراحی بازی در ایران - Content
                            xaitMap اکنون از Unity پشتیبانی می کند                          نسخه جدید موتور NeoAxis منتشر شد                          پیام نوروزی محمد غضنفری به تمام علاقه مندان به دانش ساخت بازی در سال 91                          معرفی کتاب 1001 video games you must play before you die                          رونمایی از دو کتاب با محوریت تولید ابزارهای ساخت بازی                          مستند بنیاد بازی یا بازی بنیاد                          مستند معرفی اسکنر سه بعدی
 
ورود به تارنما
نام کاربری

رمز عبور

چنانچه تاکنون عضو این سایت نشده اید می توانید با تکمیل فرم مخصوص عضویت به جمع کاربران این سایت بپیوندید و از امكانات مخصوص كاربران استفاده نمائيد .

جستجو



منوی اصلی
لینکهای سریع
دیگر بخشها
بخش کاربری
مطالب سایت
بخش خبری
امکانات سایت

Google Translation
Translation

وضعیت آنلاین
در حال حاضر 50 مهمان و 1 کاربر در سایت حضور دارند .

خوش امديد ، لطفا جهت عضویت در سایت فرم مخصوص عضویت را تکمیل نمائید .

پیغام کوتاه
ارشيو پيغام کوتاه   

 

آخرین ارسالها
کل موضوعات 637
کل ارسال ها 3072
کل بازديد ها 449028
کل پاسخ ها 2435
کل اعضا 2093
آخرين 20 ارسال انجمن

بازی شاهزاده ی یتیم
ارسال شده توسط whitetiger در مورخه : شنبه، 30 ارديبهشت ماه ، 1391

سوال و جواب در مورد udk
ارسال شده توسط sadaf در مورخه : شنبه، 30 ارديبهشت ماه ، 1391

گردهماییه بازی سازان در تهران ( 5 شنبه 21 اردیبهشت ساعت 9 تا 12 )
ارسال شده توسط admin در مورخه : جمعه، 29 ارديبهشت ماه ، 1391

کدنویسی عملکرد اسلحه و گلوله در یونیتی
ارسال شده توسط imantexas در مورخه : جمعه، 29 ارديبهشت ماه ، 1391

آموزش فارسی ساخت تبر در تری دی مکس
ارسال شده توسط AliGamer در مورخه : پنجشنبه، 28 ارديبهشت ماه ، 1391

معرفی اعضا
ارسال شده توسط whitetiger در مورخه : دوشنبه، 25 ارديبهشت ماه ، 1391

کتاب جدید اموزشی Unity 3D Game Development by Example Beginner's Guide
ارسال شده توسط candc در مورخه : دوشنبه، 25 ارديبهشت ماه ، 1391

سوال و جواب در مورد یونیتی
ارسال شده توسط mnkh97 در مورخه : شنبه، 16 ارديبهشت ماه ، 1391

از تو دستور از Unity اجرا!
ارسال شده توسط admin در مورخه : جمعه، 15 ارديبهشت ماه ، 1391

منبعی برای برنامه ها طراحی بازی؟؟؟
ارسال شده توسط admin در مورخه : چهارشنبه، 13 ارديبهشت ماه ، 1391

خط شروع طراحی بازی کجاست؟؟؟
ارسال شده توسط admin در مورخه : يكشنبه، 10 ارديبهشت ماه ، 1391

مجموعه ی بی نظیر فیلم های آموزشی(پایه گذاری بازی)
ارسال شده توسط PRINCE_OF_PERSIA در مورخه : يكشنبه، 10 ارديبهشت ماه ، 1391

صد هزار تومان برای چند سوال ساده در ارتباط با gui
ارسال شده توسط admin در مورخه : شنبه، 9 ارديبهشت ماه ، 1391

بنیاد بازی‌های رایانه‌ای دروازه بازی‌های مخرب‌خارجی
ارسال شده توسط admin در مورخه : جمعه، 8 ارديبهشت ماه ، 1391

معرفی انجمن جدید بازی سازی
ارسال شده توسط YAHYAKING در مورخه : پنجشنبه، 7 ارديبهشت ماه ، 1391

Chase Game
ارسال شده توسط candc در مورخه : سه شنبه، 5 ارديبهشت ماه ، 1391

اتمام نظرسنجی مشکلات فنی بازی های ایرانی در کدام قسمت بیشتر است
ارسال شده توسط admin در مورخه : شنبه، 2 ارديبهشت ماه ، 1391

بزرگترین منبع بافت مناسب ساخت بازی و انیمیشن
ارسال شده توسط 3dmotion در مورخه : پنجشنبه، 31 فروردين ماه ، 1391

اشیا با بافت نرم
ارسال شده توسط admin در مورخه : دوشنبه، 28 فروردين ماه ، 1391

آموزش مقدماتی کد نویسی در یونیتی
ارسال شده توسط mis-sheyda در مورخه : يكشنبه، 27 فروردين ماه ، 1391

تالار گفتمان جستجو

لینکدونی تارنما

آزمایشگاه بازی

وبلاگ نوجوان بازی ساز مستقل

مجله ایتترنتی بازی تست

سایت خبری بازی های رایانه ای

Animation Data Magazine

مرجع ویدئویی گیم ایران

بازی های آنلاین

مرجع تخصصی برنامه نویسی

بنیاد ملی بازی های رایانه ای

واقعیت مجازی

ستاد ویژه توسعه فناوری نانو

مقالات سه بعدی و برنامه نویسی

وبلاگ محمد غضنفری

خوانسار شهر زیبایی ها

مرجع فارسی موتور Unity

IranCG



وضعیت یاهو
OFFLINE

 
بازی های آنلاین وتحت شبکه چیست و چگونه ساخته می شوند؟
در این مقاله به بررسی چگونگی ساخته شدن بازی های آنلاین و انواع سبک های آن پرداخته می شود.



بسم الله الرحمن الرحیم



بازی های آنلاین وتحت شبکه چیست و چگونه ساخته می شوند؟



نویسنده: محمد غضنفری


مقدمه: امروزه کمتر بازی PC در بازار پیدا می شود که یک بخش نسخه آنلاین یا تحت شبکه را در کنار بخش تک کاربره آن قرار نداده باشد. بازی های کنسولی هم اکثراً سعی می کنند به شبکه مخصوص آن کنسول متصل شده و به کاربرانشان امکانات بازی تحت شبکه با سایر کاربران در یک محیط مجازی را بدهند. امروزه برای وصل شدن به شبکه حتی دیگر نیازی به استفاده از کابل شبکه نیست و شما کافی است که با کمک کنسول یا رایانه به اینترنت وصل شوید و این بازی ها را تجربه کنید.
حتی برخی از بازی های امروز فقط مخصوص بازی های آنلاین و تحت شبکه عرضه می شود و شما در بازی هیچ قسمت تک کاربره را مشاهده نخواهید کرد. این بازی ها یک فضای مجازی را در اختیار کاربران قرار می دهند که کاربران به صورت زنده و آنلاین می توانند در آن فضا بگردند و بازی کنند.
در این مقاله ما می خواهیم مسائل زیر را مورد بررسی و ارزیابی قرار دهیم:
•    انواع مختلف بازی های شبکه ای
•    معرفی تکنولوژی شبکه
•    انواع ساختارهای بازی های شبکه (ساختار Peer to Peer و Clint/Server)
•    انواع پروتوکل های شبکه ( UPDو TCP/IP)
•    انواع API های شبکه (Berkeley Sockets و Windows Sockets (WinSock) و DirectPlay)
•    در اعماق طراحی مراحل بازی های چند کاربره
فصل اوّل: انواع مختلف بازی های شبکه ای
قبل از شروع هر بحث این مساله بسیار مهم است که شما بدانید در کل بازی های تحت شبکه به چند نوع و چند سبک تقسیم می شود. هر یک از دو نوع بازی شبکه ای که در ادامه معرفی می شود خودشان به چند سبک تقسیم می شوند. در کل بازی های شبکه ای به دو نوع تقسیم می شوند که این دو نوع ساختار و اهداف کاملاً متفاوتی دارند.
1.    بازی بر پایه قسمت
Session based video games
2.    جهان مجازی مداوم (Persistent virtual worlds)
بازی بر پایه قسمت: در محیط های بر پایه قسمت، هر بازیکن دارای یک Client در رایانه اش می باشد و از یک شخصیت که در بازی نمایش داده شده و موقعیتی را می گیرد استفاده می کند. این شیوه بیشتر برای بازی های استراتژی استفاده می شود. در این بازی ها در یک قسمت بازیکن می تواند حرکت کند، چیزی را برای دیگر کاربران ارسال کند و صبر کند تا زمانی که حرکت کنند. اگر یک نوبت کامل شد اطلاعات لازم درون یک بسته شبکه گذاشته شده و برای تمام Client های مشترک در آن قسمت ارسال می شود یا یک کار بهتر می تواند صورت بگیرد یک سرور نوبت بازی را تحلیل کرده و نتیجه رویدادهای لازم بازی را برای نوبت و چرخش بازی رها کند.
در بازی های به صورت رایانه ای یا بازی های play by email (PBEM) ممکن است چند روز طول بکشد تا نوبت بازی تمام کاربران و برورسانی آنها و نتیجه سناریوشان کامل شود.
در اضافه بسیاری از بازی ها هستند که تمام کاربران می توانند در یک زمان یکسان در چرخه باشند بدون این که احساس کنند چرخه بازی دارای زمان خاص است. نمونه ای از این بازی ها تیراندازهای اول شخص است.
بیشترین شهرت سبک های بازی بر پایه قسمت این است که انتهای بازی تا جایی است که به هدف مشخص رسیده باشیم. ( یا تا جایی که تمام کاربران به حد کافی بازی کردند و می خواهند از بازی خارج بشوند) سپس بازی به اتمام می رسد و می تواند restart شود. امّا هیچ اطلاعاتی در سرور به استثنای ذخیره بالاترین امتیازات، انباشته و ذخیره نمی شود. اگر بازیکن بازی جدیدی را شروع کرد این بازی هیچ ارتباطی با قسمت های بازی که در گذشته، بازیکن ها آن را تجربه کردند ندارد و وضعیت هایی که او در قسمت های قبل داشته به هیچ عنوان برای قسمت های جدید ذخیره نمی شود به عنوان مثال وضعیت سلامتی، اسلحه ها، مهمات، دارایی ها و... که در قسمت جاری برای قسمت های قبل و بعد در جایی ذخیره نمی شود و فقط در همان قسمت استفاده می شود.
این نوع بازی خود به سه سبک تقسیم می شود. 1. حریف کشی 2. تیم و شراکتی 3. گرفتن پرچم
حریف کشی: بازی سبک حریف کشی به این صورت است که گروهی از سرور ها برای اجرای بازی ابتدا از یک نقشه یا مرحله شروع می کنند و تعدادی کاربر در آن نقشه یا مرحله تا زمان رسیدن به اهداف مرحله یا طی کردن زمان خاصی در آن مرحله می مانند. این کاربران هر کدام به صورت اصطلاحاً یک Client به سرور متصل می شوند و اگر اجازه دسترسی به بازی از طرف سرور به آنها داده شود آنها به شکل یک کاربر در مرحله یا نقشه بازی ظاهر می شوند و می توانند بازی شان را شروع کنند. سرور همچنین می تواند تعدادی کاربر را که توسط هوش مصنوعی رایانه کنترل می شوند و اصطلاحاً به آن bot می گویند را در بازی بفرستد. هدف سبک حریف کشی کاملاً واضح است. کاربران باید در این بازی سعی کنند سایر کاربران در بازی را از پای درآورده و بکشند. به این کار علاوه بر کشتن اصطلاحاً frag هم می گویند. بازی پس از یک دوره زمانی خاص به صورت خودکار به اتمام می رسد که این زمان می تواند چیزی در حدود 5 دقیقه تا 1 ساعت باشد. امّا بازی می تواند در صورتی که تمام بازیکن ها به غیر از یک نفر که برنده است کشته بشود یا این که شما تعداد حداکثری برای کشته شده ها تعیین کنید که به عنوان مثال اگر بازیکن های کشته شده به فلان مقدار حد نصاب رسید بازی به پایان برسد. بازی های Quake Arena و Unreal Tournament پرشهرت ترین بازی ها از این نوع سبک محسوب می شوند.

تیم و شراکتی: در بازی های با سبک تیمی یا مرحله گروهی سرور یک background را اجرا می کند. بازیکن ها همچون سبک حریف کشی از هر جای جهان وارد سرور شده و اصطلاحاً log in می شوند و در بازی شریک می شوند. با این تفاوت نسب به سبک قبلی که هر کدام از این ها وارد یک تیم می شوند که این تیم ها در ضدیت با یکدیگر ساخته شده است و تنها کاربران نمی توانند هم تیمی های خودشان را بکشند. نوع شراکتی که تا حدود شبیه به نوع تیمی است هم به این صورت است که در نوع شراکتی شما عضو تیم های یکسانی می شوید که تیم مخالف شما در حقیقت bot هایی هستند که توسط رایانه کنترل می شوند و شما باید به همراه همتیم هایتان که کاربران همچون خودتان هستند با این bot ها بجنگند.
مشهورترین نمونه بازی بر پایه تیم بازی Battlefield 1942 می باشد. در این بازی کاربر می تواند یک تانک، جیپ، کشتی، زیردریایی و هواپیما را کنترل کند. کنترل اسلحه مرکزی تانک و کنترل مسلسل موازی یا فقط راه رفتن در بازی. در نوع حریف کشی تیمی هدف کاملاً ثابت به بیرون انداختن سایر دشمنان در صورت امکان است و در برخی حالات گرفتن پرچم دشمن هم جزئی از هدف می شود.
البته در طراحی بازی و به خصوص بافت زنی لباس کاربران این خیلی مهم است که توسعه دهنده بازی هم بتواند طوری طراحی کند که دوستان و دشمنان در بازی قابل تشخیص باشند به عنوان مثال هر گروه لباسی با رنگ خاص داشته باشد و یا هر طرح دیگری که به ذهن می رسد.
یک عیبی که سبک تیمی دارد ظاهر شدن اشخاصی است که اصطلاحاً به آن کشنده تیم یا team killers می گویند. این کاربرانی هست که هم تیمی های خودشان را می خواهند بکشند و از ادامه بازی محرومشان کنند. زیرا اینها تحت پوشش کاربرانی از تیم مخالف هستند یا اینکه آنها نمی دانند که بازی چگونه کار می کند و یا نمی دانند چه کسانی هم تیمشان است و نیست. اینها بسیار عذاب آور هستند برای همین تعداد زیادی از بازی های تحت شبکه تحت این سبک دارای تنظیمات بی اثر کردن آتش دشمن می باشد که باعث می شود دیگر هیچ کاربری نتواند به کاربر دوستش آسیب بزند. هر چند که این روش باعث ایجاد یک حالت غیر طبیعی می شود که کاربر بتواند با اسلحه به راحتی به دشمنان بتازد در حالی که نگران آسیب دیدن هیچ کدام از هم تیمی هایش در این آتش بازی و تاخت و تاز نباشد. راه دیگری هم هست و آن این است که یک مدیر در سرور نظارت کند و هر کاربری را که به هم تیمی اش شلیک کرد و او را تعمداً از پای در آورد او را از بازی حذف و نام کاربری اش را ببندد هرچند که این کار به صورت خودکار توسط خود سرور هم شدنی است.
صبر کنید، کشتن هم تیمی در هر جنگ سنگینی ممکن است رخ بدهد. پس شما می توانید یک میزان حداکثری از کشته شدن هم تیمی تعیین کنید و وقتی که به آن میزان رسید دستور رسیدگی و ملاحظه را توسط سرور بدهید. به عنوان مثال در بازی مذکور یعنی Battlefield 1942 بسیاری از مردم به خاطر رسیدن به اسلحه ای خاص هم تیمی خودشان را می کشتند. یعنی زمانی که شخص و هم تیمی شان به سمت یک اسلحه حرفه ای می رفتند و هر دو هدفشان یکسان بود یعنی برداشتن آن اسلحه خاص جنگی بین آن دو در می گیرد که مسلماً یکی از آنها آن یکی را کشته و به هدفش یعنی رسیدن به آن اسلحه خاص می رسد. همچنین برخی از هم تیمی ها چون می خواهند کنترل یک ماشین را بدست بگیرند هم تیمی راننده را برای رسیدن به این کار می کشند!
گرفتن پرچم: در این نوع بازی بازیکن ها در تیم سازمان یافته هستند. هر تیم دارای تعدادی پرچم یا میله پرچم می باشد که باید از آن نگهبانی کند و وظیفه بازیکنان login شده در سرور این است که به محل نگهداری پرچم سایر تیم ها بروند و به پرچم آنها را مورد سرقت قرار دهند و پرچم را به دوش گرفته به سمت یک میله پرچم ببرند و هر بار بازیکنان باید پرچم دزدیده شده را تا میله پرچم خانه خودشان مدیریت کنند و در نتیجه این کار امتیازی دریافت می کنند. اگر بازیکن در حین حمل پرچم آن را در فضای مجازی گم کند این پرچم می تواند توسط یکی از اعضای دیگر گروه یا گروه دشمن پیدا شود و برداشته شود.
پایان این نوع بازی ها معمولاً پس از یک دوره معین از زمان یا زمانی که تعداد مشخص پرچم دزدیده شده به حد نصاب برسد می باشد. چند نسخه از انواع متفاوت این بازی ها منتشر شده که می توان به سری بازی های Delta Force اشاره نمود.
جهان مجازی مداوم: بعد از معرفی سه سبک نوع بازی بر پایه قسمت اکنون می خواهیم نوع دوم بازی ها را یعنی جهان مجازی مداوم Presistent virtual world را توضیح دهیم. مدیریت بانک اطلاعاتی سرور تمام کاربران را برای بازی معین ثبت می کند.برای ثبت نام در بازی شما همیشه نیاز به ریختن پول در حدود 5 الی 15 دلار در ماه دارید. سپس شما اجازه پیدا می کنید که بازی را در 24 ساعت هر روز آن ماه بازی کنید. کاربر همچون یک انسان واقعی در یک محدوده شهری بزرگ، قاره یا حتی یک سیاره در جهان مجازی مداوم زندگی کرده و با گذشت زندگی تجربه کسب می کند. همچون زندگی واقعی اینجا یک سیستم سیاسی بعلاوه سیستم افتصادی قرار دارد یا شما باید رهبری گروهی از انسان ها را به عهده بگیرید.
این نوع کاملاً با نوع بازی بر پایه قسمت متفاوت است. در یک بازی با نوع جهان مداوم اطلاعات درباره کاربر (همچون نشان های شخصیت، سلامتی، تجهیزات و...) هر بار در خود بازی اجازه ذخیره شدن می گیرند. هنگامی که شما بعد از گذشت چند ساعت، روز یا هفته دوباره شروع می کنید به بازی شخصیت شما همانی است که قبلاً با آن بازی می کردید و با همان مشخصات و قابلیات. در کل این نوع از بازی دو مولفه مرحله بندی و اطلاعات مداوم دارد که جداگانه آنها را بررسی می کنیم.
مرحله بندی: مرحله بندی بازی در حقیقت نوعی وجه های شخصیت ها را با یک سیستم هوشمند از قدرت ها و نشان ها کاربر را می تواند از انجام چیز خاصی از بازی بهبود بدهد. میزان کردن تمام این قدرت ها و نشان ها به کلاس های خاص شخصیت یک وظیفه زمان بری است. بعد از این که بازی جدیدتان را منتشر کردید Patch های بازی هم می تواند تنظیم کند که اثر چگونگی رفتارهای کاربر در قدرت کاربر نفوذ پیدا می کند. اگر شما قدرت شخصیتتان را بهبود بدهید در حقیقت مرحله بندی شخصیتتان را فراخوانی کرده اید زیرا قدرت بالا رفته شما را به مرحله بعدی می برد.
اطلاعات مداوم: اگر بازیکن در جهان مجازی مداوم اجازه دهد تمام قدرت شخصیت ذخیره می شود. سخت افزار سرور تمام اطلاعات را در دیسک بانک اطلاعاتی قرار می دهد و این کار تا زمانی که سرور در حال اجرا و کار می باشد انجام می گیرد. تمام اطلاعات بازی در حالت مداوم قرار دارد. از این رو جهان مجازی به موجودیت و بازشدن خودش ادامه می دهد زیرا هزار بازیکن دیگر همچنان در حال بازی در این جهان هستند. مشکل اینجاست که کاربرانی که در بازی جدی نیستند به زمان بیشتری برای دست یابی به مراحل یکسان با سایر افرادی که مشغول بازی امّا جدی تر و چند ساعت در روز هستند نیاز دارند.
این می تواند کاربرانی را که نمی توانند بیشتر بازی کنند نا امید کند. در این حالت برخی بازی هایی که محیط شان این چنین مشکلی داشت از چند راه حل استفاده کردند. یکی از راه حل ها این است که بازیکن هایی که نمی توانند خیلی زیاد آنلاین باشند و بازی کنند می توانند با سرعتی ضعیف تر قدرت خودشان را زیاد تر کنند. راه دیگر که در برخی بازی ها استفاده شده این است که بازیکن می تواند در قبال دادن پول در دنیای واقعی به بازی ساز در قبال آن قدرت و اشیای لازم در جهان مجازی را بگیرد.
RPG در مقابل MMORPG: بازی های با سبک Role-Playing Game بازی هایی هستند که در یک محیط offline بازی می شوند. امّا به صورت جهان گستر قابل استفاده است. همچون نوع جهان مجازی مداوم می توان ابعاد و احتمالات جدید را به آن اضافه نمود که باعث بزرگترشدن آن می شود. و در نتیجه این کار و فراخوانی قابلیت آنلاین و چند کاربره سبک جدیدی با نام massive multiplayer online role playing mm درست می شود.
دستان میلیون ها انسان که بخواهند یک عنوان بین المللی را با موفقیت امتحان کنند چیز ساده ای نیست. بیشتر مردم کسانی هستند که آنلاین هستند و به یک سرور واحد متصل هستند. و بیشتر وظیفه جامع تیم مدیریتی این است که بازی با حداکثر سرعت و توانایی اجرا گردد. این سوال است که چرا یک بزی واحد نمی تواند در یک سرور واحد اجرا شود؟ بسیاری از استراتژی ها از شکافتن وظایف درون قسمت مدیریت حکایت می کند. امّا عمومی ترین راه این است که یک نمونه چند کاربره را بر روی چندین سرور اجرا نماییم. طوری که کاربر نتواند شخصیتش را از این سرور یک سرور به دیگری ببرد.
حهان مجازی برای این که چند بار نمونه های خاص بازی را اجرا کند به هر کدام از دیگری متصل نمی شود. اگر شما می خواهید به صورت آنلاین با دوستنتان بازی کنید باید ابتدا مطمئن شوید که تمام اعضای تیم از یک سرور یکسان استفاده می کنند. شما هنگامی که در حال ساختن شخصیتتان هستید می توانید سرورتان را انتخاب نمایید. دیگر استراتژی که می توان از آن استفاده نمود استفاده از اقلیم متفاوت یا سستم سیاره ای است. در این نوع سیستم هر قسمت از جهان در یک سرور اجرا می شود. هنگامی که کاربر می خواهد از گوشه ای از جهان به گوشه ای دیگر که در سروری دیگر قرار دارد برود باید یک بارگذاری کوچک را ببینید و تحمل کند. در پس زمینه در حقیقت اطلاعات شخصیت از این سرور در حال انتقال به سرور دیگر است. برتری این روش در این است که تمام کاربران در یک جهان مجازی کاملاً یکسان قرار دارند.
Lag: آخرین چیزی که شما باید در این فصل در مورد بازی های چند کاربره بدانید Lag می باشد. اگر شما همواره یک بازی اکشن آنلاین را بازی کرده باشید شما می خواهید بیشتر در مورد این اصطلاح بدانید زیرا بیشتر مردم از توابع پیام استفاده می کنند. Lag به سرعت خیلی کم سرور برمی گردد و بدترین حالت و موقعیت می باشد. اگر یک نفر تایپ کند: "Laaaaaaaaaag" او به این اشاره می کند که اتصالش به سرور بسیار ضعیف است. زیرا اتصال ضعیف در حقیقت یک توقف کوتاه در بازی یا موقعیت و محل بازیکن است که باید این موقعیت و محل بازیکن هر چند ثانیه تغییر کند و کاربر تخمین می زند که حرکتش کاملاً توسط سرور به درستی محاسبه نمی شود.
Lag دسته ای از رکود در بازی است. در حقیقت این مشکل زمانی اتفاق می افتد که بسته های اطلاعاتی نیاز به گردش از سرور به client را دارند. تنها راه حل مشکل lag این است که مساله انتقال اطلاعات چه از طریق اینترنت یا شبکه داخلی را درست نمایید و خطی با سرعت بیشتر بگیرید. بیشتر این مشکلات ناشی از سرعت کم انتقال اطلاعات از client می باشد. اگر ارتباط به شکل peer to peer است که تمام بازیکن ها به نوعی باید این مشکل را تحمل کنند. هرچند که گاهی اوقات این احتمال هم وجود دارد که مشکل lag شدن به خاطر overload شدن سرور با برخی از client ها باشد. در این حالت تعویض سرور می تواند مشکل را حل کند.
فصل دوم: ساختار شبکه
ساختار پایه سیستم شبکه می تواند بر دو دسته تقسیم شود: 1. Peer to Peer 2. Client/Server اینجا بحث بر سر چگونگی اتصال فیزیکی رایانه به شبکه نیست امّا چگونگی اتصال رایانه به دیگری مطرح است. هر رایانه واحد مانند رایانه خودتان را شما می توانید بدون چند سخت افزار دیگر به دو صورت Peer to Peer یا Client/Server با سایر کاربران به صورت شبکه ای اجرا نمایید. تنها موجود واحدی که به شبکه متصل می گردد فقط برنامه ها هستند. همچون یک Client بعلاوه یک سرور یا یک peer که هیچی بیشتر از یک تکه نرم افزار نیست. شما حتی می توانید دو بازی تحت شبکه تیرانداز اوّل شخص را در عوض یکی بر روی رایانه تان اجرا نموده و با کمک دو مانیتور مشغول بازی شوید. اکنون ما به تفصیل هر دو صورت Peer to Peer و Client/Server را توضیح خواهیم داد.
Peer to Peer: در یک شبکه Peer to Peer هر Client به تمام دیگر Client ها متصل است. این قاعده باعث می شود که هر Client مستقیماً با دیگران اتصال داشته باشد. در این حالت به هیچ سروری برای اتصال میان این دو نیازی نیست. شکل زیر ساختار Peer to Peer را بهتر نشان می دهد:

مزیت این نوع ارتباط:
•    هر کاربر در هر زمان که بخواهد می تواند براحتی از شبکه خارج شود بدون این که موجب اختلال یا اشکال در ارتباط سایر کاربران شود.
معایب این نوع ارتباط:
•    این نوع ارتباط دارای ترافیک زیاد است زیرا، اگر بخواهیم پیامی به تمام Client ها ارسال کنیم باید هر Client پیام را به Client دیگر ارسال کند.
•    عدم تمرکز در کنترل، اینجا مکان آشکاری برای ذخیره لیست بالاترین امتیازها، لیست کاربران ban شده، لیست تنظیمات بازی و... وجود ندارد.
•    به طور عادی در میزان حداکثری کاربران به دلیل وجود ترافیک محدودیت وجود دارد.
Client/Server: در شبکه های Client/Server یک موجودیت یا entity یک سرور است و این گروهی بازی یا هر ابزار کاربردی شبکه است که در شبکه اجرا می شود. دیگر موجودیت ها که می خواهند قسمتی از شبکه باشند تا بتوانند به سرور متصل شوند. اگر این دسترسی را بگیرند، Client ها در شبکه قرار می گیرند. اگر یک پیام نیازمند ایجاد فرآیندی مابین Client ها است یک Client اجازه ندارد که آن پیام را مستقیماً به Client مورد نظر ارسال نماید و اصلاً چنین چیزی غیر ممکن است چون آن Client اصلاً اتصالی با Client مورد نظر ندارد. در عوض تمام پیام ها به سمت سرور ارسال می شود و آن سرور پیام را به تمام Client ها یا آن  Clientکه باید پیام به دستش برسد ارسال می کند. برای درک بیشتر تصویر زیر را ببینید:

در این حالت از بازی های رایانه ای، سرور وظیفه ای در اجرای بخش مجازی بازی ندارد. سرور می تواند نمونه بازی را فقط شروع کند و به کاربران اجازه بازی بدهد. بنابر این سرور نیازی به محاسبه خروجی گرافیکی بازی ندارد. در عوض سرور در پراکندن پیام ها و محاسبه Collision detection و چیزهایی مانند این در Client متمرکز شود.
البته شما می توانید به سرور اجازه دهید تا خروجی مجازی بازی را هم ارائه دهد در این حالت سرور می تواند یک نمونه از بازی را هم در خودش اجرا کند.
تکنولوژی Client/Server معمولاً در بیشتر بازی های رایانه ای استفاده می شود. مخصوصاً در بازی های تحت شبکه بسیار بزرگ نظیر بازی های سبک MMORPG. سرور تمام نیازهای خودش در بانک اطلاعاتی را به کار می برد و با تمام اطلاعات مداوم کار می کند زیرا Client اجازه دسترسی مستقیم به اطلاعات را هرگز ندارد. پس از همه، هکرها می توانند کدهای یک Client را آلوده کنند و کارهایی را که نباید انجام بدهند را انجام دهند. پس باید مراقب این مساله هم باشید.
اکنون می خواهیم مزایا و معایب این نوع از اتصال شبکه ای را برای شما توضیح دهیم:
مزایای شبکه Client/Server:
•    این نوع شبکه برای بازی های شبکه بزرگ که از بانک های اطلاعاتی استفاده می کنند بسیار مناسب است.
•    هر Client فقط با یک موجود در شبکه کار می کند که آن موجود سرور است.
•    این نوع شبکه دارای یک ارتباط متمرکز و قوی مابین Client ها است.
•    امنیت بالا، Client ها به اطلاعات مرکزی بازی دسترسی ندارند.
معایب شبکه Client/Server:
•    اینجا یک نقطه شکست وجود دارد(اگر سرور قطع شود در حقیقت تمام شبکه قطع شده است)
•    سخت افزار خاصی برای سرور نیاز است.
•    سرور به قدرت نیاز دارد.
فصل سوم: تکنولوژی شبکه
به طور اساسی، تنظیمات سیستم ارتباط شبکه ای با استفاده از کابل های مسی یا فیبرهای شیشه ای انجام می گیرد. این کاملاً شبیه به تلفن است که صدای شما را ارسال می کند. صدای شما در فرآیندی قرار می گیرد و مورد انتقال و مبادله با یک تلفن قرار می گیرد. و صدای شما برای کسی که در حال صحبت با آن هستید بازپخش می شود. همچون کار این سیستم اگر شما قسمتی از سیستم را دریافت کنید باید بدانید که چه نوع فرمت اطلاعاتی در آن است. برای نمونه تعدیل کردن اطلاعات صوتی با سیگنال های دیجیتالی ضدیت دارد. کاربردهای یکسان برای یک شیکه رایانه ای استفاده از پروتکل های شبکه است. این پروتکل ها تعریف می کنند که چگونه اطلاعات وارد شونده سازماندهی شوند؟ و اطلاعات دارای چه محتوای مورد سفارش ما باشند؟
مشهورترین پروتکل های شبکه عبارتند از: IPX/SPX، NETBEUI و TCP/IP (که برای اینترنت استفاده شده) هستند. البته بسیاری از پروتکل های دیگر هم هستند که ما می توانیم در مورد آن ها در ادامه بحث کنیم امّا ترجیح می دهم اوّلین بحثم را از OSI Model شروع کنم که قسمت IP پروتکل TCP/IP می باشد.
OSI Model: مدلی از توسعه فرآیند ارتباطات است که نام کامل آن
Open System Interconnection می باشد و در سال 1970 توسط سازمان استاندارد جهانی (ISO) پایه گذاری شد. مدل OSI بر پایه 7 لایه ساخته شده است. یک فرآیند ارتباطات همواره در بالاترین لایه آغاز می شود و به سمت پایینم تا هفتمین لایه که پایین ترین لایه است کار می کند.
پس از این که اطلاعات از شبکه ارسال شد، اطلاعاتی که وارد می شوند در مقصد هستند جایی که آنها باید از میان تمام هفت لایه دوباره بروند. فقط در حالت معکوس، هنگامی که آنها دوباره به بالاترین لایه می رسند کار اجرایی که انتظار آن می رود را بگیریم. در طی این روند هر لایه با اطلاعاتی که به کار آن می آید و به آن نیاز دارد کار می کند. یک تصمیم مهم است که در لایه چهارم باید انجام بگیرد. این تصمیم به این صورت است که شما باید تعیین کنید بسته اطلاعاتی آیا به صورت بسته User Datagram Protocol (UPD) ارسال شود یا به صورت Transmission Control Protocol (TCP) تمامی لایه ها در تصویر زیر نشان داده شده است.

لایه 7 Application: لایه Application لایه ای است که در آنجا کاربران راه های ارتباطی را تنظیم می کنند. این Application همان ابزاری است که شما با آن کار می کنید همچون ابزار Email خودتان، FTP Client یا حتی مرورگر اینترنتی تان هر ابزاری که از پروتکل شبکه برای انتقال اطلاعات در شبکه استفاده می کند حتماً این لایه را به عنوان لایه هفتم و بالاترین لایه خودش استفاده می کند.
لایه 6 Presentation: این لایه هسته معرفی اطلاعات است. به این مفهوم که آیا این اطلاعات برای حمل و نقل در شبکه رمز گذاری شده اند؟ آیا اینها فشرده هستند؟ و از این قبیل مسائل... اگر اطلاعات رمز گذاری و فشرده سازی شده اند در صورت لزوم باید اطلاعات ورودی بازشده و از حالت فشرده شده خارج شوند.
لایه 5 Session: این لایه تعیین می کند که چگونه اتصال مابین Client و Server شروع یا تمام گردد. این لایه همچنین هسته همزمانی ارتباطات شبکه ای را بررسی می کند و ابزار را برای ارسال اطلاعات در اتصالات اجرایی را توانا می کند.
لایه 4 Transport: یک لایه Transport خطاهای اطلاعاتی را که باید ارسال بشوند را بررسی می کند و بسته ها را در یک مسیر سریعتر و راحتتر انتقال می دهد. در اضافه این لایه بررسی می کند که وضعیت جاری شبکه درست بسته های اطلاعاتی را ارسال و دریافت می کند. و مهمترین کاری که این لایه انجام می دهد تعیین نوع بسته ها بر اساس دو نوع User Datagram Protocol (UPD) یا Transmission Control Protocol (TCP) می باشد.
لایه 3 Network: برای بسته هایی که در مقصد شبکه پیدا می شوند، این لایه آنها را به یک آدرس مجهز می کند جایی که ر مقصد می توانند پیدا بشوند. در این لایه کدها و سیگنال ها تحت یک پروتوکل اینترنتی که اختصاراً به آن IP می گویند نام گذاری می شوند و برای آنها IP تولید می شود.
لایه 2 Data-Link: لایه Data-Link سطحی از درایو سخت افزار شبکه هست که مربوط به فرآیند تحلیل اطلاعات است. بررسی اعتبار ثبات ایمنی هر بسته قبل از ارسال با این لایه است. این لایه همچنین اتصال مابین دونقطه حقیقی سخت افزاری در شبکه را آماده می کند و بسته های اطلاعاتی را به قطعه های کوچک که می تواند برای هر شخص ارسال شود می شکاند.
لایه 1 Physical: در نهایت لایه فیزیکی، که لایه ای است که قطعه های کوچک را بر روی کابل شبکه ارسال می کند و آنها را بر اساس سیگنال Hi/Lo تغییر می دهد. این بیت ها به صورت فیزیکی به مقصد الکترونیکی (یا نوری) ارسال می شوند اطلاعات در این سطح را اصطلاحاً (بر روی سیم) می گویند.

فصل چهارم: پروتکل ها
بدون پروتکل ها، ارتباطات شبکه امکانپذیر نیست. مشکل یکسانی که از ارتباطات شبکه ای می آید این است که رایانه می بیند که اطلاعاتی وارد شد امّا اگر نداند که از چه پروتکلی استفاده شده است نمی تواند اطلاعات را تفسیر کند. رایانه باید بداند که اطلاعات چگونه به صورت تکه و کوچک شده گذاشته شده است. همچنین باید بداند که از چه قطع کننده ای برای شکستن اطلاعات به بسته ها و قطعه های کوچک استفاده شده است. اگر از یک پروتکل یکسانی برای ارسال و دریافت اطلاعات استفاده نشود سخت افزار نمی تواند بیت ها و بایتها را با هم در پیامش بگذارد و به شبکه به صورت اصل ارسال کند. همانطور که قبلاً اشاره شد پروتکل های متفاوتی برای شبکه وجود دارد امّا من در اینجا قصد دارم دو پروتکل مشهورتر و مهم تر در همه زمینه های شبکه از جمله بازی های تحت شبکه را توضیح بدهم که آن دو پروتکل TCP و UPD می باشد.
UPD :UPD بی شباهت به TCP یک راه غیرخطی برای ارسال اطلاعات می باشد. توانایی آن در اتصال مداوم کاربر به شبکه پایدار نمی باشد. از این رو مقصد اطلاعات باید هربار که اطلاعات ارسال می شود نامگذاری شود. همچنین یک پروتکل بی ضمانت می باشد زیرا پس از ارسال اطلاعات لینک مابین منبع و مقصد بریده شده و نیست بازخوری که آن را بررسی کند و ببیند که آیا بسته ها به سمت مقصد ایمن و بدون هیچ مشکلی و کامل ارسال شده اند یا نه.
از جمله مزایای استفاده از این پروتکل این است که با از قلم انداختن بررسی ثبات و صحیح بودن ارائه اطلاعات سرعت بالایی را پیدا می کند. در یک بازی رایانه ای و زمانی که شما باید 20 بار در ثانیه موقعیت هر کدام از اشیایی که حرکت می کند را ارسال نمایید حالا اگر دو یا سه بسته گم شد که مشکل خیلی خاصی نمی تواند ایجاد کند و این Client می تواند در آخرین موقعیتی که قرار داشته باقی بماند. این جلوگیری تا حدود زیادی باعث ترافیک می شود. شما همچنین می توانید یک بررسی کننده امنیتی برای UPD بگذارید. هنگام ارسال بسته شما می توانید از هر دو شیوه غیر ضمانت شده برای ارسال پیام های مهم تان استفاده نمایید همچون اطلاعات مربوط به موقعیت و همچنین می توانید از شیوه امنیتی برای پیام های مهم بازخورد از مقصد همچون گلوگله خوردن یک شخصیت استفاده نمایید. همچنین شما می توانید از هر دو پروتکل UPD و TCP استفاده نمایید. برای پیام هایی که گم شدن شان ایراد اساسی در روند بازی ایجاد نمی کنند از UPD استفاده کرده همچون پیام های مربوط به مختصات و موقعیت شخصیت ها و برای پیام های حیاتی که بسیار مهم هستند همچون باختن شخصیت ها یا تیر خوردن آنها از TCP استفاده کنید. امروزه موتورهایی وجود دارند که از هر دو این پروتکل ها استفاده می کنند که به عنوان نمونه می توان به موتور Torque Game Engine اشاره نمود که در بخش شبکه از هر دو پروتکل استفاده می کند.

TCP/IP: پروتکل TCP که مختصر Transmission Control Protocol می باشد یک پروتکل اتصال محور یا Connection-Oriented می باشد. این پروتکل تنها در صورتی اجازه ارسال اطلاعات را به شما می دهد که یک اتصال پایدار بین منبع و مقصد وجود داشته باشد. سپس این اتصال بعد از نگهداری تا زمانی که به طور واضح پایان پیدا کرده و شما آن را می بندید ادامه پیدا می کند. از این رو این اتصال تا زمانی که برنامه در حالت اجرا است پایدار باقی مانده و هیچ خطایی نباید در سخت افزار رخ دهد. TCP یک پروتکل ضمنت شده است زیرا هر بسته اطلاعاتی که ارسال می شود به صورت درونی تایید شده و در شکلی از بازخورد مقصد است. اگر این بازخورد در داخل مقدار معینی از زمان بعد از ارسال پیام وارد نشود ارسال کننده به صورت خودکار دوباره پیام را ارسال می کند.
TCP از اینرو یک چهره و وجه ضمانت شده ای را از خودش در زمینه ارسال و دریافت بسته های اطلاعاتی دارد. هیچ بسته اطلاعاتی نیست که گم بشود زیرا اگر بسته اطلاعاتی م بشود یک رونوشت از آن دوباره ارسال می شود. هیچ خطایی رخ نمی دهد زیرا تمام بسته های زاید نادیده گرفته می شوند. دیگر مزایای TCP این است که بسته های اطلاعات خرد شده را به شکل سفارشی دریافت کرده و آنها از قبل به صورت سفارشی به شکل یک بسته دوباره سازی می شوند و به سمت مقصد ارسال می شوند. در عین حال شما می توانید میزان کارکرد آن را ببینید. این پروتکل یک ترافیک اضافی ایجاد کرده و زمان کار شبکه را به پایین ترین شکل ممکن می برد امّا در عوض مطمئن هستید که هیچ کدام از بسته های اطلاعاتی شما گم نمی شود.

فصل پنجم: API های شبکه
شما تمام ابزارهای 7 لایه مدل OSI را ندارید زیرا بیشتر این لایه ها همواره در سخت افزار کار می کنند. پس بری دسترسی بیشتر به لایه ها و سخت افزار شما نیاز به کار با API دارید. همانطور که می دانید API لایه ای ارتباطی بین برنامه نویس و سخت افزار است که برنامه نویس با کمک آن می تواند به سخت افزار دسترسی و کنترل داشته باشد. در زیر ما می خواهیم لیستی از API های مفید تحت شبکه را که به شما دسترسی آسان به سخت افزارهای شبکه را می دهند معرفی نماییم.
Berkeley Sockets :Berkeley Sockets اولین API بودی که برای تعریف TCP/IP استفاده شد. در 1986 این API برای نسخه های متفاوت سیستم عامل ها در دسترس بود. که البته بیشتر سیستم عامل UNIX از آن استفاده می کرد. در 1991 نسخه 4.3 این API اوّلین نقطه شروع برای توسعه دهندگان تحت ویندوز آن بود. امروزه این API بیشترین استفاده را در سیستم عامل Linux و Unix دارد و حتی به یک API استاندارد تحت شبکه برای این سیستم عامل ها تبدیل شده است.
Windows Sockets: این API قسمت کاملی از سیستم عامل ویندوز می باشد. به طور جاری نسخه 2 آن در دسترس است و خیلی شبیه به نسخه قبلی اش می باشد و استانداردهای یکسانی با API که قبل معرفی شده یعنی Berkeley Sockets دارد. همچنین اگر شما برنامه تحت شبکه تان را با کمک این API بنویسید می تواند با دیگر API ها کامپایل شود.
WinSock دارای چهره هایی است که شما آن را نمی توانید در Berkeley Sockets پیدا کنید. ساختن یک برنامه تحت شبکه در ویندوز آن هم به آسانی هر چه تمام تر. این می تواند پیام های بر پایه تکرار را در سوکت های غیر همزمان را بالا ببرد. که این مکانیزم باعث می شود تا سوکت ها وقایع را به شما اعلام کنند. (مانند وارد شدن اطلاعات جدید) WinSock یک API بسیار کارا و موثر و استفاده آسان است امّا مانند تمام API های سطح پایین شما باید با توابع سطح پایین و استانداردها و معیارهای متعارف یکنواخت دست و پنجه نرم کنید.
DirectPlay: یک مولفه از بسته مشهور و محبوب DirectX. DirectPlay کتابخانه ای است که از سوی مایکروسافت ارائه شده است و بیشتر برای پشتیبانی از توسعه دهندگان ابزارهای تحت شبکه به قصد ساخت بازی ساخته شده است. در این کتابخانه مقدار زیادی توابع سطح بالا وجود دارد. همچون یک محلی که برای Login بازیکن ها در بازی های شبکه قرار گرفته و یک مسیریاب پیام و اتصالگرهای متفاوت. اگر شما به اسناد کمکی این کتابخانه نگاه کنید یک راهنمای جامع که بیشتر وظیفه اش تامین نیازهای کسی است که می خواهد با کمک این کتابخانه یک بازی تیرانداز اوّل شخص تحت شبکه را بسازد.
یک اشکالی که در کتابخانه DirectPlay وجود دارد این است که فقط برای ویندوز در دسترس است و فضاهای سرورهای MMORPG نمی توانند تحت ویندوز اجرا بشوند و باید حتماً تحت Linux یا Unix اجرا بشوند. همچنین اگر از این API استفاده کنید شما باید یک برنامه سرور جداگانه را با استفاده از یک API شبکه دیگر تکمیل می کنید یا اگر از این API استفاده کردید باید فقط از سرور ویندوز استفاده کنید. ذکر این نکته هم ضوروری است که چون این API از یک پروتکل اختصاصی استفاده می کند به خاطر همین اتصال یک Client که از DirectPlay استفاده می کند به یک سرور غیر از DirectPlay بسیار سخت می باشد.
در هر صورت به عنوان حرف آخر از هر پروتکل، API و ابزارهای تحت شبکه استفاده می کنید معیارتان فقط افزایش کارایی، سرعت و دقت باشد و سعی کنید از ابزارهایی استفاده کنید که بیشترین رضایت را برای کاربر فراهم کند. فراموش نکنید که انتظار یک بازیکن تحت شبکه از بازی ساز مسلماً این نیست که بازی شما با بالاترین کیفیت گرافیکی ممکن ارائه شود بلکه با توجه به این که سرعت اتصالات اینترنت در ایران در ضعیف ترین حالت ممکن قرار دارد و از طرفی رایانه هایی که در کافی نت ها قرار دارند ممکن است از سرعت و قدرت کافی برای شبکه داخلی برخوردار نباشند این است که در کمترین سرعت ممکن هم بازی بتواند بهترین جواب را بدهد و سرعت انتقال بسته های اطلاعاتی مابین رایانه و سرور یا اگر Peer to Peer استفاده می کنید مابین رایانه ها در بیشترین حد ممکن باشد و در حقیقت سعی کنید معیارهایتان اوّل بر اساس سرعت بیشتر و بعد بر اساس دقت باشد. هرچند که همانطور که گفته شد با یک کار دقیق می توان از تمامی پروتکل ها استفاده کرد و از دقت و سرعت هر دو پروتکل استفاده نمود.









کلمات کليدي :

CopyRight © : بازی ساز تخصصی ترین تارنمای آموزش ساخت بازی دو بعدی سه بعدی و طراحی بازی در ایران (کلیه حقوق مادی و معنوی این مقاله مربوط و متعلق به تارنمای بازی ساز است.)
برداشت مطالب فقط با اجازه کتبی از مدیر تارنما و ذکر منبع امکان پذیر است .

نوشته شده در تاریخ : 13 آبان ماه ، 1388 (753 مشاهده)

[ بازگشت ]
تبلیغات شما در اینجا


Powered By PHPNuke All Right Reserved bazisaz Team