ทำความเข้าใจ Smacker (.smk): รูปแบบวิดีโอคลาสสิกของยุคทองของการเล่นเกม PC
หากคุณเคยเล่นเกมวิดีโอบน PC ในช่วงกลางถึงปลายยุค 1990 หรือต้นยุค 2000—เช่น Diablo, StarCraft, Baldur’s Gate, หรือ Warcraft II—คุณคงเคยเจอ รูปแบบวิดีโอ Smacker (.smk).
ก่อนที่การถอดรหัส MPEG ที่เร่งด้วยฮาร์ดแวร์และ CPU แบบหลายคอร์จะกลายเป็นมาตรฐานในคอมพิวเตอร์ส่วนบุคคล การเล่นวิดีโอเต็มเคลื่อนไหว (FMV) ที่ราบรื่นและซิงโครไนซ์พร้อมเสียงดิจิทัลหลายแทร็กเป็นอุปสรรคด้านการคำนวณที่ใหญ่โต ไดรฟ์ CD-ROM มาตรฐานถ่ายโอนข้อมูลที่อัตรา 150 ถึง 300 KB/s (ความเร็ว 1x ถึง 2x) และโปรเซสเซอร์ 486 หรือ Pentium รุ่นแรก ๆ ไม่สามารถจัดการกับโคเดกที่ต้องการการแปลงคำนวณหนักได้.
เพื่อแก้ปัญหานี้ RAD Game Tools ได้พัฒนา Smacker ซึ่งเป็นสถาปัตยกรรมวิดีโอประสิทธิภาพสูงที่ออกแบบมาเฉพาะสำหรับการดีคอมเพรสซิงแบบซอฟต์แวร์เท่านั้น ไฟล์วิดีโอแบบดิบหรือที่ห่อหุ้มที่สร้างด้วยกระบวนการนี้จะมีส่วนขยายไฟล์เป็น .smk.
1. ไฟล์ SMK คืออะไร?
ไฟล์ .smk เป็นคอนเทนเนอร์มัลติมีเดียแบบเฉพาะและสตรีมวิดีโอที่สร้างโดย RAD Game Tools (ปัจจุบันเป็นส่วนหนึ่งของ Epic Games) แนะนำประมาณปี 1994 Smacker ทำให้ผู้พัฒนาสามารถสตรีมภาพยนตร์เคลื่อนไหวเต็มสี 256 สีโดยตรงจาก CD-ROM ความเร็วเดียวโดยไม่ทำให้เฟรมหลุดหรือระบบหยุดทำงาน
ต่างจากโคเดกสมัยใหม่ที่อาศัยการคำนวณแบบ floating-point และการแปลงโคไซน์แบบไม่ต่อเนื่อง (DCT) อย่างหนัก Smacker ถูกออกแบบให้ทำงานเกือบทั้งหมดผ่านการดำเนินการแบบจำนวนเต็ม ตารางค้นหา และรูทีนแอสเซมบลีระดับต่ำของ x86 มันครองตลาดภาพยนตร์เกมในยุค 1990 จนกระทั่ง RAD Game Tools เปิดตัวรุ่นสืบทอดสีจริง 24‑bit คือ Bink Video (.bik) ในปี 1999
2. คุณลักษณะหลักของโคเดก Smacker
มรดกทางเทคนิคที่คงอยู่ของ Smacker มาจากการปรับสมดุลที่เหมาะสมระหว่างความซับซ้อนการคำนวณต่ำและความคมชัดของภาพบนฮาร์ดแวร์สีที่ใช้ดัชนีสี:
การควอนไทเซชันพาเลตแบบดัชนี 8 บิต
ในช่วงกลางทศวรรษ 1990 ส่วนใหญ่ของจอแสดงผล PC ทำงานในโหมด VGA หรือ SVGA 256 สี (พาเล็ตต์ 8‑บิต) Smacker ยอมรับข้อจำกัดนี้ แทนที่จะเก็บค่า RGB 24‑บิตและบังคับระบบปฏิบัติการให้ทำ dithering ช้าแบบเรียลไทม์ Smacker บีบอัดเฟรมวิดีโอโดยตรงกับพาเล็ตต์ 256‑สีที่เปลี่ยนแปลงได้
การเปลี่ยนแปลงและหมุนพาเลตแบบเฟรมต่อเฟรม
Smacker รองรับการอัปเดตพาเลตอย่างต่อเนื่องระหว่างเฟรม หากฉากตัดในเกมเปลี่ยนจากสภาพแสงกลางวันที่สว่างไปยังถ้ำมืด ไฟล์ .smk สามารถแนะนำการเปลี่ยนแปลงพาเลตแบบเฉพาะจุดหรือการสลับพาเลตทั้งหมดในคีย์เฟรมที่กำหนด เพื่อหลีกเลี่ยงการเกิดแถบสีและการบิดเบือนสี
การควอนติฟายเวกเตอร์และการแยกบล็อก
เฟรมภายในสตรีม .smk จะถูกแบ่งเป็นบล็อกพิกเซลขนาด $4 \times 4$ Smacker ใช้เทคนิคการควอนไทเซชันแบบเวกเตอร์ร่วมกับชุดโหมดการทำงานที่กะทัดรัดต่อบล็อก:
- Skip: เก็บพิกเซลจากเฟรมก่อนหน้าไว้
- Solid/Single Color: เติมบล็อก $4 \times 4$ ทั้งหมดด้วยดัชนีพาเลตเดียว
- Two-Color / Bitmask: กำหนดรายการพาเลตสองรายการและใช้มาสก์ 16 บิตเพื่อแมปแต่ละพิกเซล
- Full Data: เก็บลำดับพิกเซลละเอียดโดยตรงเมื่อเกิดการเคลื่อนไหวที่ซับซ้อน
การจำแนกระดับบล็อกนี้ทำให้ฉากที่มีพื้นหลังคงที่และการกระทำเฉพาะจุด (เช่น หัวหน้าพูดหรือเมนูเลื่อน) สามารถบีบอัดลงไปจนถึงอัตราข้อมูลที่แทบไม่มี
การทำมัลติแทร็กเสียงแบบเนทีฟหลายช่องสัญญาณ
Smacker เป็นหนึ่งในรูปแบบที่มุ่งเน้นเกมแรก ๆ ที่รองรับเสียงหลายช่องหลายแทร็กแบบบูรณาการ นักพัฒนาสามารถแทรกเสียงโมโนหรือสเตอริโอที่บีบอัดไว้ข้าง ๆ ชunks วิดีโอโดยตรง สถาปัตยกรรมนี้รองรับ:
- เสียง PCM ดิบที่ไม่ได้บีบอัด.
- การบีบอัดเสียงแบบ DPCM ที่ปรับตัวได้ของ RAD (บีบอัดเสียงลงเป็นการแสดงผล 4 บิตโดยใช้ทรัพยากร CPU ขั้นต่ำ).
- แทร็กภาษาอิสระสำหรับการแปลเกมระดับสากลโดยไม่ต้องทำสำเนาแทร็กวิดีโอพื้นฐาน.
การออกแบบแบบไม่สมมาตร (การแตกข้อมูลเร็วกว่า การเข้ารหัสเร็ว)
อัลกอริธึมการบีบอัดของ Smacker ถูกออกแบบให้ไม่สมดุลโดยเจตนา: การเข้ารหัสใช้เวลามากและต้องการการปรับแต่งทางคณิตศาสตร์อย่างมาก แต่การถอดรหัสต้องใช้เพียงรอบ CPU ขั้นต่ำเท่านั้น คอมพิวเตอร์ 486 ที่มีความเร็ว 33 MHz สามารถถอดรหัสวิดีโอ Smacker ที่ 15‑ถึง‑30 FPS ได้แบบเรียลไทม์พร้อมการซิงโครไนซ์เสียง.
3. สรุปคุณลักษณะสำคัญ
| แอตทริบิวต์ | ข้อกำหนด |
|---|---|
| ผู้พัฒนา | RAD Game Tools (เข้าซื้อโดย Epic Games ในปี 2021) |
| การปล่อยครั้งแรก | 1994 |
| นามสกุลไฟล์ | .smk |
| ผู้สืบทอด | วิดีโอ Bink (.bik, .bk2) |
| ความลึกสี | ดัชนี 8-bit (256 สีที่เลือกได้ต่อเฟรม) |
| วิธีการแปลง | การควอนไทเซชันเวกเตอร์เชิงพื้นที่ ($4 \times 4$ การแบ่งบล็อก) |
| การบีบอัดเชิงเวลา | การจับคู่บล็อกระหว่างเฟรมพร้อมการติดตามรอบพาเลต |
| รูปแบบเสียง | Linear PCM, Smacker 4-bit DPCM, ช่องหลายแทร็ก |
| การใช้งานอุตสาหกรรมหลัก | ฉากตัดของเกมวิดีโอ, ฉากเปิดต้นเรื่อง, โลโก้แอนิเมชัน |
| การสนับสนุนการถอดรหัส | รวมอยู่ในตัวผ่าน FFmpeg, Libavcodec, RAD Video Tools |
4. วิธีเปิดและเล่นไฟล์วิดีโอ .smk
เนื่องจากโปรแกรมเล่นสื่อสมัยใหม่ไม่รองรับวิดีโอเกม 8‑bit แบบดั้งเดิมโดยอัตโนมัติ แอปพลิเคชันมาตรฐานเช่น Windows Media Player หรือ QuickTime จะไม่สามารถเปิดไฟล์ .smk ได้ คุณสามารถเล่นไฟล์เหล่านี้ได้อย่างมั่นใจโดยใช้เครื่องมือต่อไปนี้:
วิธีที่ 1: VLC Media Player (ข้ามแพลตฟอร์ม)
VLC มีการสนับสนุนการถอดรหัสแบบเนทีฟสำหรับวิดีโอและเสียง Smacker ผ่าน libavcodec ของ FFmpeg:
- ดาวน์โหลดและเปิด VLC Media Player.
- ลากและวางไฟล์
.smkลงในหน้าต่าง VLC โดยตรง. - หมายเหตุ: หากสีดูอิ่มตัวเกินไปหรือเปลี่ยนสี VLC สามารถปิดการเร่งความเร็ววิดีโอด้วยฮาร์ดแวร์ชั่วคราวได้ใน
Tools > Preferences > Input / Codecsเพื่อให้ซอฟต์แวร์ color mapper ทำการเรนเดอร์พาเลต 8‑bit โดยตรง.
วิธีที่ 2: FFplay (บรรทัดคำสั่ง)
หากคุณได้ติดตั้งชุด FFmpeg ไว้แล้ว ยูทิลิตี้ ffplay ที่รวมมาด้วยเป็นวิธีที่เร็วที่สุดและแม่นยำที่สุดในการเรนเดอร์สตรีม .smk:
ffplay cutscene.smk
วิธีที่ 3: The RAD Video Tools (Windows)
RAD Game Tools ยังคงให้บริการชุดยูทิลิตี้ The RAD Video Tools:
- ดาวน์โหลดและติดตั้ง The RAD Video Tools จากเว็บไซต์อย่างเป็นทางการของ Epic Games / RAD.
- เปิดยูทิลิตี้และเรียกดูระบบไฟล์ของคุณเพื่อเลือกไฟล์
.smkเป้าหมาย. - คลิกปุ่ม Play เพื่อดูภาพยนตร์พร้อมการสเกลและการจัดเวลา palette ดั้งเดิมที่แท้จริง.
5. วิธีสร้างและแปลงวิดีโอ .smk
คุณยังสามารถสร้างไฟล์ .smk แบบดั้งเดิมได้หรือไม่?
นักพัฒนาสมัยใหม่แทบไม่สร้างไฟล์ .smk ดั้งเดิมในปัจจุบัน เนื่องจากฮาร์ดแวร์สมัยใหม่สามารถถอดรหัส 4K 10-bit HEVC หรือ AV1 ได้อย่างง่ายดาย อย่างไรก็ตาม หากคุณกำลังพัฒนาซอฟต์แวร์ homebrew, ปรับแต่งเกมคลาสสิก, หรือสร้างโครงการคอมพิวเตอร์ย้อนยุค:
- The RAD Video Tools มีคอมเพรสเซอร์ “Smack” รุ่นเก่า คุณสามารถโหลดไฟล์
.aviที่ไม่ได้บีบอัดหรือชุดภาพและเข้ารหัสเป็น.smkได้. - หมายเหตุ: FFmpeg มี decoder Smacker แบบเนทีฟอยู่แล้ว แต่ไม่มี encoder Smacker แบบเนทีฟเนื่องจากรูปแบบนี้เป็นของเจ้าของลิขสิทธิ์และล้าสมัย.
การแปลง .smk เป็น MP4 สมัยใหม่ (H.264 / AAC)
เพื่อรักษาฉากตัดแบบวินเทจหรืออัปโหลดไปยังแพลตฟอร์มสมัยใหม่ (เช่น YouTube หรือเว็บเบราว์เซอร์) ให้แปลงเป็น MP4 ด้วย 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
Tip: เนื่องจาก .smk ใช้พาเลตสีแบบจัดดัชนี การบังคับ -pix_fmt yuv420p จะรับประกันว่าอุปกรณ์มือถือสมัยใหม่และเว็บเบราว์เซอร์จะเรนเดอร์วิดีโอโดยไม่มีข้อผิดพลาดการเล่นหน้าจอสีดำ.
6. คำถามที่พบบ่อย (FAQ)
**Q1: เหตุผลหลักที่นักพัฒนาเกมใช้ไฟล์ SMK คืออะไร? Smacker ทำให้การเล่นวิดีโอที่ราบรื่นและซิงโครไนซ์บนไดรฟ์ CD-ROM ช้าและ CPU ที่ใช้พลังงานต่ำได้โดยไม่ต้องใช้ตัวถอดรหัสฮาร์ดแวร์.
**Q2: ความแตกต่างระหว่างไฟล์ SMK กับไฟล์ BIK คืออะไร?
Smacker (.smk) จำกัดที่ 256 สี (8-bit) ในขณะที่ทายาทของมัน Bink Video (.bik) รองรับสีจริง 24-bit เต็มรูปแบบและความละเอียดที่สูงกว่า.
**Q3: เว็บเบราว์เซอร์สมัยใหม่สามารถเล่นไฟล์ .smk ได้โดยตรงหรือไม่? ไม่, เว็บเบราว์เซอร์สมัยใหม่ไม่รองรับโค้ดเค็ท Smacker และต้องแปลงไฟล์เป็น MP4 หรือ WebM ก่อน.
**Q4: ไฟล์ SMK รองรับหลายภาษาสำหรับเสียงพร้อมกันหรือไม่? ใช่, คอนเทนเนอร์ Smacker อนุญาตให้มีหลายแทร็กเสียงอิสระที่แทรกซ้อนอยู่ข้างวิดีโอสำหรับฉากตัดที่แปลเป็นภาษาท้องถิ่น
**Q5: ใครเป็นเจ้าของเทคโนโลยีวิดีโอ Smacker ในปัจจุบัน? Epic Games เป็นเจ้าของ Smacker หลังจากที่ได้เข้าซื้อ RAD Game Tools ในเดือนมกราคม 2021
7. แหล่งอ้างอิงและทรัพยากรที่เป็นประโยชน์
- พอร์ทัลอย่างเป็นทางการของ RAD Game Tools: ภาพรวมของ RAD Game Tools (Epic Games)
- สเปค Smacker ของ Multimedia Wiki: Multimedia Wiki - การวิเคราะห์เทคนิค Smacker
- เอกสาร Codec ของ FFmpeg: รูปแบบวิดีโอและตัวถอดรหัสที่รองรับโดย FFmpeg
- อ้างอิงจาก FileInfo: อธิบายส่วนขยายไฟล์ SMK