بازیهای چند نفره چگونه کار میکنند؟
در نگاه اول عجیب به نظر میرسد که دو یا چند بازیکن یک تجربه ثابت را در سراسر شبکه بهاشتراک میگذارند، درست مشابه زمانی که یک بازی جمعی را در دنیای واقعی انجام میدهند. برنامهنویسان به خوبی از این موضوع اطلاع دارند، اما برای برخی از کاربران این موضوع عجیب است. اینکار به ظاهر جادویی تحت عنوان برنامهنویسی بازیهای تحت شبکه انجام میشود.
ارتباطات نظیر به نظیر
در آغاز بازیها به صورت نظیر به نظیر در شبکه قرار می گرفتند و کامپیوترها در یک توپولوژی مش کاملاً متصل به تبادل اطلاعات با یکدیگر میپرداختند. این مدل را امروزه در بازیهای RTS هنوز مشاهده میکنید، هرچند میزان استقبال از آنها کمتر شده است. ایده اصلی در بطن بازیها به این صورت است که بازی را به صورت یک سری مراحل چرخشی و مجموعهای از پیامهای خط فرمان طراحی کنید تا در هنگام پردازش در ابتدای هر چرخش، تغییراتی در بازی ظاهر شود. بهطور مثال، حرکت نیروهای خودی، واحد حمله، طراحی ساختمانها و المانهای مختلف بر مبنای یک برنامهنویسی ثابت و ایستا انجام میشد. تنها چیزی که برای شبکهسازی این مدل بازیها نیاز است، این است که دستورات به ترتیب اجرا شوند و بازیکنها از یک حالت اولیه اقدام به بازی کنند. البته توضیح فوق کمی ساده است، اما نکات مهم پیرامون بازیهای RTS را شرح میدهد.
بازیهای تحت شبکه با چه چالشهایی روبرو هستند؟
پیشبینی اینکه یک بازی موفق میشود کار سختی است. بهطور مثال، باید اطمینان حاصل کنید که بازی روی تمامی دستگاهها به شکل یکسانی انجام میشود. بهطور مثال، بازیکنان میتوانند از مسیرهای مختلفی به هدف برسند و اینگونه نباشد که همگی در یک زمان مشخص و از یک مسیر خطی یکنواخت به نقطه موردنظر برسند و با دشمنان روبرو شوند. اطمینان از این موضوع که بازی روی تمامی سامانهها به یک شکل اجرا میشود اهمیت زیادی دارد. به همین دلیل باید پیش از انتشار رسمی بازی، از طریق شبیهسازی تمامی مراحل و حرکات بازی ارزیابی شوند تا هیچگونه باگی در اجرای زنده مشاهده نشد. سومین چالش مهم در این زمینه زمان تاخیر است. اگر پهنای باند سرور محدود باشد، بازیکنان با زمان تاخیر صدا یا حرکات را دریافت میکنند و این مسئله آسیب جدی به بازی وارد میکند. به همین دلیل مهم است که هر بازیکنی که حرکتی در بازی انجام میدهد با یک تاخیر کاملا جزیی اتفاقات را مشاهده کند. چهارمین محدودیت بزرگ در این زمینه هنگامی است که افراد پیامهای فرمانی را ارسال میکنند که قرار است وضعیتی را تغیی دهد. برای دستیابی به یک چنین حالتی، لازم است تا همه بازیکنان از یک حالت پایه کار را آغاز کنند. با وجود این محدودیتها، این مدل بهطور طبیعی مناسب بازیهای RTS است و امروزه نیز در بازیهایی مانند "فرمانده و تسخیر" ، "عصر امپراتوریها" و "استارکرفت" به کار گرفته شده است. با توجه به اینکه در بازیهای RTS وضعیت بازی توسط هزاران واحد تشکیل شده چارهای وجود ندارند جز اینکه دستوراتی که باعث پیشرفت وضعیت بازی میشوند به شکل متنی مبادله شوند.
برنامهنویس شبکه کیست و چه کاری انجام میدهد؟
برنامهنویسی بازیهای شبکه یکی از پیچیدهترین زمینههای برنامهسازی است، زیرا برنامهنویسان شبکه نه تنها نیاز به درک عالی از تکنیکهای برنامهنویسی دارند، بلکه باید در مورد پروتکلهای شبکه و مهندسی سرویسگیرنده / سرور نیز دانش زیادی داشته باشند.
برنامهنویس بازیهای تحت شبکه چه مهارتهایی دارد؟
بدون اغراق باید بگوییم که برنامهنویسی شبکه یک کار ساده نیست. این یک حوزه مهندسی بسیار پیچیده است. بهطور معمول مسیری که افراد برای تبدیل شدن به یک برنامهنویس شبکه پشت سر میگذارند به این صورت است که در مقطع دبیرستان ابتدا در رشته ریاضیات ثبت نام میکنند یا به هنرستان رفته و در شاخه کار و دانش یا فنی و حرفهای در رشته کامپیوتر ادامه تحصیل میدهند. برخی از افراد پس از اتمام تحصیلات دوره متوسطه به سراغ ادامه تحصیل در مقطع کارشناسی در رشته علوم کامپیوتر یا مهندسی نرمافزار میروند و پس از اتمام دوره تحصیل، مدتی را به عنوان کارآموز در شرکتی مشغول به کار میشوند تا با مبانی اولیه طراحی بازیها و اصول زیربنایی دنیای کسبوکار آشنا شوند. با توجه به اینکه مدرک دانشگاهی کمک فراوانی در این زمینه میکند، پیشنهاد میکنیم برای ورود به این رشته به دنبال کسب حداقل مدرک کارشناسی باشید، البته برخی برنامهنویسان این حوزه مدرک کارشناسی ارشد دارند، اما با مدرک کارشناسی نیز قادر به ورود به این حوزه هستید. بهطور معمول افردی که به عنوان برنامهنویس بازیهای تحت شبکه کار خود را آغاز میکنند باید در ارتباط با حوزههای زیر مهارت کافی داشته باشند:
- کلاینت/سرور: در عصر بازیهای اکشن، محدودیتهای نظیر محدودیتهای ارتباطات نظیر به نظیر در انجام بازیهایی در سبک دوم، کاملا آشکار است، در حالی که امکان انجام این سبک از بازیها روی شبکههای محلی به شیوه روان وجود دارد، اما انجام این بازی از طریق اینترنت یک کابوس است. اگرچه امکان اتصال دو ماشین DOOM به یکدیگر از طریق اینترنت با استفاده از یک ارتباط مودم وجود دارد، اما بازی به کندی انجام خواهد شد و تقریبا امکانپذیر نیست. به همین دلیل باید مشخص کنید که بازی قرار است برای چه مدل ارتباطاتی ساخته شود. بهطور مثال، انجام بازی Doom روی شبکههای محلی کاملا ایدهآل است و مشکل خاصی از بابت محدودیت سرعت وجود ندارد، زیرا زمان تاخیر در کمترین حالت ممکن قرار دارد و شاهد هیچ لگی در بازی نخواهید بود. برای ساخت بازیهایی فراتر از شبکههای محلی باید به جای الگوی نظیربهنظیر به سراغ الگوی کلاینت/سرور بروید. در این حالت، تمامی بازیکنان کلاینت هستند و به یک رایانه که سرور نام دارد و وظیفه برقراری ارتباط را دارد نیاز دارند. در این حالت نیازی نیست بازی روی سامانه کاربران نصب شده باشد و تنها کافی است روی سرور میزبانی شده باشد. بنابراین باید در مورد الگوی کلاینت/سرور اطلاعات کافی و جامعی بهدست آورید.
- دانش کافی در مورد موتورهای بازی: بهتر است در مورد مکانیک گیم پلی و نیازهای موتورهای بازی اطلاعاتی کسب کنید.
- دانش سرورها: بهطور معمول بازیهایی که مینویسید باید با مهندسی سرور تلفیق شوند، بنابراین باید دانش کافی در این زمینه داشته باشید.
- موتور بازیساز: با توجه به اینکه برای ساخت بازیها به یک موتور بازیساز نیاز دارید، ابتدا باید سبک بازی که قصد ساخت آنرا دارید را مشخص کرده و در ادامه موتور بازیساز مناسب را انتخاب کنید.
- زبان برنامهنویسی: نکته مهم دیگری که باید به فکر کسب مهارت در ارتباط با آن باشید زبان برنامهنویسی است. انتخاب نوع زبان به موتور بازیساز که انتخاب کردهاید بستگی دارد.
- دانش کافی در مورد مدل OSI: با توجه به اینکه یک برنامهنویس بازیهای تحت شبکه شما بهطور مستقیم با پروتکلهای مختلف شبکه مثل TCP/IP در ارتباط است، بنابراین باید در مورد مباحث مهمی مثل لایههای مختلف، برنامهنویسی سوکت، مسیریابی، مدیریت پهنای باند و زمان تاخیر اطلاعات کافی را کسب کنید.
- حل مسئله: بهطور معمول برنامههای تحت وب و به ویژه بازیها با مشکلات فنی عجیب و گاهی مواقع ناشناختهای روبرو میشوند که برای حل آنها باید از رویکرد حل مسئله استفاده کنید.
برنامهنویس شبکه با چه افراد یا شرکتهایی کار میکند؟
بهطور معمول برنامهنویسان گیمپلی ارتباط نزدیکی با برنامهنویسان شبکه دارند. اینکار به آنها کمک میکند در مورد عملکردهای شبکه اطلاعات فنی مناسب را دریافت کنند. علاوه بر این، محیط کاری این افراد استودیوهای بازیسازی است.
به این مطلب چند ستاره میدهید؟(امتیاز: 4.5 - رای: 1)