بلوپرینت در آنریل چیست؟ برنامهنویسی بازی بدون نوشتن کد
بلوپرینت سیستم برنامهنویسی تصویری آنریل است که با آن بدون نوشتن کد بازی کامل میسازید. در این مقاله با مفاهیم پایه و اولین تمرینش آشنا میشوید.
یکی از دلایل محبوبیت آنریل انجین بین تازهکارها بلوپرینت است. با بلوپرینت میتوانید منطق یک بازی کامل را بسازید، بدون اینکه حتی یک خط کد بنویسید. در این مقاله میبینیم بلوپرینت آنریل چیست، چطور کار میکند و چطور اولین بلوپرینتتان را بسازید.
بلوپرینت به زبان ساده
بلوپرینت (Blueprint) یک سیستم برنامهنویسی تصویری است. بهجای تایپ کردن دستورها، جعبههایی به اسم گره (Node) را روی صفحه میگذارید و با سیم به هم وصل میکنید. هر گره یک کار انجام میدهد، مثلاً «صدا پخش کن»، «این در را بچرخان» یا «اگر جان بازیکن صفر شد». سیمها ترتیب اجرا و جریان داده را نشان میدهند.
بلوپرینت یک اسباببازی آموزشی نیست. بسیاری از بازیهای تجاری بخش بزرگی از منطقشان را با بلوپرینت ساختهاند. پشت صحنه هم همان مفاهیم برنامهنویسی واقعی است: متغیر، شرط، حلقه و تابع. فقط شکل نمایششان فرق میکند.
چرا بلوپرینت برای شروع عالی است؟
- خطای تایپی ندارد. در کدنویسی یک نقطهویرگول جاافتاده کل برنامه را خراب میکند. در بلوپرینت فقط گرههایی که با هم جور درمیآیند به هم وصل میشوند.
- جریان اجرا را میبینید. هنگام اجرای بازی، سیمهای فعال روشن میشوند و میبینید منطق دقیقاً از کجا عبور میکند. این برای پیدا کردن اشکال فوقالعاده است.
- سریع امتحان میکنید. تغییر میدهید، Play میزنید و نتیجه را فوراً میبینید.
- مفاهیم برنامهنویسی را یاد میگیرید. کسی که بلوپرینت را خوب بلد است، بعدها ++C یا هر زبان دیگری را خیلی راحتتر یاد میگیرد.
مفاهیم پایهٔ بلوپرینت
رویداد (Event)
هر منطقی با یک رویداد شروع میشود. رویدادها گرههای قرمزرنگی هستند که میگویند «کی» اتفاقی بیفتد. چند رویداد پرکاربرد:
- Event BeginPlay: یک بار، وقتی بازی یا آن شیء شروع به کار میکند.
- Event Tick: در هر فریم. با احتیاط استفاده کنید، چون زیاد اجرا میشود.
- On Component Begin Overlap: وقتی چیزی وارد محدودهٔ یک شیء میشود، مثلاً بازیکن به سکه میرسد.
- رویدادهای ورودی: مثلاً وقتی بازیکن کلید E را میزند.
متغیر (Variable)
متغیرها اطلاعات را نگه میدارند: جان بازیکن، تعداد سکهها، باز یا بسته بودن در. هر متغیر یک نوع دارد. مثلاً Boolean برای درست/غلط، Integer برای عدد صحیح، Float برای عدد اعشاری و String برای متن.
شرط (Branch)
گره Branch همان «اگر» برنامهنویسی است. یک ورودی درست/غلط میگیرد و جریان اجرا را به یکی از دو مسیر میفرستد. مثلاً اگر بازیکن کلید دارد، در باز شود؛ وگرنه پیغام «در قفل است» نمایش داده شود.
تابع (Function)
وقتی یک مجموعه گره را چند جا لازم دارید، آن را در یک تابع بستهبندی میکنید تا هر بار فقط یک گره صدا بزنید. این کار بلوپرینت را مرتب و خوانا نگه میدارد.
انواع بلوپرینت
- Blueprint Class: رایجترین نوع. یک شیء قابل استفادهٔ دوباره مثل در، سکه، دشمن یا کاراکتر بازیکن. یک بار میسازید و هر چند بار خواستید در صحنه میگذارید.
- Level Blueprint: منطق مخصوص یک مرحله، مثلاً یک اتفاق سینمایی وقتی بازیکن به نقطهٔ خاصی میرسد. برای منطق عمومی بهتر است از Blueprint Class استفاده کنید.
- Widget Blueprint: برای رابط کاربری مثل منوها، نوار جان و امتیاز.
- Animation Blueprint: برای کنترل انیمیشن کاراکترها، مثلاً رفتن از حالت راه رفتن به دویدن.
اولین تمرین: سکهای که جمع میشود
این تمرین ساده همهٔ مفاهیم بالا را کنار هم میگذارد:
- در Content Browser کلیک راست کنید و یک Blueprint Class از نوع Actor بسازید و اسمش را
BP_Coinبگذارید. - داخل آن یک Static Mesh (مثلاً یک استوانهٔ کمارتفاع) بهعنوان ظاهر سکه و یک Sphere Collision برای محدودهٔ برخورد اضافه کنید.
- Sphere را انتخاب کنید و رویداد On Component Begin Overlap را اضافه کنید.
- از خروجی این رویداد، گره Cast To کاراکتر بازیکنتان را بگذارید تا مطمئن شوید چیزی که به سکه خورده خود بازیکن است.
- بعد گره Play Sound at Location را برای پخش صدا و در آخر Destroy Actor را برای حذف سکه وصل کنید.
- چند سکه در صحنه بگذارید، Play بزنید و آنها را جمع کنید.
برای قدم بعدی، یک متغیر Integer به اسم Coins به کاراکتر بازیکن اضافه کنید و با هر سکه یکی به آن اضافه کنید. حالا اولین سیستم امتیاز بازیتان را ساختهاید.
بلوپرینت یا ++C؟
این دو رقیب هم نیستند، مکمل هماند:
- بلوپرینت برای منطق گیمپلی، نمونهسازی سریع، رابط کاربری و کارهایی که طراحان بازی باید تغییرشان دهند عالی است.
- ++C برای سیستمهای سنگین و پرتکرار، بهینهسازی دقیق و کارهایی که بلوپرینت به آنها دسترسی ندارد مناسب است.
روال رایج در استودیوها این است که پایههای سنگین با ++C ساخته میشود و بقیه با بلوپرینت. برای شما بهعنوان تازهکار، بلوپرینت تنها چیزی است که فعلاً لازم دارید.
نکتههایی برای بلوپرینت تمیز
- گرهها را مرتب بچینید و از Comment (کلید C) برای گروهبندی و توضیح استفاده کنید.
- از Event Tick فقط وقتی واقعاً لازم است استفاده کنید. بیشتر کارها با رویدادها و تایمرها بهتر انجام میشوند.
- متغیرها را با اسم معنادار نامگذاری کنید، مثلاً
IsDoorOpenنهBool1. - منطق تکراری را به تابع تبدیل کنید.
جمعبندی
بلوپرینت دروازهٔ ورود به آنریل انجین است. با آن هم بازی میسازید و هم فکر کردن مثل یک برنامهنویس را یاد میگیرید. اگر میخواهید بلوپرینت را قدمبهقدم و پروژهمحور یاد بگیرید، دورهٔ رایگان آموزش آنریل انجین گیمآکادمی از همینجا شروع میکند.