Zrozumienie Smacker (.smk): Klasyczny format wideo złotej ery gier PC
Jeśli grałeś w gry wideo na PC w połowie do końca lat 90. lub na początku lat 2000 — takich jak Diablo, StarCraft, Baldur’s Gate lub Warcraft II — napotkałeś format wideo Smacker (.smk).
Zanim sprzętowo przyspieszone dekodowanie MPEG i dedykowane wielordzeniowe procesory stały się standardem w komputerach osobistych, odtwarzanie płynnego, zsynchronizowanego wideo pełnoklatkowego (FMV) z wielościeżkowym dźwiękiem cyfrowym było ogromną przeszkodą obliczeniową. Standardowe napędy CD-ROM przesyłały dane z umiarkowaną prędkością 150 do 300 KB/s (prędkości 1x‑2x), a typowe procesory 486 lub wczesne Pentium nie były w stanie obsłużyć obciążających kodów transformacyjnych.
Aby to rozwiązać, RAD Game Tools opracowało Smacker, wysokowydajną architekturę wideo zoptymalizowaną specjalnie pod dekompresję wyłącznie programową. Surowe lub enkapsulowane pliki wideo wyprodukowane w tym łańcuchu posiadają rozszerzenie pliku .smk.
1. Czym jest plik SMK?
Plik .smk jest własnościowym kontenerem multimedialnym i strumieniem wideo stworzonym przez RAD Game Tools (obecnie część Epic Games). Wprowadzony około 1994 roku, Smacker pozwalał deweloperom strumieniować pełnoklatkowe filmy w 256 kolorach bezpośrednio z jednoprzędnikowych CD-ROM‑ów, bez utraty klatek i zacięć systemu.
W przeciwieństwie do współczesnych kodeków międzyklatkowych, które mocno opierają się na arytmetyce zmiennoprzecinkowej i dyskretnych transformacjach cosinusowych (DCT), Smacker został zaprojektowany tak, aby działał prawie wyłącznie przy użyciu operacji całkowitoliczbowych, tablic przeglądowych i niskopoziomowych procedur asemblera x86. Dominował w filmach gier lat 90., aż do momentu, gdy RAD Game Tools wprowadził jego 24‑bitowy, true‑colorowy następca, Bink Video (.bik), w 1999 roku.
2. Główne cechy kodeka Smacker
Trwałe dziedzictwo techniczne Smackera wynika z jego dopasowanego balansu między niską złożonością obliczeniową a wiernością wizualną na sprzęcie z indeksowanymi kolorami:
Kwantyzacja palety indeksowanej 8-bitowej
W połowie lat 90. zdecydowana większość wyświetlaczy PC działała w trybach VGA lub SVGA z 256 kolorami (paleta 8‑bitowa). Smacker przyjął to ograniczenie. Zamiast przechowywać 24‑bitowe wartości RGB i zmuszać system operacyjny do wolnego ditheringu w czasie rzeczywistym, Smacker kompresował klatki wideo bezpośrednio względem dynamicznych palet 256‑kolorowych.
Morfowanie i cykliczne zmiany palety klatka po klatce
Smacker obsługił płynne aktualizacje palety pomiędzy klatkami. Jeśli w grze scena przerywana przeszła z jasnego, dziennego otoczenia do ciemnej jaskini, plik .smk mógł wprowadzać lokalne zmiany palety lub całkowite wymiany palety na określonych klatkach kluczowych, unikając bandingu i zniekształceń kolorów.
Kwantyzacja wektorowa i dekompozycja blokowa
Klatki w strumieniu .smk są dzielone na bloki pikseli $4 \times 4$. Smacker wykorzystuje techniki kwantyzacji wektorowej połączone z kompaktowym zestawem trybów operacyjnych dla każdego bloku:
- Pomiń: Zachowaj piksele z poprzedniej klatki.
- Jednolity/Jednokolorowy: Wypełnij cały blok $4 \times 4$ jednym indeksem palety.
- Dwukolorowy / Bitmask: Zdefiniuj dwa wpisy w palecie i użyj 16‑bitowej maski do mapowania każdego piksela.
- Pełne Dane: Bezpośrednio przechowuj szczegółowe sekwencje pikseli, gdy występuje złożony ruch.
Ta klasyfikacja na poziomie bloków pozwalała scenom z statycznym tłem i lokalizowaną akcją (taką jak mówiące głowy lub przewijane menu) na kompresję do pomijalnych przepływów danych.
Natywne multipleksowanie dźwięku wielościeżkowego
Smacker był jednym z pierwszych formatów skoncentrowanych na grach, które obsługiwały zintegrowany dźwięk wielokanałowy i wielościeżkowy. Programiści mogli przeplatać skompresowany dźwięk mono lub stereo bezpośrednio obok fragmentów wideo. Ta architektura obsługiwała:
- Natywny nieskompresowany dźwięk PCM.
- Własna, adaptacyjna kompresja audio oparta na DPCM firmy RAD (kompresująca dźwięk do 4-bitowej reprezentacji przy minimalnym obciążeniu CPU).
- Niezależne ścieżki językowe dla międzynarodowych lokalizacji gier bez duplikowania podstawowej ścieżki wideo.
Asymetryczny projekt (szybka dekompresja ponad szybkie kodowanie)
Algorytmy kompresji Smackera były celowo asymetryczne: kodowanie wymagało znacznego czasu i optymalizacji matematycznej, ale dekompresja potrzebowała jedynie minimalnej liczby cykli CPU. Skromny komputer 486 o częstotliwości 33 MHz mógł w czasie rzeczywistym dekodować wideo Smacker o szybkości 15‑30 klatek na sekundę, zachowując synchronizację dźwięku.
3. Podsumowanie kluczowych cech
| Atrybut | Specyfikacja |
|---|---|
| Deweloper | RAD Game Tools (przejęte przez Epic Games w 2021 roku) |
| Wstępna wersja | 1994 |
| Rozszerzenie pliku | .smk |
| Następca | Bink Wideo (.bik, .bk2) |
| Głębia kolorów | 8-bit indeksowany (256 wybieralnych kolorów na klatkę) |
| Metoda Transformacji | Kwantyzacja wektorowa przestrzenna ($4 \times 4$ podział bloków) |
| Kompresja Czasowa | Dopasowywanie bloków międzyklatkowych z śledzeniem cyklu palety |
| Format Audio | Liniowy PCM, Smacker 4-bitowy DPCM, kanały wielościeżkowe |
| Główne zastosowanie w przemyśle | Sceny przerywnikowe w grach wideo, wstępne filmy, animowane loga |
| Obsługa dekodowania | Wbudowane poprzez FFmpeg, Libavcodec, RAD Video Tools |
4. Jak otworzyć i odtworzyć pliki wideo .smk
Ponieważ nowoczesne odtwarzacze multimedialne nie dostarczają już domyślnej obsługi starszych 8‑bitowych wideo z gier, standardowe aplikacje takie jak Windows Media Player czy QuickTime nie będą w stanie otworzyć plików .smk. Możesz odtwarzać je niezawodnie przy użyciu następujących narzędzi:
Metoda 1: VLC Media Player (wieloplatformowy)
VLC zawiera natywną obsługę dekodowania wideo i audio Smacker za pośrednictwem libavcodec FFmpeg:
- Pobierz i uruchom VLC Media Player.
- Przeciągnij i upuść plik
.smkbezpośrednio do okna VLC. - Uwaga: Jeśli kolory wydają się nadmiernie nasycone lub przesunięte, przyspieszenie sprzętowe wideo VLC można tymczasowo wyłączyć w
Tools > Preferences > Input / Codecs, aby mapper kolorów w oprogramowaniu renderował bezpośrednio 8‑bitową paletę.
Metoda 2: FFplay (wiersz poleceń)
Jeśli masz zainstalowany pakiet FFmpeg, dołączone narzędzie ffplay jest najszybszym i najdokładniejszym sposobem renderowania strumieni .smk:
ffplay cutscene.smk
Metoda 3: The RAD Video Tools (Windows)
RAD Game Tools nadal oferuje zestaw narzędzi The RAD Video Tools:
- Pobierz i zainstaluj The RAD Video Tools z oficjalnej strony Epic Games / RAD.
- Uruchom narzędzie i przejdź w systemie plików, aby zaznaczyć docelowy plik
.smk. - Kliknij przycisk Play, aby obejrzeć filmik z oryginalnym, autentycznym skalowaniem i timingiem palety.
5. Jak tworzyć i konwertować wideo .smk
Czy nadal możesz tworzyć natywne pliki .smk?
Współcześni programiści rzadko tworzą dziś oryginalne pliki .smk, ponieważ nowoczesny sprzęt łatwo dekoduje 4K 10-bitowy HEVC lub AV1. Jednakże, jeśli tworzysz oprogramowanie homebrew, modyfikujesz klasyczne gry lub budujesz retro projekty na PC:
- The RAD Video Tools zawiera starszy kompresor “Smack”. Możesz wczytać nieskompresowany plik
.avilub sekwencję obrazów i zakodować go do formatu.smk. - Uwaga: FFmpeg zawiera natywny dekoder Smacker, ale nie zawiera natywnego enkodera Smacker ze względu na własnościowy, przestarzały charakter formatu.
Konwertowanie .smk do nowoczesnego MP4 (H.264 / AAC)
Aby zachować klasyczne sceny przerywnikowe lub przesłać je na nowoczesne platformy (takie jak YouTube lub przeglądarki internetowe), skonwertuj je do formatu MP4 przy użyciu FFmpeg:
# 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
Wskazówka: Ponieważ .smk używa indeksowanych palet kolorów, wymuszenie -pix_fmt yuv420p zapewnia, że nowoczesne urządzenia mobilne i przeglądarki internetowe będą odtwarzać wideo bez błędów czarnego ekranu.
6. Najczęściej zadawane pytania (FAQ)
**Q1: Jaki był główny powód, dla którego twórcy gier używali plików SMK? Smacker umożliwiał płynne, zsynchronizowane odtwarzanie wideo na wolnych napędach CD-ROM i niskowydajnych procesorach bez konieczności użycia dekoderów sprzętowych.
**Q2: Jaka jest różnica między plikiem SMK a plikiem BIK?
Smacker (.smk) jest ograniczony do 256 kolorów (8‑bit), podczas gdy jego następca, Bink Video (.bik), obsługuje pełną 24‑bitową prawdziwą kolorystykę i wyższe rozdzielczości.
**Q3: Czy nowoczesne przeglądarki internetowe mogą odtwarzać pliki .smk natywnie? Nie, nowoczesne przeglądarki internetowe nie obsługują kodeka Smacker i wymagają najpierw konwersji plików do formatu MP4 lub WebM.
**Q4: Czy plik SMK obsługuje jednocześnie wiele języków audio? Tak, kontener Smacker umożliwia wiele niezależnych ścieżek audio przeplatanych z wideo dla zlokalizowanych scenek.
**Q5: Kto jest obecnie właścicielem technologii wideo Smacker? Epic Games jest właścicielem Smacker po przejęciu firmy RAD Game Tools w styczniu 2021 roku.
7. Bibliografia i przydatne zasoby
- Oficjalny portal RAD Game Tools: Przegląd RAD Game Tools (Epic Games)
- Specyfikacja Smacker w Multimedia Wiki: Multimedia Wiki – Analiza techniczna Smacker
- Dokumentacja kodeków FFmpeg: Obsługiwane formaty wideo i dekodery FFmpeg
- Odniesienie FileInfo: Wyjaśnienie rozszerzenia pliku SMK