گادو (موتور بازی)

بررسی کلی

گودو هدفش اینه که یه محیط توسعه بازی کامل رو ارائه بده. این کار به توسعه دهنده ها این امکان رو می ‌ده تا یه بازی رو از صفر درست کنن و به هیچ ابزار دیگه ای بیشتر از اون برای تهیه محتوا (منابع گرافیکی، صوتی و…) نیاز نداشته باشن. این معماری بر اساس یه مفهوم درختی از صحنه های تو در تو ساخته شده. تمام منابع بازی، از اسکریپت ها تا منابع گرافیکی، به عنوان بخشی از سیستم فایل کامپیوتر (به جای یه پایگاه داده) ذخیره می شن. این راه حل ذخیره سازی استفاده شده تا کار تیم های بازی سازی برای همکاری تو کد نویسی با استفاده از کنترل نسخه ساده تر بشه.
موتور از اجرا تو سیستم‌عامل های مختلف پشتیبانی می‌ کنه و اجازه می ده مشخصات فشرده سازی تکسچر و تنظیمات رزولوشن برای هر پلتفرم مشخص بشه. پلتفرم هایی که در حال حاضر پشتیبانی می شن شامل Linux, macOS, Windows, FreeBSD, OpenBSD / DragonFly BSD, Android, iOS, BlackBerry 10 و HTML5 هستن. همچنین از Work-in-progress برای Windows Runtime هم پشتیبانی می شه.

اسکریپت نویسی

بازی های گودو یا با سی پلاس پلاس، سی شارپ و زبان هایی با اتصالات GDNative مثل Rust, Nim و D یا با استفاده از زبان اسکریپت نویسی خود گودو نوشته می شن، جی دی اسکریپت، یه زبان برنامه نویسی سطح بالا، و همچنین یه زبان برنامه نویسی داینامیک و خیلی شبیه به پایتون هست. بر عکس پایتون، جی دی اسکریپت ویژگی مشخص کردن نوع متغیرها رو داره و برای معماری مبتنی بر صحنه گودو بهینه شده هست. توسعه دهنده های گودو گفتن که خیلی از زبان های برنامه نویسی مشابه (پایتون Namely, Lua و Squirrel) قبل از تصمیم به استفاده از زبان سفارشی ای که برای بهینه سازی و یکپارچگی ویرایشگر مناسب تر هست؛ مورد آزمایش قرار گرفتن.
ویرایشگر موتور شامل یه ویرایشگر اسکریپت با قابلیت Auto Indentation, Syntax Highlighting و تکمیل خودکار کد و یه دیباگر با امکان تنظیم Breakpoint ها و Program Stepping هست.

رندرینگ

موتور گرافیکی برای تمامی سیستم عامل های پشتیبانی شده از OpenGL ES ۳.۰ استفاده می کنه. موتور از Transparency, Normal mapping, Specularity, سایه های داینامیک با استفاده از Shadow map ها و Post-processing تمام صفحه افکت هایی مانند FXAA ،Bloom ،DOF  ،HDR، اصلاح گاما و Fog پشتیبانی می کنه. اون همچنین از یه زبان شیدر ساده که شباهت زیادی به یه زیر مجموعه GLSL داره پشتیبانی می کنه. شیدر ها رو می شه برای متریال ها، Post-processing و همچین رندرینگ دو بعدی استفاده کرد. شیدر ها به قسمت های Vertex و Fragment تقسیم می شن. همچنین امکان ایجاد شیدر ها توسط مدیریت نود ها تو یه ویرایشگر دیداری وجود داره.
همچنین یه موتور گرافیکی دو بعدی جداگانه وجود داره که می تونه به طور مستقل از سه بعدی کار کنه. نمونه هایی از ویژگی های موتور دو بعدی شامل نور ها، سایه ها، شیدر ها، Tile set ها، Polygon ها، Parallax scrolling، انیمیشن ها، فیزیک و Particle هست. همچنین امکان ترکیب دو بعدی و سه بعدی با استفاده از یه نود Viewport وجود داره.

