سلام خدمت همه دوستان عزیز
حدود 10 ماه پیش اولین شماره تحلیل موتورهای بازی سازی با
موتور آنریل شروع کردیم و با هم اطلاعات کاملتری راجع به آنریل و سیستم رندرینگ و امکانات این موتور بررسی کردیم. اما همان روزها بود که یونیتی نسخه 5 در حال معرفی بود و قطعا به دلیل عدم ارائه یک نسخه پایدار امکان بررسی دقیق این موتور میسر نبود؛ بعد از انتشار حدود 30 نسخه جدید از خانواده 5 یونیتی امروز این موتور توانسته خود و نیازهای خود را بهتر بشناسد و گامهای بهتر و درست تری برای توسعه دهنده های بازیهای رایانه ای بردارد. در این مقاله به تفضیل قصد بررسی دقیق این نکات را داریم و در قالبی کامل همه پیشرفت ها و حتی کمبودها را در یونیتی بررسی میکنیم.
در ابتدا به سبک شخصی بنده بصورت سریع و صریح یونیتی را معرفی میکنم:
- یونیتی چیست؟ یونیتی یک میان افزار گرافیکی است که امکان تولید محتواهای 2بعدی و سه بعدی را بصورت ساده و سریع فراهم میکند
- چه کسانی میتوانند از این موتور استفاده کنند؟ هر کسی که یک دستگاه کامپیوتر دارد!!!
- پیش زمینه ای برای استفاده از یونیتی نیاز است؟ بله؛ علاقه و پشتکار. هیچ موردی دیگری نیاز ندارید و مابقی موارد با استفاده از همین 2 مورد به سهولت بدست می آید.
- برای استفاده از یونیتی چه مدت زمان برای آموزش نیاز است؟ 1 روز!!! به وفور دوستانی را دیدم که در زمان بسیار کمی شروع کردند و البته موفق هم بوده اند؛ هرچقدر با یونیتی بیشتر کار کنید بیشتر علاقمند میشوید و دانش و تجربه لازمه را کسب میکنید.
- چرا یونیتی؟ در جواب این را باید بگویم: چرا یونیتی نه!!! یونیتی یک نرم افزار قوی و صد البته کاربرپسند است و در کنار این قدرت بسیار منعطف است یعنی توانایی بالایی برای خروجی به بیشمار پلتفرم را دارد.
- چرا یونیتی منعطف است؟ یونیتی توانایی خروجی برای حدود 23 پلتفرم مختلف را دارد. از ویندوز تا کنسولها و حتی هالو لنز!!!
تاریخچه یونیتی
اگر بخواهیم با تاریخچه یونیتی آشنا شویم باید عرض بکنم که یونیتی یک موتور جوان و بطور دقیق 10 ساله است. یونیتی اولین بار در سال 2005 در کنفرانس توسعه دهنده های اپل معرفی شد. اولین نسخه به هیچ عنوان با فرزند فعلی اش (نسخه 5.2) جز در اسم قابل قیاس نیست!!! در نسخه اول یونیتی امکانات محدودی مثل فیزیک Novodex (که الان با نام PhysX میشناسید) و همچین امکان رندرینگ فقط بر اساس OpenGL و امکان اسکریپت نویسی به زبان C# و چند امکان محدود دیگر وجود داشت. حدود 2 سال بعد یعنی در سال 2007 نسخه 2 این موتور معرفی شد که مهم ترین امکانات جدید یونیتی موارد زیر بود:
- امکانات توسعه شبکه
- سیستم Terrain
- امکان ترسیم سایه بصورت RealTime
- امکان خروجی iPhone
- امکان توسعه گیم در ویندوز
- و ...
نسخه 3 نقطه عطف یونیتی بود که 3 سال بعد از نسخه 2 یعنی در سال 2010 معرفی شد. بنظر من شروع قدرت یونیتی از این نسخه بود که توسعه ها از امکانات اولیه که در نسخه های قبل انجام شده بود به مرحله جدیدی یعنی امکانات پیشرفته و بروز رسیده بود. بی شک مهم ترین قابلیت در نسخه 3 امکان محاسبه GI توسط سیستم قدرتمند Beast بود که اکنون در موتور Stingray هم مورد استفاده قرار میگیرد. جالب است بدانید تکنولوژی Beast از سال 2010 تحت تملک اتودسک قرار گرفته است. همچنین درکنار سیستم GI جدید یونیتی فروشگاه پلاگینهای یونیتی یعنی Asset Store هم همزمان با معرفی نسخه 3 یونیتی ایجاد شد تا یونیتی با تکیه بر قدرت کاربرانش تبدیل به موتوری وحشتناک شود که به جرئت عرض میکنم یونیتی+ Asset Store بزرگتر از هر موتور دیگری است!!! همه امکانات موتورهای دیگر کم و بیش در Asset Store یونیتی بصورت افزونه موجود است و ازینرو یونیتی باید به خود ببالد!!! اما امکانات دیگری مثل موارد زیر در یونیتی 3 معرفی شد:
- Occliusion Culling
- HDR Rendring
- RealTime Audio Effect
- Shuriken Particle System
- Android Support
- Substance Support
- Adobe Flash Support
- DotNet 3.5 Support
- و ...
نسخه 4 یونیتی در سال 2012 معرفی شد تا رسم نانوشته ای برای انتشار نسخه های یونیتی بوجود بیاید. یونیتی تا الان نسخه های فرد را 3 سال و نسخه های زوج را 2 سال بعد از آخرین نسخه معرفی کرده است! نسخه 4 یک قدم بزرگ در یونیتی بود و بنظر شخصی یکی از جالبترین ابزارهای یونیتی یعنی سیستم انیمیشن مکانیم در این نسخه معرفی شد. پشتیبانی از Api پرفدرت Directx 11 در این نسخه از یونیتی انجام شد تا بستری جدید برای توسعه دهنده های یونیتی ایجاد شود. در قدرت DirectX هیچ چون و چرایی نیست و تکنولوژی DirectX 11 Tesslation و Directx 11 Displacement بواقع یکی از موهبتهایی بود که در نسخه 4 در اختیار توسعه دهنده ها قرار گرفت. امکانات دیگری مثل موارد زیر در این نسخه افزوده شد:
- New 2D UI
- New Platforms Support
- Optimization Tools
- و ...
دقیقا طبق سنت یونیتی یعنی 3 سال بعد در سال 2015 نسخه 5 یونیتی معرفی شد که امکانات بسیار جدیدی را در دل یونیتی قرار داد. امکاناتی که در مقالاتی در همین سایت دیده اید. اما مهمترین بروز رسانی یونیتی در نسخه 5 فیزیکال شدن سیستم نورپردازی یونیتی بود که توانش را از سیستم Enlighten میگیرد. این سیستم یکی از بهترین راه کارهای محاسبات سنگین نور در RealTime میباشد که قبلا در بازیهای بزرگی مثل NFS The Run و BF3 مورد استفاده قرار گرفته است. دیگر امکانات این نسخه:
- X64 Support
- Audio Mixer
- New Tools For Nav Mesh
- Physical Base Matterial
- HDR SkyBox
- New Platforms Support
- Test Utility
- و ...
امکانات و قابلیتهای موتور یونیتی
برای اختصار صرفا به ذکر امکانات موتور بصورت گروه به گروه و تیتروار بسنده میکنم.
امکانات کلی:
- Scripting with C#, JavaScript or Boo
- Action-Packed Physics
- Life-Like Animation
- One-Click Deployment
- Optimized Graphics
- Unmatched Import Pipeline
- 64-bit Editor
- Fully Extendible Editor
انیمیشن:
- Retargeting
- Blend Trees
- State Machines
- Integrated Animation Editor
- Inverse Kinematics
- Sync Layers and Additional Curves
گرافیک:
- Physically-Based Shading
- Shuriken Particle System
- Enlighten-powered Real-time Global Illumination
- Low-Level Rendering Access
- Dynamic Fonts with Markup
- Static Batching
- Render-to-Texture Effects
- Full-Screen Post-Processing Effects
2بعدی:
- Automatic Sprite Slicing
- Automatic Sprite Animation
- Alpha Cutout
- Sprite Packer
- 2D physics
فیزیک 3بعدی:
- Multithreaded Simulation
- Cloth Component
- Advanced Vehicle Physics
- Super-Accurate Collision Detection
- Bake-free Scaled MeshCollider Support
بهینه سازی:
- Occlusion Culling
- Profiler
- Level of Detail
- Deferred Rendering
- Stencil Buffer Access
- GPU Skinning for DirectX 11 and OpenGL ES 3.0
- Fully-Fledged Streaming with Asset Bundles
- Dynamic Batching
اسکریپت نویسی و توسعه:
- Webplayer debugging
- .NET Socket Support
- Inspector GUI for custom classes
- Access to Web Data Through WWW Functions
- Open a URL in the User's Browser
- Native Code Plugin Support
- Script Access to the Asset Pipeline
صدا:
- Transition the mood of your soundscape
- Native Audio Plugins
- Hierarchies of mixers
- Call scripts from within the animation playback
امکانات دیگر:
- External Version Control Support
- Terrains
- Integrated SpeedTree support
- Multiplayer Networking with RakNet
- NavMeshes and Path-Finding
- Net Streaming (not supported on iOS)
- iOS Crash Reporter
- Linux headless player
- Instantaneous playtesting
کاربرد یونیتی
یونیتی در حوزه های مختلفی میتواند مورد استفاده قرار گیرد. گیم، شبیه سازی، معماری، سینما و ... از این موارد میباشد. در این قسمت به بررسی امکانات یونیتی در این موارد میپردازیم.
یونیتی در توسعه گیم
بی شک یونیتی یکی از بهترین موتورهای بازیسازی میباشد و با امکانات بسیار زیادی کارهای توسعه گیم شما را کاهش میدهد اما قدرت اصلی یونیتی در این حوزه بیشتر بخاطر توانایی بسیار بالا در بستر موبایل و دستگاههای همراه است. جالب است بدانید که بیش از 80 درصد بازیهای موبایل با یونیتی توسعه داده میشوند و این یکی از برترین ویژگی های این موتور است. یونیتی نسبت به آنریل و کرای بشدت سبکتر اجرا میشود و نیازهای سخت افزاری بسیار کمتری برای کاربرهای بازیهای تولیدی شما ایجاد میکند که این مورد هم بسیار مهم است.
پایه ای ترین امکاناتی که توسعه دهنده های گیم به آن نیاز دارند موارد زیر است:
- سیستم مدیریت و ویرایش انیمیشن
- سیستم ناوبری و تشخیص مسیر
- سیستم کدنویسی پویا و ساده
- سیستم پارتیکل
- سیستم فیزیک و رفتار
- سیستم نورپردازی و سایه زنی
- و ...
در همه موارد بالا یونیتی امکانات بسیار کاملی در اختیار شما میگذارد و شما در این موارد هیچ کمبودی در یونیتی ندارید و با معرفی نسخه 5 یونیتی قدرت جدیدی در امکانات مطرح شده بالا در یونیتی قرار گرفت.
یونیتی در معماری
امروزه با فیزیکال شدن یونیتی و همچنین رایگان شدن آن کاربران بیشماری از حوزه معماری به این موتور کوچ کرده اند. دلیل این حرکت هم قدرت بسیار بالا و همچنین انعطاف فوق العاده آن است. زمانی پیش نمایشهای داینامیک فیزیکال معماری در موبایلها آرزوی همه فعالان این صنعت بود اما امروزه با توجه به جایگاه یونیتی در حوزه موبایل که بی شک قویترین موتور در این حوزه است و همچنین رندرینگ بسیار با کیفیت یونیتی، این موتور جایگاه بسیار مهمی در معماری دارد. سادگی و سهولت کار در یونیتی نیز یکی دیگر از مهم ترین عواملی است که شتاب استفاده فعالان حوزه معماری از یونیتی را بیشتر کرده است.
برای آشنایی بیشتر شما با توان یونیتی در این حوزه شما را دعوت به دیدن کلیپهای زیر میکنم:
مشخصات
مدت زمان : 2 دقیقه و 4 ثانیه
کیفیت : 720p - HD
حجم : 49 مگابایت
مشخصات
مدت زمان : 2 دقیقه و 6 ثانیه
کیفیت : 720p - HD
حجم : 22 مگابایت
مشخصات
مدت زمان : 23 ثانیه
کیفیت : 720p - HD
حجم : 11 مگابایت
یونیتی در رندرینگ RealTime و کلیپهای سینمایی
با همه بروزرسانی هایی که در نسخه 5 یونیتی اتفاق افتاد، یونیتی توان رندرینگ بسیار با کیفیت فیزیکال بیس را دارد. از اینرو یونیتی در بین کاربران حوزه انیمیشن و تولید کننده های کلیپ های سینمایی هم وارد شده است. یکی از بهترین کارهایی که با یونیتی در این حوزه تولید شده است تیزر سینمایی BlackSmith است که در زیر مشاهده می نمایید:
مشخصات
مدت زمان : 3 دقیقه و 45 ثانیه
کیفیت : 720p - HD
حجم : 30 مگابایت
از تولید کننده های این تیزر سینمایی شنیدم که این تیزر در سیستمی با پردازنده Intel 4770 و کارت گرافیک GTX 760 رندر شده است!!! البته در GDC از GTX 980 استفاده شد.
نتیجه گیری
برای اینکه بتوانیم درک بهتری از امکانات یونیتی داشته باشیم در 2 قسمت قابلیتها و ضعف ها این موتور را مورد بررسی قرار میدهیم.
قابلیت ها:
- سیستم نورپردازی کامل ( GI و Direct Lighting )
- محیط منعطف و ساده و قدرتمند و کاربرپسند
- متریالهای فیزیکال
- سیستم مسیریابی قدرتمند
- سیستم مدیریت انیمیشن قدرتمند مکانیم
- توسعه سریع و ساده با استفاده از C# و JS و ...
- بسیار منعطف و قابل استفاده در همه پلتفرم ها
- سبک و بهینه
- Asset Store بسیار کامل و عالی
- فروم بسیار عالی
- ارتباط بسیار خوب با نرم افزارهای دیگر مثل مکس و مایا
کمبودها:
- فاقد قابلیت TAA
- فاقد محیط شیدر نویسی ویژوال
- فاقد امکانات انیمیت کردن و مدیریت دوربین مانند matinee آنریل
- فاقد متریال پرکاربرد SSS
- فاقد امکان Screen Sapce Reflection
- فاقد امکان Terrain Tilling
- عدم حمایت از Alembic
تحلیل موارد بالا:
امکانات بسیار خوبی در این موتور وجود دارد که در بالا میبینید. اما در مورد کمبودها همین حالا شما میتوانید در Asset store یونیتی 5 مورد از 7 مورد کمبودها را تهیه نمایید یا اگر در کشوری مثل ایران هستید که کپی رایت نداریم به سهولت این پکیج ها را میتوانید دانلود کنید !!! اما قابلیت TAA تا الان هیچ پیاده سازی در یونیتی نداشته است. اما برای اینکه با TAA بیشتر آشنا بشوید قسمت زیر را مطالعه نمایید.
TAA چیست؟
TAA یا همان Temporal AntiAliasing یکی از کلیدی ترین قابلیتهایی است که در موتورهای نسل فعلی وجود دارد. اگر میتوانید بازیهای نسل فعلی یا حتی موتوری مثل آنریل را بدون این قابلیت تصور کنید توصیه میکنم ویدیوهای زیر را مشاهده نمایید:
مشخصات
مدت زمان : 1 دقیقه و 28 ثانیه
زبان : انگلیسی
کیفیت : 720p - HD
حجم : 9 مگابایت
مشخصات
مدت زمان : 1 دقیقه و 16 ثانیه
کیفیت : 720p - HD
حجم : 29 مگابایت
در زمانیکه حرکت در صحنه اتفاق می افتد، اشیایی که در صحنه هستند دارای پرشهایی میشوند که بر اثر تاثیر سرعت حرکت شی متحرک (مثلا دوربین) نسبت تاثیر AA تغییر کرده و حتی چون حرکت ایجاد میشود در برخی جاها تاثیرات دیگری مثل اتفاقی جالب در فیزیک که بنام چرخش چرخ ماشین شناخته میشود رخ میدهد. همه این عوامل باعث ایجاد پرش در تصویر میشود که در TAA با راهکاری جالب این مسئله حل میشود. در این روش مسیر حرکت پیکسلی هر شی متحرک مشخص میشود و برای هر شی این تاثیر در پیکسل محاسبه میشود و این نقاط بطور جداگانه آلیاز میگردند (چیزی شبیه به موشن بلار برای هر شی در صحنه!!! ). اولین بار در سال 2005 این ایده مطرح شد و در سال 2007 دو الگوریتم برای حل این مشکل مطرح شد. انویدیا در سال 2011 در GDC بصورت عمومی یک پیاده سازی را مطرح کرد و کلیات پیاده سازی را معرفی نمود. در حال حاضر هم در ابزار GameWorks این شرکت کامپوننت Postworks برای این منظور موجود میباشد. همانطوریکه مشاهده کردید یکی از مهم ترین امکاناتی که در موتورهای نسل فعلی باید باشد اما متاسفانه در یونیتی این امکان را در اختیار نداریم همین TAA میباشد. تلاشهایی برای پیاده سازی این امکان در یونیتی انجام شده است اما تا امروز هیچ پلاگینی عرضه نشده است. البته در قسمت feedback یونیتی این امکان با بیش از 500 رای تایید شد و در RoadMap یونیتی قرار گرفت. و باز هم متاسفانه تا اواخر سال 2016 این امکان طبق RoadMap یونیتی در یونیتی پیاده سازی نمیشود.
اما در کنار همه موارد بالا خبری خوب هم برای کاربران این موتور دارم. گروه Livenda که دوستان عزیز با پلاگین SSR Candela آشنایی دارند تیزری از تولید پلاگین CTAA منتشر کرده است که این امکان را یونیتی مهیا میکند. برای آشنایی بیشتر شما توجه شما را به ویدیو زیر دعوت میکنم:
مشخصات
مدت زمان : 2 دقیقه و 33 ثانیه
کیفیت : 720p - HD
حجم : 29 مگابایت
اما ذکر این نکته خالی از لطف نیست که این گروه به هیچ عنوان خوش قول نیست و پلاگین Ocean Shader این گروه که 2 سال پیش معرفی شد و عنوان انتشار بزودی را گرفت بعد از 2 سال هیچ خبری از آن نیست!!! اما شاید با توجه به قرار گرفتن این امکان در RoadMap یونیتی این گروه اینبار بزودی این پلاگین حیاتی اش را منتشر نماید.
با بررسی همه موارد بالا به این نتیجه میرسیم که کمبودهای یونیتی به استثنا یک مورد در حال حاضر قابل حل میباشد و برآیند این موارد همه پالسهایی مثبت به تثبیت جایگاه این موتور در این حوزه میباشد. از اینرو همه عزیزانی که قصد یادگیری و شاید فعالیت در حوزه معماری، گیم و حتی رندرینگ RealTime را دارند به جرئت عرض میکنم که یونیتی یکی از بهترین انتخابها برای آنها میتواند باشد.
قصد داشتم در انتها چند Asset حیاتی یونیتی را نیز معرفی کنم اما به علت طولانی شدن از این قسمت صرف نظر میکنم و شاید در آینده در ادامه این مقاله به بررسی آنها بپردازم.
با احترام
موفق باشید
دیدگاه خود را بنویسید