آشنایی با موتور بازیسازی GODOT
“به قلم آرش فریدی”
“این مقاله در راستای سلسله همکاریهای پردیسگیم و مجله بازینامه منتشر میشود”
GODOT موتور بازی سازی دو بعدی و سه بعدی متن باز (Open Source) تحت لیسانس MIT است که توسط جامعه Godot Engine ساخته و برای اولین بار در فوریه ۲۰۱۵ معرفی شد. نسخههای ویندوز، مک و لینکوس این نرمافزار را میتوان بهصورت رایگان ازوبسایت رسمی این موتور تهیه کرد.
GoDot توانایی منتشر کردن بازی برای پلتفرمهای ویندوز، لینوکس، اندروید، iOS، BlackBerry 10، HTML5، PlayStation3،PlayStationVita و نینتندو 3DS را دارد و ایجاد نسخههای ویندوز ران تایم نیز در دست ساخت است.
هدف پروژه Godot این بوده که محیط بازیسازی یکپارچهای را برای کاربرانش فراهم کند. این موتور به بازیساز اجازه میدهد که از صفر و بدون نیاز به هیچ ابزار دیگری (ابزار ساخت فایلهای گرافیکی یا صوتی) شروع به ساخت بازی خود کند. معماری ساخت بازی این موتور بر اساس اصل درختهای تو در توی صحنه (scenes) پایهگذاری شده است. تمام منابع مورد استفاده در ساخت بازی از اسکریپتها گرفته تا ابزار گرافیکی در قسمتی از حافظه کامپیوتر نگهداری میشود که در اصل همان پایگاه دادههای بازی است که این خود باعث آسانتر شدن دسترسی و تغییر دادن منابع در حین ساخت بازی شده است.
ویژگیهای موتور:
ویرایشگر و UI:
اینجا جایی است که معجزه اتفاق میافتد، عکس ۱ بالا مربوط به یک بازی پلتفرمر در حال ساخت است. پنجره سمت چپ جایی است که صحنه ساخته میشود. همانطور که میبینید در بالای صفحه چهار تب وجود دارد که شما میتوانید در فضای دو بعدی یا سه بعدی کار کنید. میتوانید به قسمت اسکریپت نویسی بروید یا اینکه از قسمت «کمک» برنامه استفاده کنید. آیکونهای بالا سمت چپ درواقع منوها هستند و قابلیتها و ابزارهای زیادی در پس زمینه صحنه و وارد کردن نهفته است.
قسمت بالا سمت راست تصویر گراف صحنه شما است: در این قسمت شما میتوانید دنیای خود را بسازید، ببینید، یا گسترش دهید. با یک کلیک کوچک میتوانید اجزایی جدیدی به دنیای خود اضافه کنید و با استفاده از دکمه + میتوانید نمونههای بیشتری از چیزهایی که قبلاً ساختهاید به بازی اضافه کنید. بقیه آیکونها مربوط به اسکریپتهای سیم کشی شده و سیگنالهای مربوط به آبجکتهای دنیای شما است.
در زیر گراف صحنه شما با پنجره بازرسی روبهرو هستید که به شما اجازه ست کردن جزئیات آبجکتهای بازی را میدهد. همانطور که مشاهده میکنید این موتور از رویکرد ماژولار/جزئی استفاده میکند که این روزها بسیار محبوب است. این ویژگی اجازه بررسی بصری و تغییر جزئیات بازی را به شما میدهد.
برنامه نویسی و Scripting:
خیلی وقتها از ابزارهایی سخن به میان میآید که با استفاده از آنها میتوان بدون نوشتن یک خط کد بازی ساخت. این موضوع سالها است که آرزوی طراحان بازی مستقل است. این نیاز حتی توسط طراحان بازی در کمپانیهای بزرگ هم سالها است که حس میشود.
امروزه خیلی از بازیها بدون نوشتن حتی یک خط کد منتشر شدهاند ولی اگر واقعگرا باشیم معمولاً نیتجه نهایی آنها یک جورهایی ناقص، زیادی پیچیده و یا ناکارآمدتر از محصولاتی است که کد زدن در آن دخیل بوده است.
در این راستا، Godot قدمهای خوبی برای رسیدن به این هدف برداشته است. اولین و مهمترین آنها استفاده از سیستم صحنهها (scene system) است. هدف این کار در اول زیاد مشخص نیست ولی با پیشروی بیشتر متوجه میشویم که به کمک شایانی به برنامهنویس پروژه خواهد کرد. به معنای دیگر این سیستم بار سنگین مسئولیت معماری برنامهنویسی را از روی دوش برنامه نویس برمیدارد. زمانی که با استفاده از سیستم صحنه بازیای را طراحی میکنید؛ کل پروژه به صحنههای مکمل یکدیگر شکسته میشود.
برای کسانی که تجربه خوبی در برنامهنویسی دارند این نوع معماری با معماری MVC کاملاً متفاوت است. Godot با جایگزین کردن ویژگیهای معماری سیستم صحنه به جای معماری MVC نوید نتیجه بهتری را به ما داده است.
Godot همچین از الگو توسعه دادن (extend pattern) برای اسکریپتهای استفاده میکند. به این معنی که اسکریپتها میتوانند از طریق تمام کلاسهای موتور توسعه داده شوند.
بازیهای موتور Godot یا توسط زبان C++ و یا زبان اختصاصی این موتور به نام GDScript برنامهنویسی میشوند. این زبان اسکریپتنویسی بسیار شبیه به Python است و ویژگیهای سختگیرانهای دارد و برای استفاده هر چه بهینهتر از موتور Godot نوشته شده است و سازندگان اهداف خود را از ساختن این زبان اسکریپتنویسی چنین بیان کردند:
-جواب کوتاه این است که، ما ترجیح میدهیم برنامهنویس وقت و انرژی کمی برای یادگیری GDScript مصرف کند که بعداً تجربه یکپارچهای از آن را داشته باشیم. به جای آنکه او را به استفاده یک زبان آشنا ترغیب کنیم که نتایج آن تجربههای بدتری است.
-GDScript بیش از هر زبان دیگری میتواند از صفر تا صد استفاده از موتور کاربرد داشته باشد و یادگیری آن بسیار ساده است. بیش از یکی دو روز طول نمیکشد که استفاده از آن برای شما راحت میشود و زمانی که از آن بیشتر استفاده کردید مزایای آن را بیشتر متوجه خواهید شد. پس خواهشا از یادگیری این زبان غافل نشوید، پشیمان نخواهید شد.
-رابطه برنامه کاربردی C++ این موتور نیز مفید و راحت برای استفاده است و ابزاری عالی برای بهینهسازی قسمتهای مختلف پروژه است ولی استفاده از آن به جای GDScript در کل پروسه تولید بازی، تلف کردن وقت است.
-درست که سالها است ما با استفاده از زبانهای اصلی بازیهای مختلفی را ساخته و منتشر کردهایم اما هیچ کدام از آنها کاربری بهتر نسبت به کاربری که حال GDScript داشته را نداشتهاند.
موتور Godot همراه با یک ویرایشگر اسکریپت داخل خود ارائه میشود که ویژگیهای مرسوم هر ویرایشگر مثل دندانهگذاری خودکار (auto indentation) ، هایلایت کردن سینتکسها و کامل کردن کد را دارا است. این ویرایشگر همچنین دارای سیستم مشکل زدایی (debugger) با قابلیتهایی مثل معین کردن نقاط شکست (breakpoints) نیز هست.
Godot دارای موتور فیزیک دوبعدی و سه بعدی مخصوص به خودش میشود که ویژگیهای پایه یک موتور فیزیک استاندارد را دارا است.
نکات مثبت
-دارا بودن لایسنس MIT که اجازه دسترسی به فایلهای اصلی موتور را به هرکسی میدهد و کاربران میتوانند بر اساس نیاز خود آن را تغییر دهند.
– حجم پایین برنامه(حدود ۳۰ مگابایت)
-اجازه ساخت انیمیشنهای ساده و فایلهای صوتی که کسانی که برنامهنویس هم نیستند هم میتوانند لذت استفاده از این موتور را تجربه کنند.
نکات منفی
-استفاده از آن برای کسانی که با پیشزمینه یونیتی به سمتش آمدهاند کمی مشکل است.
-موتور فیزیک آن نسبت به موتور فیزیک Box2D ضعیفتر ظاهر شده است.
-پردازش زبان GDScript نسبت به زبانهای دیگر مورد استفاده در موتورها کندتر است.
نتیجه گیری
با توجه به رایگان بودن این موتور و جامعه بزرگی که در حال استفاده و توسعه از آن هستند، میتواند گزینه خوبی برای تیمهای کوچک و یا حتی برنامهنویسان تک نفرهای باشد که ایدههای بزرگی را در سر میپروانند.
از طرف دیگر یادگیری این موتور بسیار ساده است و اگر پس زمینه برنامهنویسی زیادی نداشته باشید هم میتوانید ظرف مدت کوتاهی با GDScript آشنا شده و شروع به برنامهنویسی در محیط Godot کنید.
پیشنهاد من به شما این است که حتماً نگاهی به این موتور بیاندازید. به خصوص اگر به محیطی شبیه یونیتی و از نوع رایگان نیاز دارید. این موتور بازیسازی کوچک قابلیتهای زیادی دارد که میتوانید با کشف کردن آنها میتوان لذت استفاده از آن را چند برابر کرد.
پردیس گیم