برای بیشتر بازیها، OGG Vorbis را برای موسیقی و صدای محیطِ بلند و WAV بدون فشردهسازی را برای افکتهای کوتاه و پرتکرار عرضه کنید. FLAC را بهعنوان آرشیو و مستر بدون اتلاف نگه دارید، نه فرمت زمان اجرا، چون Godot و Unreal بهصورت بومی ایمپورتش نمیکنند. وقتی لوپ باید دقیقاً در حد نمونه (sample) باشد WAV و وقتی حجم دانلود یا حافظه مهمتر است OGG را انتخاب کنید.
آخرین بازبینی: مهر ۱۴۰۵
یک بازی کدام فرمت صوتی را باید عرضه کند؟
پاسخ صادقانه «بیشتر از یکی» است. یک بازی معمولی چند ساعت موسیقی، چند ساعت صدای محیط و هزاران افکت کوچک را ترکیب میکند. هر کدام نیاز متفاوتی دارند و فرمت متفاوتی میارزند:
- موسیقی و صدای محیطِ بلند: OGG Vorbis. با تنظیمات کیفیت معقول، فایلها تقریباً یکدهم WAV حجم دارند و موتور میتواند آنها را از روی دیسک استریم کند.
- افکتهای کوتاه و تکراری (قدمها، کلیکهای رابط، برخوردها): WAV، یا هر چیزی که موتورتان بهطور داخلی به آن تبدیل میکند. دیکد کردن فایل lossy در هر بار پخش یک قدم، روی کلیپ نیمثانیهای تقریباً بدون صرفهجویی در حجم، CPU هدر میدهد.
- آرشیو مستر شما: FLAC یا WAV، بیرون از پروژهی بازی نگهداری شود. همیشه از مستر بدون اتلاف خروجی بگیرید، هرگز از فایلی که قبلاً فشرده شده.
همهی مطالب زیر راهنماست. اعداد دقیق با محتوا و تنظیمات انکودر عوض میشود، پس با ترکهای خودتان آزمایش کنید.
OGG در برابر WAV در برابر FLAC: مقایسه
| WAV (PCM) | FLAC | OGG Vorbis | |
|---|---|---|---|
| فشردهسازی | ندارد | بدون اتلاف (lossless) | با اتلاف (lossy) |
| حجم معمول نسبت به WAV ۱۶ بیتی | 100% | اغلب حدود نصف | اغلب حدود یکدهم در کیفیت متوسط |
| کیفیت شنیداری | دقیق | دقیق | در تنظیمات کیفیت بالاتر بسیار خوب |
| نقطهی لوپ داخلی | بله، با بخش smpl | استاندارد ندارد | استاندارد ندارد (تگها گسترده خوانده نمیشوند) |
| هزینهی دیکد | ندارد | کم | کم تا متوسط |
| Godot 4 | بومی | فرمت ایمپورت بومی نیست | بومی |
| Unity | بومی | ایمپورت میشود | بومی |
| Unreal | بومی | فرمت ایمپورت پیشفرض نیست | فرمت ایمپورت پیشفرض نیست |
یک WAV استریو، 16 بیت و 44.1 kHz حدود 10 MB در دقیقه حجم دارد. با 24 بیت و 48 kHz به حدود 17 MB در دقیقه میرسد. یک فایل Vorbis با حدود 160 kbps تقریباً 1.2 MB در دقیقه است. ده ترک سهدقیقهای در قالب WAV حدود 300 MB و در قالب Vorbis حدود 36 MB میشود، که فرق بین یک دانلود راحت موبایل و یک دانلود دردسرساز است.
آیا فشردهسازی lossy موسیقی بازی را خراب میکند؟
بهندرت. Vorbis در کیفیت متوسط تا بالا برای بیشتر بازیکنان روی بیشتر اسپیکرها شفاف است و موسیقی بازی معمولاً زیر افکتها و دیالوگ شنیده میشود. مشکلها در دو جا پیدا میشوند:
- بیتریت خیلی پایین، که سنجها و پدهای کشیده محو میشوند و کیفیتی «چرخان» پیدا میکنند.
- انکود مکرر. اگر یک فایل Vorbis را به فرمت lossy دیگری تبدیل کنید، خطاها روی هم جمع میشوند. فقط یک بار و از مستر انکود کنید.
اگر مطمئن نیستید، یک لوپ آزمایشی را با دو سطح کیفیت انکود کنید، یک دقیقه با هدفون لوپش کنید و به گوشهایتان اعتماد کنید. پایینترین تنظیمی را انتخاب کنید که از تنظیم بالاتر تشخیصناپذیر باشد.
لوپ و پخش بدون وقفه (gapless) در هر فرمت چه فرقی دارد؟
فرمتها دقیقاً اینجا گاز میگیرند، چون موسیقی در بازی لوپ میشود و کلیک در محل اتصال شایعترین باگ صوتی پروژههای ایندی است.
- WAV میتواند نقاط لوپ را در بخش
smplحمل کند. Godot و بیشتر میانافزارها آن را هنگام ایمپورت میخوانند، پس لوپ را خود فایل توصیف میکند. WAV همچنین دقیق در حد نمونه است: آنچه رندر کردهاید همان پخش میشود. - OGG Vorbis معادلی ندارد که موتورها بر سرش توافق داشته باشند. در عمل کل فایل را لوپ میکنید و پرچم لوپ را در موتور فعال میکنید. اگر انکودر تعداد دقیق نمونهها را حفظ کرده باشد، دیکودر لوپکننده دقیقاً طول رندرشده را تکرار میکند. اگر موتور در محل اتصال دیکودر را دوباره راه بیندازد، ممکن است یک تیک ضعیف شنیده شود. هر ترک لوپی را روی پلتفرم مقصد تست کنید.
- FLAC جایی که پشتیبانی شود میتواند کل فایل را لوپ کند، اما استاندارد پرکاربردی برای نقطهی لوپ وجود ندارد.
- MP3 بهتر است برای لوپ کنار گذاشته شود، چون پدینگ انکودر در ابتدا و انتها سکوت اضافه میکند.
برای موسیقی لوپی فشرده، لوپ را به تعداد صحیحی میزان رندر کنید تا انتها از نظر موسیقایی هم به ابتدا وصل شود. همین ایده در موسیقی تطبیقی ۱۰۱ هم آمده، جایی که همهی وضعیتها طول لوپ یکسان دارند تا ترنزیشنها همفاز بمانند.
Godot و Unity و Unreal هر فرمت را چطور مدیریت میکنند؟
Godot 4 فایلهای WAV و Ogg Vorbis (و MP3) را ایمپورت میکند. ایمپورت WAV حالت لوپ را در پنل Import نشان میدهد و در صورت وجود، لوپ smpl خوانده میشود. برای Ogg، لوپ را روی استریم ایمپورتشده تنظیم میکنید. اتصال گامبهگام در آموزش موسیقی تطبیقی Godot آمده است.
Unity فایلهای WAV، OGG، FLAC و غیره را میپذیرد و هنگام ایمپورت طبق تنظیمات هر کلیپ دوباره انکود میکند. مهمترین تنظیم نوع بارگذاری (load type) است:
- Decompress On Load برای افکتهای کوتاه: پخش سریع، حافظهی بیشتر.
- Compressed In Memory برای کلیپهای میانطول: RAM کمتر، هزینهی CPU کوچک در هر پخش.
- Streaming برای موسیقی بلند: ردپای حافظهی ناچیز، هنگام پخش از دیسک میخواند.
Unity هیچ نقطهی لوپی از Vorbis نمیخواند، پس لوپ همان کل کلیپ است. برای کنترلری که این را مدیریت میکند، نحوهی افزودن موسیقی تطبیقی در Unity را ببینید.
Unreal Engine مورد دردسرساز است. Unreal پیشفرض WAV را ایمپورت میکند و در زمان پکیج کردن به فرمت فشردهی خودش میپزد، پس فرمت منبعی که در پروژه میگذارید عملاً WAV است. Unreal پیشفرض نمیتواند .ogg را ایمپورت کند، پس اگر ابزارتان OGG خروجی میدهد، برای Unreal به WAV تبدیل کنید یا از یک پلاگین ایمپورت Vorbis استفاده کنید. مستندات فعلی نسخهی موتورتان را بررسی کنید، چون پشتیبانی ایمپورت بین نسخهها عوض میشود.
استریم یا decompress در بارگذاری؟
تصمیم بیشتر به طول کلیپ و دفعات پخش بستگی دارد:
- کمتر از حدود 2 ثانیه و پرتکرار: به PCM دیکامپرس کنید و در حافظه نگه دارید. قدمها، شلیکها، کلیکها.
- چند ثانیه تا حدود 20 تا 30 ثانیه: فشرده در حافظه نگه دارید، یا اگر حافظه اجازه میدهد دیکامپرس کنید. استینگرها، لوپهای کوتاه صدای محیط، خطوط دیالوگ.
- بلندتر از آن: از دیسک استریم کنید. موسیقی، صدای محیط بلند، صدای کاتسین.
این آستانهها قاعدهی سرانگشتی هستند. روی ضعیفترین دستگاه هدف پروفایل بگیرید، چون محدودیت واقعی هر کدام از CPU، RAM یا سرعت دیسک است که زودتر تمام شود.
موبایل چطور؟
موبایل وزنها را عوض میکند. حجم ذخیرهسازی و دانلود مهم است، RAM محدود است و دیکد کردن با همهی کارهای دیگر برای باتری رقابت میکند. یک پیشفرض قابلقبول این است: Vorbis برای موسیقی (استریمشده) و مجموعهی کوچکی از افکتهای کوتاه بهصورت PCM یا کدک کمهزینهی بومی موتور. از دیکد همزمان چند ترک بلند فشرده بپرهیزید. اگر استمهای تطبیقی را لایه میکنید، یادتان باشد هر استریم همزمان یعنی یک دیکودر در حال اجرا، پس یک ترک چهارلایه حدود چهار برابر کار دیکد یک ترک را میطلبد.
نرخ نمونهبرداری و عمق بیت کدام؟
44.1 kHz عرضه کنید، مگر اینکه پایپلاین شما روی 48 kHz استاندارد شده باشد. بالاتر از 48 kHz برای پخش بازی فقط حجم اضافه میکند و برای موسیقی و افکت فایدهی شنیدنی ندارد. دربارهی 16 بیت در برابر 24 بیت: در 24 بیت تولید کنید، در 16 بیت عرضه کنید. فضای هدروم اضافه موقع میکس کمک میکند، اما بازیکن در فایل نهایی نمیشنودش و WAV را 50% بزرگتر میکند.
Mowjera چطور این فرمتها را خروجی میدهد
Mowjera، یک DAW مرورگرمحور برای موسیقی تطبیقی بازی، WAV را با 16 یا 24 بیت و 44.1 یا 48 kHz و همراه با بخش لوپ smpl خروجی میدهد تا موتورها لوپ را ببینند. همچنین FLAC و OGG Vorbis خروجی میدهد. کیفیت Vorbis از -1 تا 10 است و پیشفرض حدود 160 kbps. رندرر داخلی در 44.1 kHz کار میکند، پس خروجی 48 kHz ریسمپل میشود و جزئیات فرکانس بالای جدیدی اضافه نمیکند. لوپ هر وضعیت به تعداد صحیحی میزان رندر میشود. خروجی MP3، Opus یا AAC وجود ندارد. اگر میخواهید امتحانش کنید، ادیتور را باز کنید و یک لوپ را در دو فرمت خروجی بگیرید و مقایسه کنید.
سوالات متداول
برای موسیقی بازی OGG بهتر است یا WAV؟
برای بیشتر موسیقیهای عرضهشده OGG Vorbis بهتر است، چون خیلی کوچکتر است و استریم خوبی دارد. وقتی لوپ باید دقیق در حد نمونه باشد یا هزینهی دیکد صفر میخواهید، WAV بهتر است. مصالحهی رایج این است: WAV برای افکتهای کوتاه و استینگرهای لوپی فشرده، و OGG برای ترکهای پسزمینهی بلند.
آیا Unreal Engine از فایلهای OGG پشتیبانی میکند؟
Unreal پیشفرض فایلهای .ogg را مستقیم ایمپورت نمیکند. بهجایش WAV ایمپورت کنید و بگذارید Unreal هنگام cook کردن پروژه فشردهاش کند، یا یک پلاگین ایمپورت Vorbis اضافه کنید. همیشه با مستندات نسخهی موتورتان تطبیق دهید، چون پشتیبانی ایمپورت بین نسخهها ممکن است عوض شود.
آیا FLAC برای بازی خوب است؟
FLAC برای آرشیو مسترها عالی است، چون بدون اتلاف و حدود نصف WAV است. بهعنوان فرمت زمان اجرا ضعیفتر است: Godot و Unreal پیشفرض آن را بومی ایمپورت نمیکنند و وقتی موتور دوباره انکودش میکند، نسبت به WAV چیزی به دست نمیآورید. FLAC را برای ذخیره و تحویل به همکاران نگه دارید.
چرا لوپ OGG من کلیک دارد؟
معمولاً دیکودر بهجای لوپ بدون وقفه در انتها دوباره شروع میکند، یا فایل از رندری انکود شده که با میزانها همتراز نبوده. لوپ را دوباره به تعداد صحیحی میزان رندر کنید، پرچم لوپ موتور را روی کل استریم فعال کنید و روی دستگاه هدف تست کنید. اگر اتصال باید دقیق باشد، از WAV با نقطههای لوپ استفاده کنید.
برای موسیقی بازی با OGG از چه بیتریتی استفاده کنیم؟
از حدود 128 تا 192 kbps (کیفیت Vorbis بین 4 و 6) شروع کنید و بعد تست کنید. برای صدای محیط پسزمینه پایینتر هم مشکلی نیست، در حالی که سازهای تکِ بیپوشش و سنجها اول از همه آرتیفکت را لو میدهند. پایینترین کیفیتی را انتخاب کنید که با هدفون روی یک قسمت لوپشده فرقش را نمیشنوید.