درک Smacker (.smk): فرمت ویدئویی کلاسیک دوران طلایی بازیهای رایانهای
اگر در اواسط تا اواخر دههٔ ۱۹۹۰ یا اوایل دههٔ ۲۰۰۰ بازیهای ویدئویی رایانهای را بازی کردهاید — مانند Diablo، StarCraft، Baldur’s Gate یا Warcraft II — با قالب ویدئویی Smacker (.smk) مواجه شدهاید.
قبل از این که رمزگشایی MPEG با شتاب سختافزاری و پردازندههای چند هستهای اختصاصی به استاندارد در رایانههای شخصی تبدیل شوند، پخش ویدئوی تمامحرکتی (FMV) صاف و همگام با صدای دیجیتال چند مسیر یک مانع محاسباتی بزرگ بود. درایوهای استاندارد CD-ROM دادهها را با سرعت متوسط ۱۵۰ تا ۳۰۰ کیلوبایت بر ثانیه (سرعتهای ۱x تا ۲x) انتقال میدادند و پردازندههای معمولی ۴۸۶ یا Pentium اولیه نمیتوانستند کدکهای تبدیل سنگین محاسباتی را پردازش کنند.
برای حل این مشکل، RAD Game Tools توسعه داد Smacker، یک معماری ویدئویی با کارایی بالا که بهطور خاص برای فشردهسازی فقط نرمافزاری بهینهسازی شده است. فایلهای ویدئویی خام یا محصور شدهای که با این خط لوله تولید میشوند، پسوند فایل .smk را دارند.
1. فایل SMK چیست؟
یک فایل .smk یک کانتینر چندرسانهای اختصاصی و جریان ویدئویی است که توسط RAD Game Tools (اکنون بخشی از Epic Games) ایجاد شده است. این فرمت حدود سال 1994 معرفی شد و Smacker به توسعهدهندگان امکان پخش سینماتیکهای تمامحرکت 256‑رنگی را مستقیماً از CD‑ROMهای تکسرعته بدون از دست دادن فریم یا متوقف شدن سیستم فراهم کرد.
بر خلاف کدکهای مدرن بین‑فریم که به شدت به محاسبات نقطه شناور و تبدیل کسینوس گسسته (DCT) وابستهاند، Smacker طوری طراحی شد که تقریباً بهصورت کامل از عملیات صحیح، جداول جستجو و روتینهای اسمبلی سطح پایین x86 استفاده کند. این فرمت تا دههٔ 1990 بر سینماتیکهای بازیها تسلط داشت تا زمانی که RAD Game Tools جانشین 24‑بیتی با رنگ واقعی خود، Bink Video (.bik)، را در سال 1999 معرفی کرد.
2. ویژگیهای اصلی کدک Smacker
میراث فنی پایدار Smacker ناشی از تعادل دقیق آن بین پیچیدگی محاسباتی کم و وفاداری بصری بر روی سختافزارهای رنگ نمایهای است:
کوانتایزیشن پالت ایندکسشده ۸ بیتی
در اواسط دههٔ 1990، اکثر نمایشگرهای رایانه شخصی در حالتهای VGA یا SVGA با 256 رنگ (پالت 8‑بیتی) کار میکردند. Smacker این محدودیت را پذیرفت. بهجای ذخیرهسازی مقادیر RGB 24‑بیتی و مجبور کردن سیستمعامل به انجام دیتریگ آهسته بهصورت لحظهای، Smacker فریمهای ویدئویی را مستقیماً نسبت به پالتهای پویا 256‑رنگی فشردهسازی میکرد.
تغییر شکل و چرخش پالت فریم به فریم
Smacker بهروزرسانیهای بدون درز پالت بین فریمها را پشتیبانی میکرد. اگر یک صحنه برش داخل بازی از یک تنظیم روشن روزانه به یک غار تاریک تغییر میکرد، فایل .smk میتوانست تغییرات محلی پالت یا تعویض کامل پالت را در فریمهای کلیدی خاص اعمال کند و از باندینگ و تحریف رنگ جلوگیری کند.
کوانتسازی برداری & تجزیه بلوکی
فریمهای داخل یک جریان .smk به بلوکهای پیکسلی $4 \times 4$ تقسیم میشوند. Smacker از تکنیکهای کمّیسازی برداری همراه با مجموعهای فشرده از حالتهای عملیاتی برای هر بلوک استفاده میکند:
- Skip: پیکسلها را از فریم قبلی حفظ میکند.
- Solid/Single Color: کل بلوک $4 \times 4$ را با یک شاخص پالت تکرنگ پر میکند.
- Two-Color / Bitmask: دو ورودی پالت را تعریف کرده و از یک ماسک ۱۶ بیتی برای نگاشت هر پیکسل استفاده میکند.
- Full Data: هنگام وقوع حرکت پیچیده، توالیهای پیکسلی دقیق را بهصورت مستقیم ذخیره میکند.
این طبقهبندی در سطح بلوک اجازه داد صحنههایی با پسزمینههای ثابت و عملهای محلی (مانند سرهای متکلم یا منوهای اسکرولشونده) به نرخ دادهای ناچیز فشرده شوند.
چندپخشی بومی صوتی چند‑مسیر
Smacker یکی از اولین فرمتهای متمرکز بر بازی بود که از صوت چندکاناله و چندمسیره یکپارچه پشتیبانی میکرد. توسعهدهندگان میتوانستند صدای فشرده تککاناله یا استریو را مستقیماً در کنار تکههای ویدئویی ترکیب کنند. این معماری از موارد زیر پشتیبانی میکرد:
- صدا PCM بومی بدون فشردهسازی.
- فشردهسازی صوتی مبتنی بر DPCM تطبیقی اختصاصی RAD (فشردهسازی صدا به نمایش ۴ بیتی با حداقل بار پردازنده).
- مسیرهای زبانی مستقل برای بومیسازیهای بینالمللی بازی بدون تکرار مسیر ویدئویی پایه.
طراحی نامتقارن (فشردهسازی سریع نسبت به رمزگذاری سریع)
الگوریتمهای فشردهسازی Smacker عمداً نامتقارن بودند: رمزگذاری زمان و بهینهسازی ریاضی قابلتوجهی میطلبید، اما بازگشایی تنها به حداقل چرخههای پردازنده نیاز داشت. یک کامپیوتر 486 با سرعت 33 MHz میتوانست ویدئوی Smacker با 15 تا 30 فریم بر ثانیه را بهصورت زمان واقعی رمزگشایی کند و همزمانی صدا را حفظ کند.
۳. خلاصه ویژگیهای کلیدی
| ویژگی | مشخصات |
|---|---|
| توسعهدهنده | RAD Game Tools (در سال 2021 توسط Epic Games خریداری شد) |
| انتشار اولیه | 1994 |
| پسوند فایل | .smk |
| جانشین | ویدئوی Bink (.bik, .bk2) |
| عمق رنگ | فهرستگذاری 8 بیتی (256 رنگ قابل انتخاب در هر فریم) |
| روش تبدیل | کوانتسازی برداری فضایی ($4 \times 4$ تقسیمبندی بلوک) |
| فشردهسازی زمانی | مطابقت بلوک بین‑فریم با ردیابی چرخه پالت |
| قالب صدا | PCM خطی، Smacker 4‑bit DPCM، کانالهای چندمسیر |
| استفاده اصلی در صنعت | صحنههای برش بازیهای ویدئویی، سینماتیکهای مقدمه، لوگوهای انیمیشنی |
| پشتیبانی از رمزگشایی | یکپارچه از طریق FFmpeg، Libavcodec، RAD Video Tools |
۴. نحوه باز کردن و پخش فایلهای ویدئویی .smk
از آنجا که پخشکنندههای مدرن رسانهای دیگر بهصورت پیشفرض از پشتیبانی ویدئوی بازیهای 8‑بیتی قدیمی برخوردار نیستند، برنامههای استانداردی مانند Windows Media Player یا QuickTime قادر به باز کردن فایلهای .smk نخواهند بود. میتوانید این فایلها را بهصورت قابل اعتماد با استفاده از ابزارهای زیر پخش کنید:
روش ۱: پخشکنندهٔ رسانهای VLC (چندپلتفرمی)
VLC شامل پشتیبانی بومی از رمزگشایی ویدئوی Smacker و صدا از طریق libavcodec در FFmpeg میباشد:
- برنامه VLC Media Player را دانلود و اجرا کنید.
- فایل
.smkرا بهصورت کشیدن و رها کردن مستقیماً به داخل پنجره VLC بکشید. - Note: اگر رنگها بیش از حد اشباع یا جابجا به نظر برسند، میتوانید شتابدهی سختافزاری ویدئوی VLC را موقتاً در
Tools > Preferences > Input / Codecsغیرفعال کنید تا مپگر رنگ نرمافزاری بتواند پالت 8‑بیتی را بهصورت مستقیم رندر کند.
روش ۲: FFplay (خط فرمان)
اگر مجموعه FFmpeg را نصب کردهاید، ابزار ffplay بستهشده سریعترین و دقیقترین راه برای رندر کردن جریانهای .smk است:
ffplay cutscene.smk
روش ۳: ابزارهای ویدئویی RAD (ویندوز)
RAD Game Tools به ارائه مجموعه ابزار The RAD Video Tools ادامه میدهد:
- The RAD Video Tools را از وبسایت رسمی Epic Games / RAD دانلود و نصب کنید.
- ابزار را اجرا کنید و در سیستمفایل خود بهسوی فایل هدف
.smkبروید تا آن را انتخاب کنید. - بر روی دکمه Play کلیک کنید تا سینمایی را با مقیاسگذاری و زمانبندی پالت اصلی و اصیل آن مشاهده کنید.
۵. نحوه ایجاد و تبدیل ویدئوی .smk
آیا هنوز میتوانید فایلهای بومی .smk ایجاد کنید؟
امروزه توسعهدهندگان بهندرت فایلهای اصلی .smk را ایجاد میکنند زیرا سختافزارهای مدرن بهراحتی 4K 10‑bit HEVC یا AV1 را رمزگشایی میکنند. با این حال، اگر در حال توسعه نرمافزارهای خانگی، مد کردن بازیهای کلاسیک، یا ساخت پروژههای رایانهای رترو هستید:
- The RAD Video Tools شامل فشردهساز قدیمی «Smack» است. میتوانید یک فایل
.aviبدون فشردهسازی یا توالی تصویر را بارگذاری کنید و به.smkرمزگذاری کنید. - توجه: FFmpeg شامل یک decoder بومی Smacker است، اما به دلیل ماهیت مالکیتی و منسوخ فرمت، شامل یک encoder بومی Smacker نمیشود.
تبدیل .smk به MP4 مدرن (H.264 / AAC)
برای حفظ صحنههای قدیمی یا بارگذاری آنها در پلتفرمهای مدرن (مانند یوتیوب یا مرورگرهای وب)، آنها را با استفاده از FFmpeg به MP4 تبدیل کنید:
# Convert classic Smacker video to modern universally compatible MP4
ffmpeg -i intro.smk -c:v libx264 -pix_fmt yuv420p -crf 18 -c:a aac -b:a 192k intro_restored.mp4
نکته: چون .smk از پالتهای رنگی ایندکسشده استفاده میکند، اعمال -pix_fmt yuv420p تضمین میکند که دستگاههای موبایل مدرن و مرورگرهای وب ویدیو را بدون خطاهای نمایش صفحه سیاه پخش کنند.
6. سؤالات متداول (FAQ)
**Q1: دلیل اصلی استفاده توسعهدهندگان بازی از فایلهای SMK چه بود؟ Smacker امکان پخش ویدیوهای روان و همگامسازیشده را بر روی درایوهای CD-ROM آهسته و پردازندههای کممصرف بدون نیاز به رمزگشایهای سختافزاری فراهم میکرد.
**Q2: تفاوت فایل SMK با فایل BIK چیست؟
Smacker (.smk) به ۲۵۶ رنگ (۸ بیت) محدود است، در حالی که جانشین آن، Bink Video (.bik)، از رنگ واقعی ۲۴ بیتی کامل و وضوحهای بالاتر پشتیبانی میکند.
**Q3: آیا مرورگرهای وب مدرن میتوانند فایلهای .smk را بهصورت بومی پخش کنند؟ نه، مرورگرهای وب مدرن از کدک Smacker پشتیبانی نمیکنند و ابتدا نیاز است فایلها به MP4 یا WebM تبدیل شوند.
**Q4: آیا یک فایل SMK بهصورت همزمان از چندین زبان صوتی پشتیبانی میکند؟ بله، کانتینر Smacker امکان داشتن چندین مسیر صوتی مستقل که بهصورت متقابل در کنار ویدئو برای صحنههای محلیسازی شده قرار میگیرند، را فراهم میکند.
**Q5: امروزه مالک فناوری ویدئویی Smacker کیست؟ Epic Games پس از خرید RAD Game Tools در ژانویه 2021، مالک Smacker شد.
7. مراجع و منابع مفید
- پرتال رسمی RAD Game Tools: نمای کلی RAD Game Tools (Epic Games)
- مشخصات Smacker در ویکی چندرسانهای: ویکی چندرسانهای - تحلیل فنی Smacker
- مستندات کدک FFmpeg: قالبهای ویدئویی پشتیبانیشده و رمزگشایهای FFmpeg
- مرجع FileInfo: توضیح پسوند فایل SMK