loading...
GAME
matin alijani بازدید : 21 جمعه 07 بهمن 1390 نظرات (0)
مقدمه: در این مبحث طبق مباحث قبل ما قصد داریم یک موتور دیگر توسعه بازی که به تازگی محبوبیت بسیاری را در جهان کسب کرده برای شما عزیزان معرفی کامل کنیم.
در ابتدا من قصد داریم به معرفی کامل انواع قسمت های این موتور بپردازم و بعد از بعد فنی آن را مورد ارزیابی و تجزیه و تحلیل قرار دهیم.
امّا قبل از وارد شدن به مبحث فنی بیایید کمی در مورد خود موتور بحث کنیم. موتور Unity چیست؟ موتور Unity یک ابزار برای ساختن بازی های سه بعدی یا دیگر محصولات تعاملی سه بعدی بلادرنگ همچون پویانمایی های سه بعدی بلادرنگ یا همان real-time 3D animations می باشد. شیوه کلی این موتور همچون موتورهای Director, Blender game engine, Virtools یا حتی Torque می باشد. ویرایشگر موتور می تواند تحت ویندوز و mac اجرا شود. شاید تا چند سال پیش این موتور بدرد کاربران سیستم Mac می خورد امّا بعد از March 2009 که موتور به ویندوز هم پورت شد کاربران ویندوز هم به جمع دوستداران این موتور افزوده شدند. این موتور اوّلین بار در تاریخ June 2005 منتشر گردید.
نسخه 3 این موتور در حال ساخته شدن است و پیش نمایش آن در Game Developer Conference 10 به نمایش درآمد. البته چون این موتور تقریباً یک موتور روز می باشد هنوز بازی تجاری قابل توجه ای با آن ساخته نشده و بیشتر با آن بازی های indie ساخته شده است. از جمله انتقاداتی که توسط کارشناسان به این موتور شده این است که برخی آن را به یک ویرایشگر تشبیه کرده اند و گفته اند که این موتور در حقیقت یک ویرایشگر است تا یک موتور و امکانات لازم از جمله سورس کامل را برای یک توسعه دهنده بازی ارائه نمی دهد همچنین وجود باگ های فراوان در ویرایشگر از دیگر انتقادات به این موتور هست. همچنین انتقاد جالب توجه یکی از کارشناسان خارجی این است که این موتور در CPU های intel مخصوص mac بسیار ضعیف تر از سایر CPU ها کار می کند این در حالی است که سازندگان این موتور همانطور که در ادامه خواهید خواند مدعی این هستند که با صدها سخت افزار این موتور را اجرا و آزمایش کرده اند.
دو مجوز برای این موتور وجود دارد مجوز Pro و مجوز Free که تفاوت این دو مجوز برخی امکانات اضافی در نسخه pro همچون جلوه های postprocessing و render-to-texture می باشد. همچنین در نسخه free آرم موتور در بازی به نمایش در می آید. اکنون به مشخصات و انواع قابلیت های فنی ان موتور خواهیم پرداخت.

ویرایشگر موتور



یکی از بهترین قسمت های این موتور ویرایشگر ان می باشد. در حقیقت این موتور دارای یک ویرایشگر با تمام امکانات لازم برای ساخت یک بازی می باشد. از مزایای این ویرایشگر می توان به ساده بودن و بصری بودن آن اشاره کرد.


دکمه های Play, Pause و Step از جمله دکمه های مهم در ویرایشگر موتور هستند که همچون دکمه های یک دستگاه پخش کننده می توانند تمام وقایع بازی، کدها و اشیا را به شکل زنده اجرا یا متوقف کنند. از دیگر ویژگی های ویرایشگر ساده بودن در سفارشی شدن قسمت های مختلف آن است یعنی شما به راحتی می توانید قسمت های متفاوت ویرایشگر را با یک کلیک و درگ ساده به جاهای مختلف بکشانید. همچنین در گوشه ویرایشگر یک دکمه کرکره ای وجود دارد که شما می توانید با کمک آن ویرایشگر را به شکل های متفاوت انتخاب نمایید.
طراحی ویرایشگر موتور Unity به شکلی است که می توان به صورت کلیک و درگ یا همان گرفتن و کشیدن هر محتویات هنری و اشیا را به بافت ها، منابع صوتی، رفتارها و کدها متصل کرد. همچنین شما می توانید یک ساختار درختی و سلسه مراتبی منطقی از اشیای بازی را بسازید و آن را مدیریت کنید.
Prefab ها می توانند به شکل مکرر و خیلی موثر برای مجموعه ای از اشیا به کار گرفته شوند. شما می توانید از یک یا بیشتر از Prefab ها را بسازید. Prefab ها به راحتی می توانند در جای جای بازی گذاشته شوند و هر تغییر که در Prefab اصلی رخ دهد می تواند در تمامی Prefab های وابسته به آن Prefab اتفاق بیفتد. همچنین Prefab ها می توانند تعداد زیادی از اشیای بازی را مشتمل شوند.