ویژگی های دیگه

گودو یه سیستم انیمیشن با رابط کاربری گرافیکی برای ویرایش انیمیشن های اسکلتی، ترکیب کردن، درخت های انیمیشن، مورفینگ و کات سین های لحظه ای داره. تقریبا هر متغیر تعریف شده یا به وجود اومده تو یه بازی می تونه متحرک باشه. موتور از Bullet برای شبیه سازی فیزیک سه بعدی استفاده می کنه.
ویژگی های اضافی:

تاریخچه

توسعه گودو به دست «خوان لینیتسکی و اریل منزور» تو سال ۱۳۸۶ شروع شد. لینیتسکی تو یه ارائه گفت که اسم گودو به دلیل ارتباط اون با بازی ساموئل بکت تو «در انتظار گودو» انتخاب شده؛ چون اون نشون‌ دهنده آرزوی تموم نشدنی اضافه کردن ویژگی‌ های جدید به موتور هست برای رسیدن به یه محصول کامل؛ اما کامل و بی نقص شدن امکان نداره.
بهمن ۱۳۹۲، کد منبع گودو تو گیت هاب تحت مجوز MIT برای عموم منتشر شد.
۲۴ آذر ۱۳۹۳، گودو به نسخه ۱.۰ رسید، اولین نسخه پایدار ثبت و پشتیبانی از Lightmapping ،Navmesh و شیدر اضافه شد.
۳۱ اردیبهشت ۱۳۹۴ نسخه ۱.۱ جایگزین شد و اون هم با اضافه شدن «بهبود تکمیل خودکار تو ویرایشگر کد، ویرایشگر دیداری شیدر، یه API جدید برای سیستم عامل برای مدیریت صفحات و پنجره، باز نویسی موتور دو بعدی، پشتیبانی جدید از Navigation polygon دو بعدی، یک خروجی گیرنده Blender Collada خیلی بهتر شده و یه پوسته تاریک جدید». موتور جدید دو بعدی شامل شیدر ها، متریال ها، ترتیب بندی محور Z برای هر نود به طور مستقل ، نور ها، سایه ها با Polygonal Occluders، Normal mapping و پشتیبانی از فونت Distance-field هست.
۱۳ آبان ۱۳۹۴، گودو به حفاظت از آزادی نرم افزار پیوست.
گودو ۲.۰ تو ۴ اسفند ۱۳۹۴ به نسخه پایدار رسید. ویژگی های جدید شامل Instancing و Inheritance بهتر صحنه، یه مرورگر فایل سیستم جدید، ویرایش چندگانه صحنه و یک دیباگر پیشرفته هستن. به دنبال همین بود که تو مرداد ۱۳۹۵ نسخه ۲.۱، یه پایگاه داده منبع، پروفایلر و API پلاگین رو معرفی کرد.
۲ تیر ۱۳۹۵، گودو جایزه ۲۰ هزار دلاری Mission Partners که توسط Mozilla Open Source Support برگزار می شه رو گرفت تا برای اضافه کردن پشتیبانی از Web Socket ها، WebAssembly و WebGL 2.0 استفاده کنه.
نسخه ۳.۰، ۹ بهمن ۱۳۹۶ منتشر و «رندرینگ سه بعدی بهبود یافته، سازگاری با واقعیت مجازی و پشتیبانی از سی شارپ (به وسیله مونو)» اضافه شد. همچنین موتور فیزیک قبلی یعنی Built-in 3D با موتور فیزیک Bullet جایگزین شد.

کاربرد

اکثر بازی های استودیو OKAM با استفاده از گودو ساخته شدن؛ مثل The Interactive Adventures of Dog Mendonça & Pizzaboy که از اکستنشن Escoria adventure game هم استفاده می کنه. علاوه بر این تو برنامه درسی دبیرستان های غرب ویرجینیا، به دلیل راحتی استفاده از اون برای اونهایی که برنامه نویس نیستن و اینکه می گن «الان مقدار زیادی از چیز های لازم برای یادگیری نرم افزار وجود داره» استفاده می شه.