موضوع مقاله: زبان گیم‌میکر | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # زبان گیم‌میکر | مقدمه: هرچند که در آخرین نسخه اعمال کشیدن و انداختن به GML ترجمه شدند تا بخواهند ازآن به صورت مجزا باشند. | ## بخش 1: زبان گیم‌میکر | اغلب عناصر مانند بلوک پیکسلها و صداها در داخل Game Maker IDE استفاده شدند (در حالی که می‌توانستند ازفایل‌های خارجی استفاده کنند) معماری Game Maker طراحی شده تا اعمالی مانند کشف رویدادها، طراحی سطح و پیکر بندی شی‌ها را اجرا کند بدون آنکه نیاز باشد تا کد آن را به صورت دستی پیاده‌سازی کرد.(اضافات کد را به وسیله محیط تعاملی پیشرفته خود کم کرده‌است.) یک تصور غلط وجود دارد که می‌گوید زبان‌هایی مانندPascal وC++ به صورت مستقیم در GML به کار رفته‌است. در محیط تعاملی کتابخانه‌ها به عنوان تب‌هایی شامل شکلک‌ها نمایش داده می‌شوند که دستورلعمل نامیده می‌شود. هر دستورالعمل یک مجموعه متن gml یا یک تابع می‌باشد که کاربر می‌تواند برای بازی به کار برد. با یک سری کتابخانه‌ها ی پیش‌ساخته آماده شده‌است که دستور العمل‌های معمولی است که در اغلب بازی‌ها به کار می‌رود. این شباهت در کاربرد بلوک‌ها و فراخوانی توابع، تخصیص متغیر‌ها، نحو عملگرها و غیره مشهود است. با این وجود تخصیص متغیرها معمولاً متن هستند و نمی‌توانند در یک عبارت منطقی به کار روند. توابع GML یک کتابخانه بزرگ از توابع پیش‌ساخته دارد که برای کارهایی مبتنی بر توابع مهیا شده‌است.برنامه نویس می‌تواند scriptهایی بسازد. متغیرها در حالت معمول GML احتیاج ندارد که متغیرها مانند زبان‌های دیگر اعلان کند. | ## بخش 2: زبان گیم‌میکر | GML متغیرها و ثابت‌های پیش ساخته زیادی دارد هر نمونه در بازی دارای متغیرهای محلی مانند X،Y می‌باشد و همچنین متغیرها عمومی که برنامه‌نویس می‌سازد متغیرهای عمومی پیش‌ساخته پیشوند global را ندارد. آرایه‌ها می‌توانند مخلوطی از مقادیر طبیعی و رشته‌ها باشند اما نمی‌توانند خودشان را مرتب کنند. آرایه‌ها در GML نمی‌توانند به تابع داده شوند یا مقدار بازگشتی تابع باشند.اندیس آرایه‌ها محدود آرایه‌ها محدود است. اندیس‌ها نمی‌توانند از 32000 بیشتر باشند و یک آرایه تنها نیز نمی‌تواند بیش از 1000000 مقدار دانسته باشند GML در نسخه‌های جدید خود 6 نوع ساختار داده‌ای را فراهم می‌کند. بیان‌هایی که احتیاج به مقدار منطقی دارند مانند if هر مقداری بالاتر از 0.5 را صحیح ارزیابی می‌کنند و مقادیر کوچکتر را غلط ثابت‌های "true"و”false” می‌توانند به جای 1و0 در GML استفاده شوند. حوزه( scope) در GML دو نوع محل متغیر وجود دارد: محل "نمونه ها" و محل "script"(یا هر تکه کد دیگر که محتویات خود را دارد) محلی بودن یک نمونه به این معنا است که متغیر به یک نمونه مشخص متصل شده و به وسیله یک نمونه پیشوند مشخص‌کننده فراخوانی می‌شود . وقتی کلمه "local" بدون بیشتر خصوصیات آن به کار می‌رود معمولاً به نمونه محلی اشاره دارد. به‌طور پیش فرض متغیرها برای یک نمونه به صورت محلی هستند اما نه برای script ی که به کار می‌رود. | ## بخش 3: زبان گیم‌میکر | برای مثال کدهایی که در ادامه می‌آید، به‌طور تلاقی جا داده شده می‌تواند از بین بردن نمونه‌های دیگر استفاده شود. از این رو برای نگهداری حافظه این امرکه برای نگهداری متغیرها برای نمونه و script متغیر محلی بهتر از عمومی است. این ساختارهای به وجود می‌آیند، پرداخته می‌شوند و از بین می‌روند در درون توابع درون ساخت. همچنین توابعی برای مرتب سازی این ساختارها که مربوط به هر کدام از این ساختارهای هستند وجود دارد. بدین ترتیب هر منبع و نمونه‌ای در GML یک شماره ID منحصربه‌فرد دارد، که برای رجوع به منبع یا نمونه خاص به کار می‌رود. به مجرد اینکه یک منبع GML ساخته شود نام آن را به عنوان ثابتی در نظر گرفته می‌شود که می‌تواند مورد رجوع قرار گیرد.(برای اشیا اولین نمونه مرجع می‌باشد) ID نمونه‌های خاص هر شی می‌توانند با متغیر ID یافت شوند. | ## جمع‌بندی | 3D در GML هر چند GML در اصل برای برنامه‌نویسی دوبعدی به وجود آمده‌است، نسخه حرفه‌ای آن توابع سه‌بعدی نیز دارد.