گرافیک



Unity دارای یک خط لوله گرافیکی بسیار بهینه شده برای هر دو API معروف DirectX و OpenGL می باشد. مش های پویانمایی شده، سیستم های ذره ای، نورپردازی خوب و سایه که همه می توانند به سرعت اجرا شوند. رندرگر Unity با کوچکترین تغییرات وضعیتی به سرعت هماهنگ می شود. انواع نورها و سایه ها را از کاربر می گیرد و به گفته سازندگان موتور قدرت این رندرگر با یک ستخ افزار قوی به حدی است که می تواند میلیون ها پلی را در چند میلی ثانیه رندر کند. البته از حرف تا عمل خیلی فاصله است و حتی اگر فرض را هم بر این بگذاریم که می شود مسلماً منظور از یک سخت افزار قوی چیزی در حد یک ابر رایانه است!
سیستم های ذره ای و جلوه های ویژه در این موتور به شکل خیلی ساده و خوب ساخته می شوند ساختن باران، جرقه گرد و غبار مسیر و هر چیزی که بتوانید تصور کنید. هر چند که امروزه سیستم های ذره ای در بسیاری از موتورها پیشرفت های چشمگیری کرده اند و سیستم زره ای که این موتور ارائه داده است در مقایسه با سایر موتورها خیلی چیز بزرگ و قدرتمندی نیست و مهم این است که خیلی ساده و انعطاف پذیر می توان سیستم های ذره ای را در این موتور ساخت.
Unity مسلماً می تواند سراسر بازی شما را اجرا کند و دربردارنده کامل رندرگر تحت DirectX و OpenGL است. سازندگان مدعی هستند که دارای یک آزمایشگاهی می باشند که دارای صدها قطعات سخت افزاری متنوع است و Unity را با تمامی این قطعات آزمایش کردند و با همه قطعات به خوبی کار کرده است. این یک نکته مهم برای سازندگان موتور و بازی در کشور ما می باشد که فقط به آزمایش موتور یا بازی بر روی چند سیستم خاص بسنده می کنند یک موتور یا بازی ساخته شده باید بر روی صدها سخت افزار متنوع آزمایش شود و تمامی ایرادهای آن گرفته شود. بازی های ایرانی در حالت عادی بسیار خطا دارد حال شما فکرش را بکنید که یک بازی با چندین قطعه سخت اقزاری آزمایش درستی نشده و کاربری که آن قطعات را داشته باشد چقدر مشکلات و گرفتاری هایی ممکن است برایش پیش بیاید.
شما همچنین با یک خط لوله انعطاف پذیر مواجه هستید که می توانید با دستورات سطح پایین رندرگر به چیزی که می خواهید دست پیدا کنید.

ورودی مدلها

یکی از جالبترین قابلیت های Unity که من حداقل در هیچ موتوری تا به حال به این شکل پیدا نکرده بودم امکان بسیار قدرتمند ورودی مدل ها بدون هیچ وصله ای می باشد. تمامی محتویات گرافیکی می توانند بعد از Save کاملاً فوری و به شکل خودکار وارد این موتور شوند. از مدل های سه بعدی گرفته تا پویانمایی ها، اسکریپت ها یا صداها. و لحظه به لحظه در حال بروز شدن هستند. یعنی به عنوان مثال شما می توانید یک مدلی را که با کمک نرم افزار 3D Studio Max ساخته اید و فرمت آن .max است و همچنین بافت آن را هم با کمک نرم افزار Photoshop ساخته اید و فرمت آن .psd است را بدون هیچ واسته در پروژه خود وارد نموده و سپس بعد از وارد نمودن در مرحله توسط ویرایشگر موتور بر روی مدل تغییراتی با کمک نرم افزار 3D Studio Max انجام دهید و همان لحظه تغییر را در موتور ببینید یا بافت را در photoshop تغییراتی دهید و همان لحظه آن تغییرات را ببینید خوب این چیز بزرگ و شگفت آوری است. من با چند تن از دوستان خارجی ام در این باره صحبت می کردم که این تکنیک چگونه انجام پذیر است که نظرات متعددی وجود داشت. در مورد وارد کردن فرمت های تصویری مثل فرمت Photoshop که بی شک مسلم بود که از کتابخانه FreeImage واقع در این آدرس (www.freeimage.sourceforge.net) استفاده شده است. امّا در مورد وارد کردن فرمت .max یکی از دوستان بازی ساز اسپانیایی مدعی بود که احتمالاً یک اسکریپتی در Unity وجود دارد که به سرعت مدل را به FBX یا DAE تبدیل می کند و سپس مدل در Unity به نمایش و اجرا در می آید که به نظر می آید فرض درستی باشد.
از دیگر ویژگی های ورودی در Unity می توان به پشتیبانی از فونت های TrueType اشاره کرد. Unity از یک رندرگر به شیوه pixel-perfect برای فونت های TrueType استفاده می کند.



