مهم (تخفیف درصد بالا): جهت حمایت از کاربران و کسب و کارهای آسیب دیده تا پایان امشب 50 و 90 درصد تخفیف فعال شد... جزئیات

رازهای اسکریپت‌ نویسی بصری با Blueprints در آنریل انجین


مروری بر اسکریپت نویسی بصری

رازهای اسکریپت‌ نویسی بصری با Blueprints در آنریل انجین

سیستم اسکریپت نویسی بصری Blueprint توی Unreal Engine یه زبان برنامه نویسی بصریه که از یه رابط کاربری مبتنی بر نود (node-based interface) برای ساخت عناصر گیم پلی استفاده میکنه.

این روش مبتنی بر نود به طراح ها این امکان رو میده که به مجموعه گسترده ای از مفاهیم و ابزارهای اسکریپت نویسی دسترسی داشته باشن؛ چیزهایی که معمولا فقط در اختیار برنامه نویس ها قرار میگیره.

علاوه بر اون، یه سری نشانه گذاری های خاص برای Blueprint توی پیاده سازی ++C موتور Unreal وجود داره که به برنامه نویس ها اجازه میده سیستم های پایه ای رو ایجاد کنن تا طراح ها بتونن اون ها رو گسترش بدن.

مثل خیلی از زبان های اسکریپت نویسی رایج، با استفاده از این سیستم میشه کلاس ها یا آبجکت های شی گرا (object-oriented – OO) رو داخل موتور تعریف کرد. این سیستم همراه با آبجکت هایی که تعریف میکنید، معمولا به سادگی با عنوان “Blueprints” شناخته میشه.

آیا این یعنی Blueprints جایگزینی برای UnrealScript هست؟

هم بله هم نه. برنامه نویسی گیم پلی و تمام کارهایی که قبلا با UnrealScript انجام میشد، هنوز هم میتونه از طریق کدنویسی با ++C انجام بشه. در عین حال، با اینکه Blueprints به عنوان جایگزین مستقیم UnrealScript طراحی نشده ولی خیلی از همون نقش ها و کاربردهایی که UnrealScript انجام میداد رو ارائه میده.

مثل:

  • گسترش کلاس ها
  • ذخیره و تغییر ویژگی های پیش فرض
  • مدیریت نمونه سازی زیرآبجکت ها (مثل Component ها) برای کلاس ها

انتظار اینه که برنامه نویس های گیم پلی کلاس های پایه ای رو تعریف کنن که مجموعه ای مفید از توابع و ویژگی ها رو ارائه بدن تا Blueprints ساخته شده از اون کلاس ها بتونه ازشون استفاده کنه و اون ها رو گسترش بده.

(یه پیشنهاد جذاب): رؤیای ساخت بازی داری؟ یک مجموعه 0 تا 100 و پروژه‌ محور با مدرس های متخصص حرفه‌ ای برات آماده کردیم که میتونی باهاش خیلی سریع رویاتو به واقعیت تبدیل کنی! پس بهت پیشنهاد میکنم همین حالا از این مجموعه استفاده کنی، چون تمام آموزش‌ های لازم برای یادگیری بازی‌ سازی رو با تخفیف های ویژه در اختیار داری! برای شروع، اینجا کلیک کن.

جدول زیر یه مقایسه ارائه میده از این که چطور بخش های مختلف توی UnrealScript (از Unreal Engine 3)، ++C و Blueprints مدیریت میشن، تا هم برای کسایی که از نسخه های قبلی موتور میان کمک باشه و هم نشون بده کدهای بومی و Blueprints چطور با هم تفاوت دارن.

C++ (UE4 / UE5)Blueprints (UE4 / UE5)UnrealScript (UE3)
h/.cpp files.Blueprint Asset.uc file
UClassUBlueprintGeneratedClassUClass
[ClassName] :ParentClassextends [ClassName]
()UPropertyVariableVariable
()UFunctionGraphs/EventsFunction
native constructorClass Defaults{}defaultproperties
native constructorComponents ListDefault Components

انواع Blueprints

Blueprint ها میتونن از انواع مختلفی باشن که هر کدوم کاربرد خاص خودشون رو دارن، از ایجاد نوع جدید گرفته تا اسکریپت نویسی برای رویدادهای یک مرحله (level) یا تعریف واسط ها (interfaces) و ماکروها (macros) که توسط سایر Blueprint ها استفاده میشن.

Blueprint Class

یک Blueprint Class که معمولا به اختصار بهش میگن Blueprint، یه دارایی (asset) هست که به سازنده های محتوا این امکان رو میده تا به راحتی روی کلاس های گیم پلی موجود، عملکرد اضافه کنن. Blueprint ها به صورت بصری داخل Unreal Editor ساخته میشن، نه با تایپ کردن کد و به عنوان دارایی داخل یک پکیج محتوا ذخیره میشن.

در اصل، این نوع Blueprint یه کلاس یا نوع جدیدی از Actor تعریف میکنه که میشه به صورت instance توی نقشه ها قرارش داد و مثل هر Actor دیگه ای عمل میکنه.

