هفت زبان مناسب توسعه بازی با موتور Unity — مقایسه کاربردی
هفت زبان مناسب توسعه بازی با موتور Unity — مقایسه کاربردی
توسعه بازی اینک آسانتر از هر زمان دیگری است. پلتفرمهای توسعه بازی مانند موتور Unity امکان ایجاد همه چیز را از پلتفرمرهای ساده ۲ بعدی تا بازیهای تیراندازی اول-شخص ۳ بعدی با جزییات زیاد فراهم ساختهاند. Unity برای توسعهدهندگان کوچک رایگان است و آموزشهای زیادی در مورد بهترین روشهای استفاده از ویراستار آن به منظور ساخت نمونه اولیهای از ایدههای مفهومی ارائه شده است.
البته یادگیری شیوه استفاده از Unity بهره چندانی برای شما ندارد، زیرا هسته اصلی بازی، آن کدی است که رفتار بازی را تعیین میکند. درک این که کدام زبان برای یادگیری توسعه بازی دشوارتر است حائز اهمیت محسوب میشود؛ اما در مورد Unity مصداق ندارد، زیرا این پلتفرم کار توسعه بازی را بیش از آنچه تصور میکنید ساده کرده است.
۱٫ بهترین انتخاب: #C
هر کس که به تازگی کار با Unity را آغاز کرده است یا هر فردی که دانشی قبلی در مورد برنامهنویسی شیءگرا دارد به خوبی اطلاع دارد که #C زبان مناسبی است که برای کار با Unity باید آموخت. در واقع #C تنها زبانی است که ارزش یادگیری برای این پلتفرم را دارد و دلایل خوبی نیز برای این گفته خود داریم.
Unity از Mono استفاده میکند که یک پیادهسازی چند پلتفرمی از فریمورک NET. مایکروسافت است. #C زبان ابتدایی NET. است و همه کتابخانههای Unity با استفاده از کد #C نوشته شدهاند. در واقع بیان این نکته که #C زبان Unity است اغراق محسوب نمیشود. Unity مشخص ساخته است که از نظر آنها #C تنها زبانی است که برای استفاده از این موتور بازیسازی تائید میشود.
این خبر خوبی است، زیرا #C زبان خوبی محسوب میشود و یادگیری آن نیز آسان است. Unity تنها یکی از دلایل مختلفی است که ما را تشویق به یادگیری زبان برنامهنویسی #C میکند. اگر در این زمینه مبتدی هستید، این زبان کاملاً در دسترس شما است. توسعه بازیها موجب میشود که یادگیری شما از این زبان سازمانیافته شود و اهداف مبتنی بر پروژه منجر به ایجاد درک خوبی از موضوعات جدید میشود.
Unity با معرفی job system و ECS در #C آن چه را که در این زبان برنامهنویسی قابل اجرا بود، بسیار پیشرفت داده و کامپایلر کاملاً جدید آن نیز سریعتر از هر زمان دیگری است.
۲٫ جایگزین آماده: جاوا اسکریپت
Unity از جاوا اسکریپت نیز پشتیبانی میکند که UnityScript نام دارد. جاوا اسکریپت از زمان انتشار خود یک رقیب دوشادوش #C به عنوان یک زبان توسعه با امکانات کامل برای Unity بوده است. مرجع اسکریپتنویسی Unity مثالهایی هم به زبان #C و هم جاوا اسکریپت برای اغلب عناصر ابتدایی کتابخانه دارد.
این وضعیت برای توسعهدهندگانی که سابقه کار با جاوا اسکریپت دارند، بسیار مفید است، چون علیرغم تفاوتهای روش سازماندهی کد، میتوانند با ساختار کار آشنا شوند. با این حال مشکلی نیز وجود دارد.
با این که UnityScript مشابه جاوا اسکریپت به نظر میرسد؛ اما چنین نیست. UnityScript دارای کلاس است که جاوا اسکریپت ندارد. برخی امکانات جاوا اسکریپت مانند اعلانهای چندگانه متغیر و استفاده اختیاری از نقطهویرگول در UnityScript وجود ندارند.
جستجو به دنبال توضیحات کمکی در پروژههای Unity همواره موجب ایجاد سردرگمی در اغلب افرادی میشود که آن را به چشم جاوا اسکریپت و نه UnityScript مینگرند. نتایج هر دو دنیای طراحی وب و توسعه بازی در این محیط در هم آمیخته شده و تفاوت بین این زبانها نقطه تمرکز توسعهدهندگان جاوا اسکریپت محض است.
به همین دلیل جای شگفتی نیست که Unity اعلام کرده قصد دارد پشتیبانی از UnityScript را متوقف کند و بنا بر اعلام Unity در طی یک چارچوب زمانی مشخص پشتیبانی از این زبان برنامهنویسی را متوقف خواهد کرد. شما همچنان میتوانید از جاوا اسکریپت در Unity استفاده کنید؛ اما وقتی میدانید که بالاخره زمانی پشتیبانی نخواهد شد، چرا باید چنین کاری بکنید؟
۳٫ گزینه قدیمی سوم: Boo
در روزهای نخست عرضه Unity گزینهای برای استفاده از Boo نیز وجود داشت. Boo زبانی شبیه به پایتون است. با توجه به این که طراح Boo به نام «رودریگو بی. دی اولیویرا» برای Unity کار میکرده، استفاده از آن شگفتانگیز نبوده است. این زبان باNET. و Mono سازگار است و میتواند به طور کامل با موتور بازی پیادهسازی شود، بنابراین اشکال کار کجاست؟
اشکال این زبان آن است که افراد زیادی از آن استفاده نمیکنند. به نظر میرسد که این زبان تلاش میکند صرفاً از پایتون تقلید کند. در طی زمان Unity پشتیبانی از Boo را متوقف کرده است و تغییرات آتی UnityScript موجب خواهد شد که همه اسکریپتهای در Unity بیاستفاده شوند. ممکن است برخی افراد فکر کنند که این یک فرصت از دست رفته محسوب میشود، چون Boo تلاش عمدهای در جهت پیادهسازی ساختاری شبیه به پایتون برای برنامهنویسیNET. بود. با این حال عاشقان پایتون گزینه دیگری نیز در اختیار دارند.
۴٫ گزینه قدیمی: IronPython
اگر میخواهید به توسعه بازی بپردازید، پایتون زبان مناسبی برای شما محسوب نمیشود؛ اما غیر ممکن نیز نیست. «چارلی کالورت» (Charlie Calvert) در بلاگ جامعه توسعهدهندگان مایکروسافت مشخص ساخته است که چگونه میتوان کدهای پایتون را از #C اجرا کرد؛ اما این کار به جسارت زیادی نیاز دارد. تقریباً ده سال بعد، IronPython همچنان در مراحل توسعه قرار دارد.
به طور خلاصه، شما باید کتابخانههای IronPython را از گیتهاب (+) دانلود کنید و در پروژههای #C به آنها ارجاع بدهید. بدین ترتیب امکان فراخوانی اسکریپتهای پایتون مانند هر کتابخانه دیگری فراهم میشود. IronPython همچنین امکان فراخوانی کتابخانههای NET. را از پایتون فراهم ساخته است. با این که این کارکرد بسیار مفید به نظر میرسد؛ اما از آنجا که Unity بر #C تکیه دارد این کارکردها کمک زیادی به توسعهدهندگان نمیکند.
IronPython و پروژه موازی آن IronRuby موجب ایجاد پیوندی بین #C با زبان برنامهنویسی Ruby شدهاند. با این که این پروژهها جذاب به نظر میرسند؛ اما استفاده عملی در Unity ندارند.
۵٫ گزینه جذاب: Lua
یکی از پیادهسازیهای بهتر از زبانهای خارجی برای Unity به نام MoonSharp است که یک مفسر Lua محسوب میشود. این پروژه برای جایگزینی #C به عنوان یک زبان مستقل طراحی نشده است و بیشتر مانند یک پل بین این دو عمل میکند. کاربردهای عملی کاملی برای MoonSharp وجود دارند که میتوان در اختیار بازیکنان قرار داد تا حالتهای مختلف بازی را در زبان Lua بسازند. همچنین میتوان از آن برای توصیف اشیا و سطوح طراحی مستقل از کد بازی استفاده کرد.
اگر قبلاً در #C کدنویسی کرده باشید و به دنبال روشی جذاب برای ارتباط با کد خود هستید، MoonSharp ارزش بررسی کردن را دارد. از آنجا که MoonSharp به صورت رایگان در فروشگاه Unity عرضه شده است، میتوانید آن را مستقیماً درون پروژههای خود ایمپورت کنید.
۶٫ بهترین زبان برای افزونهها: ++C/C
با وجود این که کتابخانه خوبی برای Unity وجود دارد و همه ابزارها نیز برای #C موجود هستند؛ اما در پارهای موارد ممکن است به برخی افزونههای دیگر هم نیاز داشته باشید. دلایل اصلی افراد برای نیاز به این افزونهها شامل افزایش سرعت، یا دسترسی به مجموعه کد قبلاً نوشته شده در یک زبان دیگر است. ساخت این اسکریپتها در افزونههای DLL موجب صرفهجویی در بازسازی کد میشود و همچنین در پارهای موارد باعث افزایش عملکرد بازی خواهد شد.
در اغلب موارد C++ زبانی است که برای ایجاد افزونهها مورد استفاده قرار میگیرد؛ اما C نیز دقیقاً به همین منظور مورد استفاده قرار میگیرد. تا زمانی که کد به صورت یک افزونه DLL طراحی میشود، میتوان آن را درون پوشه افزونههای Unity فرار دارد و در کد به آن ارجاع داد. با این وجود اگر در زمینه کدنویسی در C یا ++C مهارت دارید، یادگیری #C نیز برای شما آسان خواهد بود.
۷٫ زبان جدید برای افزونهها: Rust
Rust زبانی است که هیاهوی زیادی در مورد آن به پا خاسته است. برنامه نویسان با تجربه به دلیل میزان کنترل زیادی که ارائه میکند عاشق آن شدهاند. این زبان همزمان از افتادن در تلههای نوشتن کدهای با امنیت پایین که در زبانهایی مانند C++ وجود دارد جلوگیری میکند. Rust توسط بنیاد موزیلا در سال ۲۰۰۹ ساخته شده است و روشی برای توسعه نرمافزارهای با عملکرد بالا به روشی سریع محسوب میشود.
با این که نوشتن کدهای Unity به صورت مستقیم در Rust امکانپذیر نیست؛ اما میتوان برخی تابعها و متدهای نوشته شده در Rust را در کد Unity مورد ارجاع قرار داد. در واقع این یک روش دیگر برای نوشتن افزونههای نیتیو محسوب میشود.
با بهرهگیری از مزیت Rust برای کار با دیگر زبانها میتوان تابعهای Rust را به وسیله خصوصیت DllImport در Unity مستقیماً درون کد #C فراخوانی کرد. طبیعی است که این کار به چند گام نیاز دارد که یکی از آنها یادگیری FFI یا «اینترفیسهای تابعهای خارجی» است.
یک انتخاب آسان
نگرش Unity به هر زبانی که غیر از #C باشد، کاملاً روشن است و بهبودهای مداوم در Unity با تکیه بر این رویکرد تک ذهنیتی صورت میگیرند. این نکته همراه با بهبود مداوم #C از سوی مایکروسافت موجب شده که موانع سر راه یادگیری #C برای توسعه بازی در پلتفرم Unity کاهش یابند.
با این حال این تنها گزینه شما محسوب نمیشود، Unity تنها یک موتور است و گزینههای نرمافزاری بسیار دیگری نیز برای توسعه بازی وجود دارند که میتوانید از بین آنها انتخاب کنید.
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.