که این باعث می شود مطالب بازی شما به شکل خوب و با کیفیتی به چشم بیایند. از نکات دیگر پشتیبانی از Unicode می باشد هرچند که برای ما فارسی زبان ها پشتیبانی از Unicode هم خیلی کمک نمی کند چون حروف ما از راست به چپ و همچنین به هم چسبیده است و خیلی موتورها این مساله را در مورد زبان های آسیایی در نظر نمی گیرند هرچند که می توان به جای متن از تصویر استفاده کرد امّا مسلماً حجم یک متن بسیار کمتر از حجم یک تصویر است.
بافت ها با چندین لایه می توانند در Photoshop ذخیره شوند و در Unity اجرا گردند. و مهمترین نکته این است که موتور Unity بافت ها را بدون کوچکترین کلیکی به DXT فشرده سازی و ذخیره می کند.
هر بافت می تواند به یک Normal Map تبدیل شود. این فرآیند به شکل کاملاً خودکار و در هنگامی که شما مکان فایل ها را تغییر می دهید انجام می گیرد.
از دیگر نکات قابل توجه در این موتور پشتیبانی از چندین شیوه تولید Mipmap با کیفیت بالا می باشد. Unity از شیوه هایی همچون Detail Fade, Kaiser Filters, Gamma Correction و... برای تولید Mipmap استفاده می کند. در انتهای مبحث ورودی و خروی به ورودی فایلهای صوتی می توانم اشاره کنم که این موتور تنها از فرمت صوتی ogg که یک فرمت فشرده بسیار خوب و عالی برای بازی است پشتیبانی می کند.
در زیر جدولی از فرمت ها و امکاناتی که برای آن ها در این موتور پشتیبانی می شود را می بینید.



چند پلتفورمه

 

از دیگر ویژگی های این موتور امکان اجرای آن و ساخت بازی بر روی چند پلتفورم از جمله سیستم عامل ویندوز و mac می باشد. همچنین از سخت افزارهای قدیمی پشتیبانی به عمل می آورد.
موتور Unity امکاناتی هم برای ساخت بازی تحت وب دارد. به این صورت که می توان بازی ساخته شده را به صورت کامل تحت وب اجرا نمود. البته این موتور همچون موتور Torque 3D نیست که به راحتی و بدون هیچ وصله ای بازی شما را درون مرورگر اجرا کند. برای اجرای بازی کاربر باید یک وصله تحت عنوان Unity Web Player را نصب نماید.
از دیگر امکانات جالب توجه و خوب این موتور امکان استفاده از کنسول WII می باشد. شما می توانید به صورت زنده و بدون هیچ تغییر در پروژه تان بازی را برای کنسول Wii ببینید و تحت ویرایشگر اجرا نمایید. همچنین برای اجرا بر روی کنسول Wii حتماً باید مجوز و بسته Wii Developer Kit را داشته باشید. که مسلماً برای گروه های ایرانی با توجه به تحریم خیلی سخت می توان یک همچنین چیزی را از شرکت Nintendo گرفت.
همچنین توسط این موتور می توان برای گوشی های iphone هم بازی ساخت. امروزه خیلی از موتورها امکان ساخت بازی بر روی این گوشی ها را فراهم کرده اند. شما با کمک iPhone Remote به شکل خیلی سریع نتیجه را به شکل زنده بر روی IPhone یا IPad خود آزمایش کنید و یا در همان ویرایشگر مرحله اقدام به این کار نمایید. در مرحله فرآیند Build کلیه کدهای Java و C# به کدهای ARM assembler کامپایل می شوند.



تصویری از یک نمونه بازی ساخته شده توسط Unity و اجرای زنده با IPhone

شیدرها در Unity