Data-Only Blueprint

یک Data-Only Blueprint، در واقع یه Blueprint Class هست که فقط شامل کد (به شکل گراف های نود)، متغیرها و کامپوننت هایی هست که از کلاس والد خودش به ارث برده.

(یه پیشنهاد هیجان انگیز): تا حالا فقط بازی میکردی ولی حالا وقتشه که خودت بازی ساز باشی و دست به خلق دنیایی بزنی که هر گوشه‌ اش بازتاب خلاقیت تو باشه. پس بهت پیشنهاد میکنم همین حالا آموزش از پایه تا پیشرفته و کاربردی آنریل انجین رو با تخفیف ویژه تهیه کنی و از گیمر به بازی‌ ساز حرفه‌ ای تبدیل بشی! برای ورود به دوره اینجا رو کلیک کن..

با این نوع Blueprint میشه ویژگی های به ارث رسیده رو تنظیم و ویرایش کرد ولی نمیشه عناصر جدیدی بهش اضافه کرد. این نوع از Blueprint در واقع جایگزینی برای archetype ها هست و برای این استفاده میشه که طراح ها بتونن ویژگی ها رو تغییر بدن یا آیتم هایی با تفاوت های کوچک بسازن.

Data-Only Blueprint توی یه ویرایشگر ساده ویژگی ها (property editor) قابل ویرایش هست، ولی به راحتی میشه اون رو به یه Blueprint کامل تبدیل کرد فقط با اضافه کردن کد، متغیر یا کامپوننت از طریق ویرایشگر کامل Blueprint.

Level Blueprint

Level Blueprint یه نوع خاص از Blueprint هست که نقش نمودار رویداد کلی برای یک مرحله (level-wide global event graph) رو بازی میکنه. هر مرحله توی پروژه شما به صورت پیش فرض یه Level Blueprint اختصاصی خودش رو داره که میشه توی Unreal Editor اون رو ویرایش کرد ولی نمیشه Level Blueprint جدیدی رو از طریق رابط کاربری Editor ساخت.

رویدادهایی که به کل مرحله مربوط میشن یا به instance های خاصی از Actor ها در اون مرحله، استفاده میشن تا دنباله ای از عملیات رو به صورت Function Call یا عملیات کنترل جریان (Flow Control) اجرا کنن. اگه با Unreal Engine 3 آشنا باشید، حتما با این مفهوم آشنایید چون خیلی شبیه به کاریه که Kismet توی Unreal Engine 3 انجام میداد.

برای مطالعه بیشتر در زمینه آنریل انجین، پیشنهاد میشه مقاله «صفر تا صد آنریل انجین» رو مطالعه کنید.

Level Blueprint همچنین یه مکانیزم کنترل برای level streaming و Sequencer فراهم میکنه و همینطور برای متصل کردن رویدادها به Actor هایی که توی مرحله قرار گرفتن.

Blueprint Interface

یک Blueprint Interface مجموعه ای از یک یا چند تابع (فقط نام، بدون پیاده سازی) هست که میتونه به سایر Blueprint ها اضافه بشه. هر Blueprint که این Interface رو اضافه کرده باشه، تضمین شده که اون توابع رو داره. این توابع میتونن داخل هر Blueprint که اون Interface رو اضافه کرده، عملکرد جداگانه دریافت کنن.

در اصل، این ساختار مشابه مفهوم Interface در برنامه نویسی عمومی هست که اجازه میده انواع مختلفی از آبجکت ها همه با یک Interface مشترک شناخته و کنترل بشن. به بیان ساده، Blueprint Interface ها به Blueprint های مختلف اجازه میدن با هم ارتباط برقرار کنن و داده بین خودشون رد و بدل کنن.

محتواسازها میتونن Interface ها رو دقیقا مثل سایر Blueprint ها از داخل Editor بسازن ولی یه سری محدودیت دارن.

Interface ها نمیتونن:

  • متغیر جدید اضافه کنن
  • گراف ها رو ویرایش کنن
  • کامپوننت اضافه کنن

Blueprint Macro Library

یک Blueprint Macro Library در واقع یه ظرفه که شامل مجموعه ای از Macro ها یا گراف های مستقل هست که میشه اون ها رو به عنوان نود داخل Blueprint های دیگه قرار داد. این ها میتونن باعث صرفه جویی در زمان بشن چون دنباله هایی از نودها که به طور مکرر استفاده میشن رو همراه با ورودی و خروجی برای اجرای عملیات و انتقال داده ذخیره میکنن.

Macro ها بین تمام گراف هایی که بهشون ارجاع میدن مشترکن ولی هنگام کامپایل مثل نودهای فشرده شده به صورت خودکار داخل گراف ها گسترش پیدا میکنن. این یعنی برای Blueprint Macro Library نیازی به کامپایل نیست.

با این حال، وقتی یک Macro تغییر داده میشه، فقط توی گراف هایی که به اون ارجاع میدن و دوباره کامپایل میشن، این تغییرات اعمال میشه.

Blueprint Utilities

