معرفی زبان های برنامه نویسی برای ساخت بازی های ویدیویی!
در این مقاله به معرفی هفت زبان برنامه نویسی مورد استفاده برای بازی ها می پردازیم.با وجود این که معمولا افراد بازی های کامپیوتری را یک صنعت واحد می دانند، از نظر فنی دنیای بازی های ویدیویی بسیار متنوع است. مثل برند های ورزشی که خط تولید های مختلف برای رشته های مختلف ورزشی دارند، بازی های ویدیویی نیز بستر های مختلف برای اجرای بازی ها دارند. از کنسول های بازی مثل Xbox و PlayStation گرفته تا کامپیوتر های شخصی و موبایل ها، برنامه نویس های بازی باید مخاطب مورد نظر را در انتخاب کرده و قبل از نوشتن هر گونه کد، نیازمندی های آن ها را در نظر بگیرند.
بستر های موبایلی مثل iOS و اندروید، بزرگترین بازار بازی های ویدیویی را تشکیل می دهند. به گفته ی وب سایت Statisa، بیش از 900 میلیون دستگاه موبایل هوشمند در تمام دنیا در سال 2014 به ثبت رسیده اند؛ بخش اعظمی از جمعیت انسان ها توسط این دستگاه ها تحت پوشش است. صنعت بازی های ویدیویی از این موضوع آگاهی کامل دارد و به همین دلیل است که همه در حال ایجاد بازی هایی برای گوشی های هوشمند هستند.
آیا شما هم به دنبال ایجاد بازی های خود هستید؟ چه برای کنسول، چه برای PC و چه برای گوشی هوشمند، باید در ابتدا زبان برنامه نویسی مربوطه را فرابگیریم. در این مقاله، نگاهی به رایج ترین زبان های برنامه نویسی برای بازی های ویدیویی در بستر های مختلف خواهیم انداخت. بسترها و فن آوری های مورد استفاده را بررسی و فریم ورک های رایج را با هم مقایسه خواهیم کرد.
باید توجه داشته باشید که ایجاد بازی های ویدیویی فقط کدنویسی نیست. آماده سازی منابع مثل صدا، پس زمینه، تصاویر و طراحی بازی معمولا وقت بیشتری از فاز کدنویسی احتیاج دارد. هم چنین، انتخاب یک زبان برنامه نویسی به عنوان بهترین، کاری بیهوده است چون که برای ایجاد یک بازی ممکن است ابزار های خاصی نیاز باشد که در خیلی از زبان ها به آن توجهی نشده باشد.
ایجاد بازی های ویدیویی برای کنسول ها
Xbox شرکت مایکروسافت و PlayStation شرکت سونی دو بازیکن اصلی صنعت بازی های کامپیوتری هستند. برای PlayStation، یک خط تولید موبایلی نیز به نام PlayStation Mobile وجود دارد. SDK های مورد استفاده بر مبنای Mono هستند پس زبان رایج برای آن #C است. کدنویسی بازی های قدیمیتر PlayStation در ++C انجام میشدند. همانطور که انتظار می رود برای بازی های بزرگتر ابزار های بزرگتر و قویتر مورد نیاز است. برای این دسته از بازی ها در انتهای این مقاله بخش مجزایی در نظر گرفته ایم. اگر به این موضوع علاقه دارید به انتهای مقاله مراجعه کنید.
برنامه نویسی بازی های دسکتاپ
کامپیوتر های شخصی تاریخچه ی طولانی در زمینه ی بازی ها دارند. بازی ماشین سواریLotus یکی از پرخاطره ترین بازی ها برای کسانی است که هم سن هستند. این بازی برای اجرا بر روی ماشین های X286 طراحی شده بود.
در آن زمان، برخی بازی ها با زبان های دلفی و پاسکال نوشته می شدند. دلفی زبان برنامه نویسی محبوب آن دوران بود ولی C هم وجود داشت. البته، خیلی از این بستر های برنامه نویسی الان به کلی منسوخ شده اند و زبان های پیشرفته تر جای آن ها را گرفته اند.
هم اکنون، بستر های برنامه نویسی مثل CUDA مقبولیت بیشتری در بین بازی سازان دارند و این به خاطر تقاضای زیاد برای گرافیک بالا و واقعیتر به علاوه ی انیمیشن قوی و جزییات بیشتر می باشد. برای تامین کردن این سطح از انتظارات، محاسبات سریع ویدیویی زیادی نیاز است. CUDA این امکان را می دهد تا محسابات ویدیویی به شکل هم زمان و موازی اجرا شوند و برنامه نویس در موفقیت بازی ها نقش زیادی دارد.
در تصویر پایینی، کد های CUDA را ببینید که یک برنامه نویس با آن سرو کار دارد. ایده ی اصلی برنامه نویسی در CUDA این است که باید همه چیز به شکل موازی انجام شود و محاسبات باید تا حد امکان محدود و بهینه سازی شوند. کد ها تقریبا شبیه C و ++C هستند اما برخی از Element های آن متفاوت اند.
Python نیز با وجود این که به اندازه ی DirectX و OpenGL محبوب نیست، بازی های رایانه ای را پشتیبانی می کند. برای مثال، خیلی ها نمی دانند بازی های دزدان دریایی کارائیب شرکت دیزنی و بازی EVE Online در Python نوشته شده اند. PyGame یک کتابخانه است که بسیار راحت و ساده می توان در آن بازی نوشت. Python برای شروع زبان ساده ای است و نوشتن بازی های رایانه ای با آن نیز نباید کار سختی باشد.
اگر ما وب را بستری برای بازی های کامپیوتری در نظر بگیریم، سال هاست که Flash، بازی های زیادی را برای ما به ارمغان آورده است. اما، WebGL و جاوا اسکریپت رشد بیشتری داشته اند؛ دلیل اصلی آن امنیت پایین Flash می باشد. با متحول شدن مرورگرها، جاوا اسکریپت توانست محاسبات لازم بازی های کامپیوتری را سریع تر انجام دهد. با کمک وب سایت زیر می توانید سرعت محاسبه ی موتور های جاوا اسکریپت را اندازه گیری کنید:
این برنامه برای شروع هک و یا ساختن بازیها در بین بسترهای Pc و موبایل، بسیار مناسب است. موتور های جاوا اسکریپت مثل Phraser ،EaselJS ،CarftyJS BabylonJs و PixiJS همه گزینه های مناسبی برای کدنویسی بازی های ویدیویی هستند.
در تصویر زیر نمونه ای از کد های نوشته شده در CraftyJS را برای یک بازی پینگ پونگ مشاهده می کنید:
WebGL یک فن آوری مورد استفاده توسط اکثر موتور های JS می باشد. این فن آوری با کمک API ها، رندر سه بعدی در مرورگر ها را امکان پذیر می کند. این کار با کمک المنت Canvas درHTML انجام می شود. برای اطلاعات بیشتر در این زمینه به لینک زیر مراجعه کنید:
http://www.html5rocks.com/en/tutorials/webgl/webgl_fundamentals/
ساخت بازی های موبایل
بازار بازی های موبایل سه بازیکن اصلی دارد: اندروید(جاوا)، (iOS ،Objective-C) و ویندوزفون (#C). به خاطر این که اندروید در جاوا نوشته می شود، موتور های زیادی برای نوشتن بازی در آن وجود دارد. iOS برای کدنویس های گزینه های زیادی مثل SpriteKit و Sparrow ارائه می کند.
سایر ابزار های کد نویسی
Blender یکی از رایج ترین ابزارهای ایجاد پس زمینه، انیمیشن و رندر برای بازی های ویدیویی است. این برنامه یک پروژه Open Source می باشد و با کاربرد های بسیار، عملکرد بسیار خوبی داشته است.
Unreal Engine صنعت بازی های ویدیویی را با حضور خود در سال 1998 شگفت زده نمود. این موتور بازی با کمک ++C ایجاد شده و آخرین نسخه ی آن Unreal Engine 4 می باشد. شرکت بازی های Epic یک زبان برنامه نویسی برای کار با این موتور را با نام Unreal Script ساخته است. کد های زیر از مثالی در این زبان برنامه نویسی گرفته شده اند.
مایکروسافت از موتور Unity برای بازی های Xbox استفاده می کند اما این موتور در سایر بستر ها نیز قابل دسترسی است. این موتور با کمک زبان های #C و ++C گسترش یافته و بستر های زیادی از PS3,4 گرفته تا Xbox و Apple TV و ویندوزفون را پشتیبانی می کند. یک اکوسیستم کامل برای کدنویسی بازی ها در اختیار کاربر قرار گرفته است. کد های زیر مربوط به Unity میباشند:
همانطور که می بینید، کدها بسیار ساده اند؛ درست شبیه به یک متن ساده. برای مثال موتور Unity از روش ()GetKey برای مطابقت داده های کاربر با پارامتر ها استفاده میکند. هم چنین، به یا داشته باشید که در متن بالا KeyCode.UpArrow یک ثابت(constant) است.
همانطور که می بینید، برنامه نویس ها ابزار ها و زبان های زیادی را برای ایجاد بازی ها در اختیار دارند و با کمک آن ها میتوانند بازی های مختلف را برای بستر های گوناگون بسازند. اما قبل از انتخاب ابزار و زبان برنامه نویسی، باید در مورد مخاطبین مورد نظر و بستر هدف تصمیم گیری کنید.
مثلا نوجوان های امروزی علاقه ی چندانی به نشستن پشت میز و کار با موس و کیبورد ندارند. این استاندارد ها مال ده سال پیش بود و الان محبوبیتی ندارند. آنها بیشتر ترجیح می دهند بازی ها را در گوشی های هوشمند و تبلت های خود تجربه کنند.
گیمر های امروزی به دنبال رابط های لمسی مثل تبلت ها، نوت بوک ها و صفحات لمسی و گوشی های هوشمند هستند. آنها در فضایی رشد کرده اند که همه چیز لمسی است و شما باید قبل از نوشتن بازی هایتان، این اطلاعات را برای انتخاب فن آوری مناسب در نظر بگیرید.
نتیجه گیری :
بازی های ویدیویی به عنوان یکی از پرفروش ترین و پر طرفدارترین صنایع در دنیای امروزی به شما می روند. از همین رو، بستر های مختلفی برای ارائه ی این بازی ها به شکل کنسول و کامپیوتر شخصی و دستگاه های موبایلی هم اکنون در اختیار همگان قرار گرفته است. زبان های برنامه نویسی مورد استفاده برای بازی ها نیز به نوبهی خود، تلاش زیادی برای ارائهی بستر های مناسب و ابزار های کاربردی در جهت تولید بازی های بهتر و با کیفیت تر انجام داده اند.
یکی از چالش های مهم برای ایجاد بازی ها، حجم بالای محاسبات ویدیویی است که سخت افزار و نرم افزار پیچیده و بسیار قوی می طلبد. خوشبختانه، فن آوری پردازش موازی که در برخی از ابزار های بالا به آن اشاره کردیم توانسته اند تا حدی تقاضای بالای گیمر ها برای گرافیک بهتر بازی ها را تامین کنند.