سیستم شیدر Unity ترکیبی از راحتی در استفاده، انعطاف پذیری و عملکرد است. تمامی شیدرهای ساخته شده در Unity با هر دو نوع نور ادغام کامل می شود. همچنین شما این امکان را دارید تا شیدر خودتان را تحت دو زبان HLSL و CG برای پروژه هایتان در Unity بنویسید.
از جمله امکانات سیستم شیدر این موتور می توان به اجرای تمام صفحه جلوه های Post-Processing همچون Glow, Blur, Noise, Color Correction, Sepia Tone, Depth of Field و ... اشاره نمود.
این موتور بنا به ادعای سازندگان آن دارای 40 شیدر ساخته شده داخلی است.

عوارض زمین



با کمک سیستم عوارض زمین در این موتور می توانید چشم اندازهای خیلی نرم و زیبا و وسیعی را ایجاد نمایید. مسلماً این مساله نشاندهنده توانایی های خوب موتور برای ساختن بازی هم به شیوه indoor و هم به شیوه outdoor می باشد.
ویرایشگر این موتور دارای دکمه ها و قسمتی پیرامون عوارض زمین می باشد که توسط آن می توانید عوارض زمین خود را بسازید هرچند که انصافاً تجربه شخصی من در کار با سیستم عوارض زمین این موتور و سایر موتورها این را می گوید که هنوز هم تنها موتوری که در زمینه ساخت عوارض زمین حرف اوّل را می زند مسلماً Torque می باشد زیرا از ده ها الگوریتم و امکانات برای ساخت عوارض بهره می برد در حالی که در این موتور باید به شکل دستی و بدون هیچ الگوریتم خاصی عوارض زمین را ساخت. همانطور که می دانید استفاده از دست درصد ایجاد خطا را بسیار بالا و غیر طبیعی شدن کار را می برد.
از جمله امکانات خوب دیگر این موتور در سیستم عوارض زمین می توان به سیستم ایجاد درختان، سنگ ها چمن و... اشاره کرد با یک brush می توان در هر جا از سطوح مرحله این کارها را انجام داد.



تولید lightmap برای عوارض از دیگر امکانات این موتور می باشد. که این موتور می توان به راحتی تمام نورهای مستقیم و اثرات آن بر روی عوارض را برایتان محاسبه نماید.



موتور عوارض زمین Unity به ادعای سازندگان تلاش کرده یک سیستم با کیفیت بالا و استفاده راحت برای کاربران را محیا کند. سازندگان مدعی هستند که این سیستم می تواند صدها و هزاران درخت میلیون ها زمین و بیلیون ها علف و چمن و... را تولید کند. هر چند که نگفته اند تا چه حجمی از این تولیدات را این موتور می تواند رندر و به خوبی اجرا کند.

شبکه در Unity

این موتور هم همچون بسیار از موتورهای دیگر از امکاناتی برای ساخت بازی های تحت شبکه برخوردار است. برای دسترسی به صفحات وب و اطلاعات محتوی این موتور از خیلی راحت از واسطه www استفاده می کند که برای اطلاعات بیشتر می توانید به اینجا مراجعه نمایید.
کتابخانه های .NET socket می توانند برای شبکه Real Time  استفاده شوند. که از هر دو پروتوکل TCP/IP و UPD می توانند برای ارسال اطلاعات استفاده کنندو خیلی راحت به بانک اطلاعاتی ODBC می توانند متصل شوند.

فیزیک
 اشیای بازی در Unity می توانند توسط موتور فیزیکی بسیار معروف Physx که با این موتور منطبق گردید خواص فیزیکی بگیرند. البته سازندگان مدعی هستند که از تمام قدرت موتور Physx استفاده کرده اند که این مسلماً یک همچنین چیزی نمی تواند واقعیت داشته باشد زیرا قدرت موتور Physx بسیار فراتر از اجرای چند تکنیک همچون Rigidbodies و Joints ها که دیگر امروزه در هر موتور فیزیکی کوچک و بزرگی استفاده می شود است. مسلماً تکنیک هایی همچون Cloth که مربوط به شبیه سازی پارچه می باشد یا تخریب پذیری و... که در موتور Physx قرار دارد در این موتور قابل اجرا نیست این در حالی است که سازندگان موتورهایی همچون Torque یا Dark Basic که چنین ادعایی را نداشتند چنین امکاناتی را با کمک موتور Physx در موتورشان اجرا کردند.
امّا خوبی که این موتور دارد این است که می تواند تکنیک هایی نظیر Rigidbodies Joints Ragdolls را در ویرایشگر و خیلی راحت برای اشیای بازی اجرا کند.

صدا و فیلم در موتور

این موتور این توانایی را دارد که یک فیلم را بر روی یک سطح یا به صورت تمام صفحه اجرا کند. همچنین شما می توانید موقعیت صداها را تغییر داده و به ایجاد صدای سه بعدی بپردازید. برای فیلم از فرمتهای .mov, .mpg, .mpeg, .mp4, .avi, .asf و برای صدا از فرمت ogg پشتیبانی می کند.