یک Blueprint Utility (که به صورت خلاصه بهش Blutility هم میگن)، یه نوع Blueprint هست که فقط در محیط ویرایشگر (Editor) کاربرد داره و میشه ازش برای اجرای کارهای ویرایشی یا گسترش قابلیت های ویرایشگر استفاده کرد.

این ابزار میتونه رویدادهایی بدون ورودی رو به عنوان دکمه داخل رابط کاربری نمایش بده و این امکان رو داره که هر تابعی که برای Blueprint ها در دسترسه رو اجرا کنه و روی مجموعه فعلی از Actor های انتخاب شده در نمای ویرایشگر (Viewport) تاثیر بذاره.

ساختار Blueprint (Blueprint Anatomy)

عملکرد Blueprint ها با استفاده از عناصر مختلفی تعریف میشه؛ بعضی از این عناصر به صورت پیش فرض وجود دارن و بعضی دیگه بسته به نیاز اضافه میشن. این عناصر به شما امکان میدن که کامپوننت تعریف کنید، عملیات راه اندازی و مقداردهی اولیه انجام بدید، به رویدادها واکنش نشون بدید، عملیات ها رو سازماندهی و ماژولار کنید، ویژگی ها (properties) مشخص کنید و خیلی چیزهای دیگه.

پنجره Components

با درک مفهومی کامپوننت ها، پنجره Components توی ویرایشگر Blueprint به شما اجازه میده که کامپوننت هایی رو به Blueprint خودتون اضافه کنید.

این بخش امکانی فراهم میکنه:

تا هندسه برخورد (collision geometry) رو از طریق CapsuleComponent ،BoxComponent یا SphereComponent اضافه کنید

هندسه قابل رندر رو به صورت StaticMeshComponent یا SkeletalMeshComponent وارد کنید، حرکت رو با استفاده از MovementComponent ها کنترل کنید و غیره.

کامپوننت هایی که توی لیست Components اضافه میشن، میتونن به عنوان متغیرهای instance تعریف بشن تا بتونید توی گراف های همین Blueprint یا Blueprint های دیگه، بهشون دسترسی داشته باشید.

Construction Script

Construction Script بلافاصله بعد از لیست Components اجرا میشه، زمانی که یه instance از یه Blueprint Class ساخته میشه. این بخش شامل یه گراف نودیه که در زمان اجرا باعث میشه instance اون کلاس عملیات راه اندازی خاص خودش رو انجام بده.

این قابلیت خیلی قدرتمنده چون میشه کارهایی مثل ردیابی در محیط (trace)، تنظیم مش ها و متریال ها و موارد مشابه رو بسته به موقعیت انجام داد.

برای مثال، یه Blueprint چراغ میتونه بررسی کنه روی چه نوع زمینی قرار گرفته و مش مناسب رو از بین چند گزینه انتخاب کنه یا یه Blueprint حصار میتونه از هر طرف ردیابی انجام بده تا مشخص کنه طول حصار باید چقدر باشه تا فضا رو پوشش بده.

Event Graph

EventGraph داخل یه Blueprint، یه گراف نودی داره که از رویدادها و فراخوانی توابع برای انجام عملیات در پاسخ به اتفاقات گیم پلی استفاده میکنه که مربوط به اون Blueprint هستن. اینجا جاییه که عملکرد مشترک بین تمام instance های یک Blueprint تعریف میشه.

اینجاست که تعاملات و واکنش های داینامیک تنظیم میشن. مثلا یه Blueprint چراغ میتونه در پاسخ به یه رویداد آسیب (damage event)، کامپوننت نور خودش (LightComponent) رو خاموش کنه و متریال مش رو تغییر بده.

این رفتار به صورت خودکار برای همه instance های اون Blueprint اعمال میشه.

توابع (Functions)

توابع در Blueprint ها گراف های نودی هستن که میتونن از گراف دیگه ای داخل همون Blueprint فراخوانی (call) بشن. هر تابع یه نقطه ورود داره که با یه نود مشخص میشه که اسم تابع روش نوشته شده و شامل یه خروجی اجرایی (exec pin) هست. وقتی تابع از یه گراف دیگه فراخوانی میشه، خروجی اجرایی فعال میشه و شبکه متصل شده به اون اجرا میشه.

متغیرها (Variables)

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

امیدواریم مطالب ارائه‌ شده در این آموزش برایتان مفید واقع شده باشد.، همچنین اگر سوال یا ابهامی وجود داشت خوشحال میشیم که با ما در میان بگذارین.

نظرات کاربران

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

آموزش های پیشنهادی

نوشته های دیگر در دسته بندی مقالات آموزشی

مدل سازی سه بعدی در Unreal Engine 5

مدل سازی سه بعدی در Unreal Engine 5؛ نکات و ترفندهای کاربردی

مدل سازی سه بعدی در Unreal Engine 5 با ترفندهای حرفه ای
اسکرین شات با وضوح بالا

اسکرین شات در آنریل انجین 5؛ روش گرفتن تصاویر با کیفیت

اسکرین شات در آنریل انجین ۵؛ آموزش سریع ثبت تصاویر واضح و با کیفیت
آموزش هک

آموزش هک