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