اسکریپت نویسی در موتور
مسلماً یکی از بهترین قابلیتهای این موتور استفاده از چندین زبان محبوب و معروف و قدرتمند برای اسکریپت نویسی است که من معتقدم برخی ها تنها به عشق این زبان ها سمت این موتور کشیده می شوند. از جمله این زبان ها می توان به زبان جدید، محبوب و قدرتمند C# و زبان همیشه دوست داشتنی Java اشاره کرد. همچنین از زبان اسکریپتی Python معروف به Boo هم می توان در این موتور استفاده کرد. و تمام این کدها می توانند تحت کتابخانه های .NET استفاده شوند. که از بانک های اطلاعاتی، XML، دسترسی به فایل ها و شبکه استفاده کرد.



معمولاً اسکریپت نویسی خیلی کند و محدود است به عنوان مثال در موتور UDK نمی توان در محیط RunTime کدها را نوشت و باید حتماً از محیط خارج شده اسکریپت را کامپایل کرد (که زمان گیر و پر دردسر است) دوباره برنامه یا ویرایشگر را اجرا نمود تا کد نوشته شده یا رفتار در بازی را چک کرد. امّا در Unity مثل سایر موتورها می توان در محیط اجرا کدها را اجرا نمود.
سازندگان معتقدند زبان Java در این موتور 20 درصد سریع تر از زبان Java تحت Flash یا Director اجرا می شود. همچنین از دیگر مزایای اسکریپت نویسی در این موتور می توان به راحتی و انعطاف پذیری آن اشاره کرد به عنوان مثال حرکت، چرخش و تغییر مقیاس یک شی با یک خط کد انجام پذیر است.

نور و سایه

موتور Unity دارای یک سیستم نورپردازی بهینه شده برای سایه های Real Time با سایه های RealTime و lightmap می باشد. از جمله امکانات سیستم نورپردازی این موتور می توان به سایه های نرم و صاف بهن صورت Real Time و پشتیبانی از Lightmap ها اشاره نمود در نسخه Pro این موتور تکنیک Screen Space Ambient Occlusion هم وجود دارد که برای طبیعی تر شدن سایه ها استفاده می شود. با کمک این تکنیک می توانید انسداد نور در گوشه های دیوار ها را خیلی طبیعی نشان دهید در حالی که در حالت عادی دیوار ها چه در سایه و چه در نور تقریباً یک نواخت نشان داده می شوند. یعنی یا روشن یا تاریک هستند و هیچ محدوده سایه ای بر روی دیوار نیست برای درک بیشتر دو تصویر زیر را با دقت نگاه کنید. تصویر اوّل این تکنیک اعمال شده و در تصویر دوم تکنیک اعمال نشده است.




اسناد آموزشی

این موتور دارای اسناد و مطالب آموزشی فراوانی در تارنمای اصلی این موتور در آدرس http://unity3d.com/support/documentation می باشد. همچنین چندین تارنما، ویژه آموزش این موتور ایجاد شده اند که از جمله این تارنماها می توان به http://unity-tutorials.com و http://unitytutorials.com اشاره نمود که البته برخی از آموزش های این تارنماها رایگان نمی باشد. همچنین تارنمای http://www.unifycommunity.com دارای یک ویکی خوب همراه با مقالات عالی پیرامون این موتور می باشد و یک کتاب هم تحت عنوان Unity Game Development Essentials پیرامون این موتور منتشر گردیده است.
در انتها به چندین وبلاگ آموزشی فارسی خوب که توسط چند تن از دوستان و محققین عزیز ایجاد گردیده اشاره نمود.
http://gamemaker.mihanblog.com
http://unity3d.mihanblog.com
http://3d-guide.mihanblog.com
و یک تارنمای فارسی زبان پیرامون این موتور
http://unity3d.ir
ارسال نظر برای این مطلب

کد امنیتی رفرش
اطلاعات کاربری
  • فراموشی رمز عبور؟
  • آرشیو
    آمار سایت
  • کل مطالب : 10
  • کل نظرات : 0
  • افراد آنلاین : 1
  • تعداد اعضا : 0
  • آی پی امروز : 19
  • آی پی دیروز : 6
  • بازدید امروز : 12
  • باردید دیروز : 0
  • گوگل امروز : 0
  • گوگل دیروز : 0
  • بازدید هفته : 12
  • بازدید ماه : 12
  • بازدید سال : 16
  • بازدید کلی : 373