بلوپرینت یا برنامه نویسی؟ مسئله این است!

بلوپرینت یا برنامه نویسی؟ مسئله این است! 👩🏻‍🎨

بسیاری از گیم انجین های پیشرفته این روزها مجهز به سیستم node و base ( state ) یا همون گره و مکان شده اند که قابلیت برنامه نویسی بصری ( Visual Programing ) را برای ما فراهم میکند . این موضوع با اضافه شدن این امکان به یونیتی با استفاده از پیکج Visual Script خود یونیتی در کنار bolt و playmaker ، پررنگ تر شده و برای بسیاری به چالش بدل شد . چه برای کسانیکه تازه قصد داشتند شروع کنند و چه برای کسانیکه از برنامه نویسی خوششان نمی آید و یا حس میکنند با کدنویسی وقت زیادتری از آنها گرفته میشود . بهرحال سوالی است که برای بسیاری هنوز حل نشده است که :
آیا blueprint و این سیستم جدید که نزدیک به 12 سال است در برخی گیم انجین ها مانند unreal engine و Autodesk Stingray و Armory وجود دارد ، به درد بخور و مفید است؟ ضررها و فواید آن چیست؟
قصد داریم کاملا سریع و ریز به این موضوع بپردازیم .

اول باید تاکید کرد که هیچ چیزی نمیتواند جایگزین برنامه نویسی شود . زیرا که برنامه نویسی است که باعث توسعه خیلی چیزها شده است و همان vs ( visual scripting ) با استفاده از برنامه نویسی صورت گرفته است . پس باید گفت که برنامه نویسی قابلیت شخصی سازی فراوانی دارد . اما blueprint محدود به یکسری قواعد محدود و سقف خاصی شده است و برخی اوقات نمیتواند پاسخگوی خواسته های ما بصورت کامل یا بصورت دقیق باشد یا برای ایجاد یک سیستم دقیقتر نیاز داریم که از روی بلوپرینت به روی برنامه نویسی سویچ کنیم . پس در گام اول باید گفت که :
ممکن است که بلوپرینت قدرتمند باشد ، اما جای برنامه نویسی را هیچگاه نمیگیرد و برخی اوقات ممکن است پاسخگوی همه نیازات ما هم نباشد .
در قدم دوم باید گفت که بلوپرینت به قصد یادگیری سریعتر بازیسازی + ساخت بازی با زمانی کمتر ایجاد شده است . پس با بلوپرینت میتوان بدون نوشتن یک خط کد ، بازی ای با کیفیت مطلوب تولید کرد و مخصوصا با استفاده از گیم انجینهایی که از ابتدا با سیستم node-base سروکار داشتند ( مثل آنریل انجین ) این موضوع را میتوان بهتر درک کرد . پس برای ساخت بازی سریعتر میتوان سراغ بلوپرینت رفت ( کماکان خیلی ها با کدنویسی راحتترند و حتی سریعتر کار میکنند ) .
در قدم سوم باید گفت که پردازش کدهای بصری خیلی سنگینتر از کدهای خطی است ( یعنی کدنویسی سبکتر از بلوپرینت است ) . پس بازیهای حاصل از کدنویسی بصری بهینه نیستند یا بهتر بگویم : بازیهای حاصل از کدنویسی عادی ، بهینه تر از بازیهای ساخته شده توسط بلوپرینت و برنامه نویسی بصری هستند . چون هر base و هر node ، حاوی چندین خط کد است و هر یک عمل در آن مساوی است با چندخط کد اضافه تر! نمونه آن bolt در یونیتی ست که پیشنهاد میشود بازی اندرویدی با آن ایجاد نشود .
در قدم چهارم ، به موضوع فهم اشاره میکنیم . فهم کدنویسی برای افرادی مناسب است که توانایی درک منطقی ، ریاضیاتی ، استدلالی دارند . اما درک بلوپرینت بیشتر برای کسانی است که درک منطقی ، انتزاعی و فضایی دارند . این نشان میدهد که هرکسی عاشق بلوپرینت نمیشود و هرکسی توانایی ارتباط برقرار کردن با آن را ندارد! پس میفهمیم که به نوع شخصیت و هوش افراد هم مرتبط است .
پنجم ، نظم بخشی و ایجاد clean code در برنامه نویسی بالاست . اما در بلوپرینت نظم بخشی و ارتباط اجزا برای فهم و مرتب کردن آن سخت تر است .
ششم ، ممکن است کدنویسی بصری برای بسیاری چالش جذاب باشد . همینکه ارتباط اجزا را بصورت ظاهری میتوان مشخص کرد و آنها را به یکدیگر متصل کرد و اشکالزدایی کرد بسیار جذاب است . برای این دسته افراد ممکن است برنامه نویسی خُشک بنظر بیاید که بلوپرینت مناسب است . البته باید اشاره کرد که اشکالزدایی این دوسبک با یکدیگر فرق میکند و نمیتوان آنها را بایکدیگر مقایسه کرد . اما بنظر بنده اشکالزدایی برنامه نویسی یکسری جاها ساده تر ، و یکسری جاها حتی سخت تر است!
هفتم ، کسی که با برنامه نویسی کار میکند خیلی راحت تر میتواند با زبانهای دیگر هم ارتباط برقرار کند . اما کسی که فقط روی بلوپرینت متمرکز است ، بی شک میتوان گفت که ضرر زیادی مرتکب شده است . زیرا به یک امکان محدودخودرا بدل کرده است و بی شک بلوپرینت تنها 50 درصد امکانات یک گیم انجین را در اختیار کاربر قرار میدهد .
هشتم ، کسی که برنامه نویسی با زبانهایی مثل ++C را شروع میکند ، ممکن است بخاطر سختی این زبان سریع کنار بکشد . بنابراین میتوان با شروع ابتدایی با Blueprint و این سیستم ، مسیر ساده تر و شیرینتری را اعطا کرد .

در قدم نهم که موضوع آخر است باید به نوع گیم اشاره کنیم که بلوپرینت قدرت آنرا دارد که بازیهای پیشرفته ای تولید کند . اما تا جایی خاص . بازیهای ابتدایی و حتی تا یک سطح مطلوبی را میتوان توسط بلوپرینت ایجاد کرد . اما برای یکسری دسترسی ها و یکسری امکانات بیشتر باید رو به کدنویسی آورد و بلوپرینت امکان دارد که بسیاری اوقات دارای باگ باشد یا باعث ایجاد باگ به دلیل تداخل در ارتباط nodeها در لحظه باشد ( که معمولا کم پیش می آید اما اتفاق افتاده است ) . پس برنامه نویسی پتانسیل بیشتری را دارد و برای بازیهای ساده تا پیشرفته میتوان از بلوپرینت استفاده کرد . فراتر از آن هم با بلوپرینت شدنی است اما پیشنهاد نمیشود .

نتیجه : هرکدام معایب و مزایایی دارند . اما هیچ چیزی برنامه نویسی نمیشود! بستگی دارد بخواهید چه کار کنید …

امیدوارم که این مطلب بدرد شما خورده باشد . سعی کردم در تالیف و کامل بودن مطالب ، بکوشم . لطفا در انتشار آن ، دیگران را هم سهیم فرمایید .

نویسنده : سجاد احمدی نیت

کلمات کلیدی : بلوپرینت ، آنریل انجین ، blueprint ، کدنویسی ، برنامه نویسی ، یونیتی