تنظیمات صداها در یونیتی
آشنایی کوتاه با موتوربازی سازی یونیتی :
یونیتی (به انگلیسی:Unity ) یک موتور بازی Cross-platform[1] است که توسط فناوریهای یونیتی (Unity Technologies) ساخته شده است و در ساخت بازی ویدئویی برای کامپیوترهای شخصی، کنسولهای بازی، دستگاههای همراه و وبسایتها استفاده میشود. برای اولین بار در کنفرانس جهانی توسعهدهندگان اپل در سال ۲۰۰۵ برای سیستم عامل OS X معرفی شد و از آن زمان تا به حال بر روی بیست و یک پلتفرم دیگر توسعه یافته است.
یونیتی از جمله موتورهای بازی ساز است که میتواند از زبان برنامهنویسی معروف سی شارپ پشتیانی کند. زبان سیشارپ قابلیت شی گرایی دارد و به واسطه این قابلیت، قابلیتهایی همچون ارثبری را نیز دارا میباشد، این قابلیتها در پروژههای بزرگ برنامهنویسی بسیار سودمند هستند.
یونیتی برای پلتفرمهای زیر خروجی ایجاد میکند:
مک اواس، وی، ایکسباکس ۳۶۰، پلیاستیشن ۳، آیاواس، اندروید، وب ۵HTML، ایکس باکس وان، پلی استیشن ۴
تقریباً میتوان گفت که یونیتی برای تمامی پلتفرمهای موجود خروجی بازی تولید میکند و ممکن است کمتر نیاز به ویرایش اسکریپتهای پروژه پیدا کنید.این قابلیت از لحاظ تجاری بسیار مهم است، به خصوص اجرای بازی بر روی وب و به صورت چند کاربره که باعث جذب کاربران بسیار میشود. تعدادی از بازیهای موجود در شبکه اجتماعی فیسبوک توسط موتور بازی ساز یونیتی ایجاد شده است.
انواع load Type ها و Compression Formatها:
- compression in memory
کلیپ صوتی در ram ذخیره می شود و هنگام پخش فشرده نخواهد شد و برای بازی به حافظه اضافی نیست.
- streaming
کلیپ صوتی در حافظه پایدار دستگاه (هارد دیسک ، مموری و … ) ذخیره میشود و در حالت پخش stream می شود. برای ذخیرهسازی و اجرا شدن نیاز به Ram ندارد ( حداقل این مقدار قابل توجه نیست).
- Decompress On Load
کلیپ صوتی در Ram بصورت فشرده نشده ذخیره میشود، این گزینه به بیشترین مقدار حافظه نیاز دارد، اما اجرای آن به قدرت CPU بیشتری نسبت به حالات قبل نیاز ندارد (یا همان حالت استراحت است).
موسیقی یا صداهای محیط:
مطمئناً ما نمیخواهیم موسیقی پس از پخش در حافظه فشرده شود، پس دو گزینه داریم:
- استفاده از Load Type: Streaming و Compression Format: Vorbis
این ترکیب از کمترین حافظه استفاده می کند اما به قدرت پردازنده و توان ورودی و خروجی دیسک نیاز دارد.
- استفاده از Load Type: Compressed In Memory و Compression Format: Vorbis
تنها تفاوت با روش اول این است که I/O دیسک را برخی نیازهای حافظه مبادله می کند.
نکته: توجه داشته باشید که میتوانید در ازای کیفیت صدا، اسلایدر Quality را تنظبم کنیم تا اندازه کلیپ فشرده شده کاهش یابد. معمولا ۱۰۰ درصد خیلی زیاد است و ۷۰ درصد توصیه می شود.
نکته: اگر دو تا کلیپ موسیقی محیط در حال اجرا داشته باشید مقدار خیلی زیادی از قدرت CPU را میگیرد.
جلوه های صوتی:
جلوه های صوتی معمولاً کلیپ های صوتی کوتاه یا متوسط هستند. همچنین این موارد اغلب به ندرت قابل پخش هستند و در اینجا چند قانون آورده شده است:
- برای کلیپهای صوتی که اغلب پخش میشوند و کوتاه هستند از قالب Decompress On Load و PCM[2] یا ADPCM[3] برای فشرده سازی استفاده می شود. با انتخاب PCM فشرده سازی نیاز نیست و اگر کلیپ صوتی کوتاه باشد، خیلی سریع بارگیری میشود. همچنین میتوانید از ADPCM استفاده کنید؛ به باز کردن از حالت فشرده نیاز دارد اما از Vorbis[4] خیلی سبکتر است.
- برای کلیپ های صوتی که اغلب پخش میشوند و متوسط هستند از compression in memory و ADPCM برای فشرده سازی استفاده میکنیم. ADPCM حدوداً ۳ونیم برابر کوچکتر از PCM خام است و الگوریتم بازکردن فشردهسازی آن اندازه Vorbis مصرف نمیکند.
- برای کلیپ های صوتی که به ندرت پخش میشوند و کوتاه هستند هم مانند (۲) عمل میکنیم.
- برای کلیپهای صوتی که به ندرت پخش میشوند و متوسط هستند از compression in memory و Vorbis استفاده میشود. این SFX ممکن است خیلی طولانی باشد تا با استفاده از ADPCM ذخیره و به ندرت پخش شود. بنابراین فشار اضافه ای که به CPU برای باز کردن فشردهسازی میآید اهمیتی ندارد.
گزینه Preload Audio Data:
در صورت فعال بودن هنگام بارگذاری Scene؛ کلیپ صوتی از قبل بارگیری میشود. این بهصورت پیشفرض روشن است. که نشان دهنده رفتار استاندارد Unity است که در هنگام اجرای Scene از قبل تمام Audio Clipها بارگذاری را تمام کردهاند. اگر این متغیر فعال نباشد با اولین Play یا Play On shot بارگذاری میشود. یا میتوانید از AudioSource.LoadAudioData() برای بارگیری و با استفاده از تابع AudioSource.UnloadAudioData() فضا را آزاد کنید.
در انتها تنظیماتی که با تجربه ای که بدست آمده و ازش استفاده میکنم را بصورت خلاصه میذارم:
صدای کارکترها:
صداهای بازی:
موزیک :
[۱] این تکنولوژیها برنامهنویس یک بار برنامه را مینویسد و سپس کامپایلر برای هر سیستمعامل (مهمتر از همه ویندوز، لینوکس، مکینتاش و…) فایل اجرایی جداگانهای تولید میکند
[۲] این نوع تنظیم کیفیت بالا و حجم بالایی برای فایل دارد مناسب برای جلوه های صوتی کوتاه است.
[۳] این نوع تنظیم برای جلوه های صوتی که زیاد تکرار می شوند مناسب است
[۴] این نوع تنظیم برای فشرده سازی و کاهش حجم جلوه های صوتی مورد استفاده قرار میگیرد.
منابع :
- http://blog.theknightsofunity.com/wrong-import-settings-killing-unity-game-part-2/
- https://docs.unity3d.com/Manual/class-AudioClip.html
- https://fa.wikipedia.org/wiki/%DB%8C%D9%88%D9%86%DB%8C%D8%AA%DB%8C_(%D9%85%D9%88%D8%AA%D9%88%D8%B1_%D8%A8%D8%A7%D8%B2%DB%8C)
نویسنده: سعید علی اکبری
دیدگاه (2)
خیلی ممنون از مطالب مفیدتون
خیلی ممنون از شما که وقت گذاشتید و مطالعه کردید 🙂