گودو (موتور بازی) کیست؟ توضیح بده.
گودو (; ) که به گودوت نیز مشهور است، یک موتور بازی چندبستری، آزاد و متن‌باز می‌باشد که تحت پروانه ام‌آی‌تی منتشر شده‌است. گودو در ابتدا توسط توسعه‌دهندگان نرم‌افزار آرژانتینی، خوان لینیتسکی و آریل منزور برای چندین شرکت در آمریکای لاتین پیش از انتشار عمومی آن در سال ۲۰۱۴، توسعه داده شد. محیط توسعهٔ این موتور بازی‌سازی برروی بسیاری از سیستم‌عامل‌ها قابل اجرا بوده و می‌تواند به چندین بستر دیگر خروجی بگیرد. گودو برای ایجاد بازی‌های ۲بعدی و ۳بعدی طراحی شده‌است که هدف آنها بسترهای رایانهٔ شخصی، تلفن همراه و وب می‌باشد، همچنین گودو می‌تواند برای توسعهٔ نرم‌افزارهای غیربازی از جمله ویرایشگرها نیز استفاده شود.ویژگی‌ها.گودو به توسعه‌دهندگان بازی‌های ویدئویی اجازه می‌دهد تا بازی‌های سه‌بعدی و دوبعدی را با استفاده از چندین زبان برنامه‌نویسی مانند سی‌شارپ، سی‌پلاس‌پلاس و جی‌دی‌اسکریپت ایجاد کنند. گودو برای آسان‌سازی تجربه توسعه، از سلسله مراتبی شامل گره‌ها (Node) استفاده می‌کند. کلاس‌ها (Class) می‌توانند از گره‌ای پایه گرفته شوند تا نوع گره‌های تخصصی‌تری ایجاد کنند که ویژگی‌ها و رفتارهای گره پایه را به ارث می‌برند. گره‌ها در داخل «صحنه‌ها» (Scene) سازمان‌دهی می‌شوند که قابل استفاده مجدد، قابل نمونه، ارثی و گروه‌های تودرتو از گره‌ها هستند. همه منابع بازی، از جمله اسکریپت‌ها و دارایی‌های گرافیکی، به‌عنوان بخشی از سیستم فایل رایانه ذخیره می‌شوند (و نه در پایگاه داده). این راه حل ذخیره‌سازی برای تسهیل همکاری بین تیم‌های توسعه بازی با استفاده از سیستم‌های کنترل نسخه نرم‌افزار در نظر گرفته شده‌است.پلتفرم‌های پشتیبانی شده.این موتور از استقرار در چندین پلتفرم پشتیبانی می‌کند و اجازه می‌دهد تا تنظیمات فشرده‌سازی بافت و وضوح را برای هر پلتفرم مشخص کنید. نسخهٔ وبگاه تنها برای پلتفرم‌های ویرایشگر فایل‌های باینری ارائه می‌دهد و خروجی گرفتن از پروژه‌ها به پلتفرم‌های دیگر، در ویرایشگر گودو انجام می‌شود.ویرایشگر گودو که برای ساخت بازی‌های گودو استفاده می‌شود، از پلتفرم‌های زیر پشتیبانی می‌کند:گودو از خروجی‌گیری پروژه‌ها به پلتفرم‌های بیشتر، از جمله همه پلتفرم‌های ویرایشگر پشتیبانی می‌کند. پلتفرم‌هایی که در حال حاضر از گودو ۴٫۰ پشتیبانی می‌شوند:موتور گودو را می‌توان برروی کنسول‌ها اجرا کرد، اما بیشتر کنسول‌های پرطرفدار به‌طور رسمی از آن پشتیبانی نمی‌کنند، زیرا آنها اجازه نمی‌دهند که کدهای خاص پلتفرم‌شان تحت مجوز منبع‌باز منتشر شود. بازی‌های را می‌توان به کنسول‌ها از طریق شرکت‌های شخص ثالث پورت کرد. یک شرکت تجاری که توسط برخی اعضای رهبری گودو تأسیس شده، اعلام کرده‌است تا طرح‌هایی برای خدمات پورت کردن بازی‌های گودو ۴٫۰ به پلتفرم‌های مایکروسافت، نینتندو و سونی ارائه دهد.برای معماری‌های سی‌پی‌یو، گودو به‌طور رسمی از x86 در تمام پلتفرم‌های دسکتاپ (۳۲ بیتی و ۶۴ بیتی در صورت وجود) و از ای‌آرام در مک‌اواس، پلتفرم‌های موبایل و پلتفرم‌های مستقل آکیولوس (۳۲ بیت و ۶۴ بیت در صورت وجود) به‌طور رسمی پشتیبانی می‌کند. پلتفرم وب از وب‌اسمبلی ۳۲ بیتی استفاده می‌کند. پشتیبانی از لینوکس ای‌آرام، ریسک پنج و پاورپی‌سی غیررسمی و آزمایشی است.اسکریپت‌نویسی.گودو از انواع زبان‌های برنامه‌نویسی از جمله زبان یکپارچه جی‌دی‌اسکریپت (GDscript)، C++ و C# برای ساخت بازی پشتیبانی می‌کند. افزون بر این، گودو شامل یک آسان‌ساز برای ایجاد پیوند با زبان‌های دیگر به‌نام جی‌دی‌نِیتیو (GDNative) می‌باشد. زبان‌های رسمی پشتیبانی شدهٔ جی‌دی‌نیتیو، شامل C و C++ می‌باشند. زبان‌های پشتیبانی شده توسط جامعه عبارتند از راست، نیم، هسکل، کلوژر، سوئیفت، و دی. همچنین برنامه‌نویسی دیداری نیز از طریق زبان داخلی ویژوال‌اسکریپت پشتیبانی می‌شد که برای معادل دیداری جی‌دی‌اسکریپت طراحی شده بود. ویژوال اسکریپتینگ از موتور اصلی در گودو ۴٫۰ حذف شد. بازی‌هایی که در مرورگر اجرا می‌شوند می‌توانند با کد جاوا اسکریپت مرورگر ارتباط برقرار کنند.ویرایشگر گودو شامل یک ویرایشگر متن با سبک تورفتگی خودکار، پررنگ‌کردن نحو، تکمیل کد هوشمند، کد تاشو (Code folding) و همچنین دارای یک دیباگر با قابلیت تنظیم نقطه توقف‌ها و program stepping می‌باشد.جی‌دی‌اسکریپت.گودو دارای یک زبان اسکریپت‌نویسی داخلی با نام جی‌دی‌اسکریپت (GDscript) می‌باشد. جی‌دی‌اسکریپت یک زبان برنامه‌نویسی سطح بالا و نوع پویا است که از دیدگاه نحوی همانند پایتون می‌باشد. برخلاف پایتون، جی‌دی‌اسکریپت برای معماری مبتنی بر صحنهٔ گودو بهینه شده‌است و می‌تواند تایپ دقیق متغیرها را مشخص کند. توسعه‌دهندگان گودو بیان کرده‌اند که بسیاری از زبان‌های برنامه‌نویسی شخص ثالث جایگزین مانند لوآ، پایتون و اسکوئیرل، پیش از تصمیم‌گیری در مورد این‌که استفاده از یک زبان سفارشی امکان بهینه‌سازی و ادغام ویرایشگر برتر را فراهم می‌کند، آزمایش شدند. در نسخهٔ ۴٫۰، ویژگی جدیدی به نام تایپد اَرِی یا آرایهٔ ماشینی (Typed array) برروی جی‌دی‌اسکریپت پیاده‌سازی شد. این ویژگی به کاربران این امکان را می‌دهد که بدون ایجاد تغییر زیادی در کد، به راحتی یک آرایهٔ معمولی را به ماشینی و بالعکس تغییر دهند.یک برنامهٔ ساده "Hello world" را می‌توان به این صورت نوشت:func _ready():print("Hello World")برنامه‌های پیچیده‌تر، مانند برنامه‌ای که یک دنبالهٔ فیبوناچی تولید می‌کند، نیز به این‌گونه ممکن است:func _ready():var nterms = 5print("دنباله فیبوناچی:")for i in range(nterms):print(fibonacci(i))func fibonacci(n):if n &lt;= 1:return nelse:return fibonacci(n - 1) + fibonacci(n - 2)رندرگیری.موتور گرافیکی گودو از اوپن‌جی‌ال ئی‌اس ۳٫۰ برای همهٔ پلتفرم‌های پشتیبانی شده استفاده می‌کند و در غیر این صورت از اوپن‌جی‌ال ئی‌اس ۲٫۰ استفاده می‌شود. وولکان در گودو ۴ و نسخه‌های پس از آن پشتیبانی شده و موجود است، همچنین امکان پشتیبانی از متال با استفاده از مالتن‌وی‌کی نیز امکان‌پذیر می‌باشد. این موتور از نگاشت نرمال، specularity، سایه‌های پویا با استفاده از نگاشت سایه‌ها، نورپردازی سراسری پخته و پویا و جلوه‌های تمام صفحه پس از پردازش مانند bloom، عمق میدان، رندرینگ دامنه دینامیک بالا و اصلاح گاما پشتیبانی می‌کند؛ یک زبان سایه‌زنی (Shading language) ساده شده، همانند GLSL نیز درون آن گنجانده شده‌است. سایه‌زن‌ها را می‌توان برای مواد و پساپردازش استفاده کرد. از سوی دیگر، آنها را می‌توان با دستکاری گره‌ها در یک ویرایشگر دیداری ایجاد کرد.گودو همچنین دارای یک موتور گرافیکی دوبعدی جداگانه است که می‌تواند مستقل از موتور سه‌بعدی کار کند، اما هردوی آنها می‌توانند در یک صفحه و در یک زمان استفاده شوند، به‌طوری که ترکیب‌های پیچیده‌ای میان دوبعدی و سه‌بعدی ایجاد شود. موتور دوبعدی از ویژگی‌هایی مانند نورها، سایه‌ها، شِیدِرها، مجموعه کاشی‌ها (Tile sets)، پیمایش اختلاف منظر، چند ضلعی‌ها، انیمیشن‌ها، فیزیک و ذره‌ها (Particles) پشتیبانی می‌کند. می‌توان فضاهای دوبعدی و سه‌بعدی را با استفاده از گرهٔ 'Viewport' ترکیب کرد.ویژگی‌های دیگر.گودو حاوی یک سیستم انیمیشن با رابط کاربری گرافیکی برای انیمیشن اسکلتی، آمیختن (blending)، درختان انیمیشن (Animation trees)، مورفینگ و کات‌سین‌های بی‌درنگ است. تقریباً هر متغیری که برروی یک موجودیت بازی تعریف یا ایجاد می‌شود، می‌تواند متحرک شود. موتور گودو، فیزیک داخلی خود را دارد و از نسخه ۴٫x به اشخاص ثالث اجازه می‌دهد تا فیزیک خود را از طریق جی‌دی‌اکستنشن (GDExtension) ادغام کنند. در گودو ۳٫x، موتور فیزیک بولت گنجانده شده و به‌طور پیش‌فرض استفاده می‌شود. کتابخانهٔ ثوروی‌جی (ThorVG) امکان ایجاد رابط‌کاربری گرافیکی با منابع برداری را فراهم می‌کند.تاریخچه.دوران متن‌بسته (۲۰۱۴–۲۰۰۱).توسعه گودو به دست «خوان لینیتسکی و اریل منزور» در سال ۲۰۰۷ میلادی معادل با ۱۳۸۶ هجری شمسی شروع شد. پیش از متن‌باز شدن موتور، خوان و آریل شرکت کدنیکس (Codenix) را تأسیس کردند، یک شرکت مشاوره توسعه بازی که از طریق آن مجوز گودو را به شرکت‌های شخص ثالث در آرژانتین دادند. لینیتسکی در یک ارائه گفت که نام «گودو»، به دلیل ارتباط آن با بازی ساموئل بکت در "در انتظار گودو" انتخاب شده‌است؛ زیرا نشان‌دهنده آرزوی تمام نشدنی افزودن ویژگی‌های جدید به موتور برای رسیدن به یک محصول کامل است؛ اما کامل و بی‌نقص شدن ممکن نیست.دوران متن‌باز (اکنون–۲۰۱۴).فوریهٔ ۲۰۱۴–بهمن ۱۳۹۲، کد منبع گودو در گیت هاب با مجوز ام‌آی‌تی برای عموم منتشر شد.۴ نوامبر ۲۰۱۵–۱۳ آبان ۱۳۹۴، گودو به حفاظت از آزادی نرم‌افزار پیوست.در ۲۲ ژوئن ۲۰۱۶، گودو جایزه ۲۰٬۰۰۰ دلاری پشتیبانی منبع باز موزیلا (ام‌اواس‌اس) «شریک‌های مأموریت» را دریافت کرد تا از آن برای افزودن وب‌سوکت‌ها، وب‌اسمبلی و وب‌جی‌ال ۲٫۰ استفاده شود. بعداً، با حمایت میگل ایکازا در سال ۲۰۱۷، گودو ۲۴۰۰۰ دلار کمک مالی از مایکروسافت دریافت کرد تا سی‌شارپ را به عنوان یک زبان برنامه‌نویسی در گودو پیاده‌سازی کند.در ۲۰۲۰، گودو جایزه ۲۵۰۰۰۰ دلاری اپیک گیمز را برای بهبود رندر گرافیکی و زبان ساخت بازی داخلی موتور، جی‌دی‌اسکریپت دریافت کرد. در ۸ ژوئیه ۲۰۲۰، خوان لینیتسکی اشاره کرد که جایزه اپیک گیمز برای استخدام دائمی خود و جورج (مارکز) به مدت ۲ سال به منظور رایگان کردن کمک‌های مالی برای اهداف جدید استفاده می‌شود. در دسامبر ۲۰۲۰، گودو از ریئلیتی لَبز فیس بوک کمک مالی دریافت کرد. بعداً، در دسامبر ۲۰۲۱، گودو کمک مالی دیگری از آزمایشگاه‌های واقعیت متا برای کار برروی واقعیت افزوده دریافت کرد.در ۱۰ فوریه ۲۰۲۱، گودو کمک مالی ۱۲۰۰۰۰ دلاری از استودیوی بازیسازی روسی کِفیر (Kefir) دریافت کرد. در ۱۱ نوامبر ۲۰۲۱، گودو کمک مالی ۱۰۰۰۰۰ دلاری از اوپی‌گیمز مستقر در کالیفرنیا دریافت کرد.در اوت ۲۰۲۲، لینیتسکی و چندین عضو برجسته دیگر از تیم گودو، W4 Games را برای ارائه خدمات تجاری مبتنی بر موتور از جمله پورت‌های کنسول که نمی‌توانند در پایگاه کد منبع‌باز آن گنجانده شوند، تأسیس کردند.از نوامبر ۲۰۲۲، گودو در حال خروج از حفاظت از آزادی نرم‌افزار (اس‌اف‌سی) برای تشکیل بنیاد اختصاصی خود می‌باشد.تاریخچه نسخه‌ها.دسامبر ۲۰۱۴–۲۴ آذر ۱۳۹۳، گودو به نسخه ۱٫۰ رسید، نخستین نسخهٔ پایدار ثبت و پشتیبانی از لایت‌مَپینگ، ناومِش و سایه‌زن افزوده شد. ۲۱ مهٔ ۲۰۱۵–۳۱ اردیبهشت ۱۳۹۴ نسخهٔ ۱٫۱ با اضافه شدن «بهبود تکمیل خودکار در ویرایشگر کد، ویرایشگر دیداری شیدر، یک ای‌پی‌آی جدید برای سیستم عامل برای مدیریت صفحات و پنجره، بازنویسی موتور دوبعدی، و تقویت بسیار خروجی‌گیر بلندر کولادا، پشتیبانی جدید از ناویگِیشن پولیگان دوبعدی و یک پوسته تاریک جدید منتشر شد.گودو ۲٫۰ در ۲۳ فوریهٔ ۲۰۱۶–۴ اسفند ۱۳۹۴ به نسخهٔ پایدار رسید. ویژگی‌های جدید این نسخه شامل Instancing و Inheritance بهتر صحنه، یک مرورگر فایل سیستم جدید، ویرایش چندگانه صحنه و یک اشکال‌زدای پیشرفته بودند. به دنبال این در مرداد ۱۳۹۵ نسخه ۲٫۱، یک پایگاه داده منبع، پروفایلر و ای‌پی‌آی پلاگین را معرفی کرد.نسخهٔ ۳٫۰، در ۲۹ ژانویهٔ ۲۰۱۸–۹ بهمن ۱۳۹۶ منتشر و «رندرینگ سه بعدی بهبود یافته، سازگاری با واقعیت مجازی و پشتیبانی از سی‌شارپ (به وسیله مونو)» اضافه شد. همچنین موتور فیزیک پیشین یعنی Built-in 3D با موتور فیزیک بولت جایگزین شد.گودو ۳٫۱ در ۱۳ مارس ۲۰۱۹ با ویژگی‌های قابل توجهی مانند اضافه شدن تایپد ثابت، یک سیستم کلاس اسکریپت برای جی‌دی‌اسکریپت و یک رندر اوپن‌جی‌ال ئی‌اس ۲٫۰ منتشر شد. گودو ۳٫۲ در ۲۹ ژانویه ۲۰۲۰ همراه با ویژگی‌های قابل توجهی مانند بهبود اسناد گسترده، پشتیبانی بسیار بهبود یافته از سی‌شارپ و پشتیبانی از فایل‌های جی‌ال‌تی‌اف ۲٫۰ منتشر شد.توسعه‌دهنده اصلی، خوان لینیتسکی، بیشتر وقت خود را در گیت هاب صرف کار برروی یک برَنچ (branch) جداگانهٔ وولکان کرد که بعداً برای نسخه ۴٫۰ به مَستِر (Master) ادغام شد، بنابراین کار برروی نسخهٔ ۳٫۲ بیشتر توسط سایر مشارکت کنندگان انجام شد. کار برروی ۳٫۲ به عنوان یک نسخهٔ پشتیبانی طولانی مدت یک سال ادامه یافت، از جمله انتشار گودو ۳٫۲٫۲ در ۲۶ ژوئن ۲۰۲۰. این نسخه وصلهٔ بزرگی بود که ویژگی‌هایی مانند دسته‌بندی اوپن‌جی‌ال ئی‌اس ۲٫۰ و پشتیبانی از سی‌شارپ برای آی‌اواس را اضافه کرد. در ۱۷ مارس ۲۰۲۱، استراتژی نسخه‌سازی تغییر کرد، همراه با یک برنچ پایدار ۳٫۳ و یک برنچ ۳٫x برای پیش‌انتقال ویژگی‌ها به نسخه ۳٫۴ در آینده تا نسخه‌سازی معنایی بهتر را منعکس کند،گودو ۳٫۳ در ۲۱ آوریل ۲۰۲۱ با ویژگی‌هایی مانند پشتیبانی از ARM در مک‌اواس، باندل‌های اپلیکیشن اندروید، پشتیبانی از MP3، پشتیبانی از اُتودِسک اف‌بی‌اکس، پشتیبانی از وب‌اکس‌آر (WebXR) و یک ویرایشگر وب منتشر شد.گودو ۳٫۴ در ۶ نوامبر ۲۰۲۱، پس از ۶ ماه توسعه، پیاده‌سازی ویژگی‌های ناموجود یا رفع اشکال‌هایی که برای انتشار بازی‌های دوبعدی و سه‌بعدی با گودو ۳ می‌توانند خطرناک باشند و تقویت و قابل اعتمادسازی ویژگی‌های فعلی منتشر شد.گودو ۴، نسخه‌ای از موتور بازی گودو است که در ۱ مارس ۲۰۲۳ منتشر شد. این نسخه، یک به‌روزرسانی بزرگ است که سیستم رندر را بازنگری می‌کند، پشتیبانی از ای‌پی‌آی گرافیکی وولکان را اضافه می‌کند، عملکرد و قابلیت استفاده جی‌دی‌اسکریپت را بهبود می‌بخشد، سیستم‌های فیزیک و انیمیشن را بهبود می‌بخشد و ویژگی‌های جدیدی از آنها را معرفی می‌کند؛ به همراه بسیاری از ویژگی‌های دیگر و رفع اشکال.کاربرد.بیشتر بازی‌های استودیوی OKAM با استفاده از گودو ساخته شده‌اند؛ مانند "Dog Mendonça &amp; Pizza Boy" که از افزونهٔ بازی ماجراجویی اسکوریا (Escoria adventure game extension) استفاده می‌کند. افزون بر این، در برنامه درسی دبیرستان‌های ویرجینیای غربی، در پی سادگی استفاده از آن برای کسانی که برنامه‌نویس نیستند به این عنوان تعریف می‌شود: «انبوهی از مواد آموزشی که از پیش برای نرم‌افزار موجود است».گودو توسط "د میرِر" ، یک بستر طراحی بازی مانند روبلاکس استفاده شده‌است. آریل منزور، یکی از بنیان‌گذاران گودو، به‌عنوان مشاور فنی به د میرر پیوست.جامعه.گودو به عنوان یک پروژهٔ بین‌المللی دارای یک جامعهٔ فعال در سراسر جهان است. برخی از اعضای انجمن، مدیر گروه‌های محلی گودو هستند.گودو در ایران.انجمن «گودو ایران» در سال ۱۳۹۸ توسط تحسین رفیعی تأسیس شد و اکنون، گروه تلگرامی گودو ایران بیش از ۵۰۰ عضو دارد. همچنین انجمن گودو در ایران اواخر مهر ماه ۱۳۹۹ با حمایت دِد مِیج دومین مسابقه فشرده خود را با چند جایزه برگزار کرد.