
UMU Launcherกลายเป็นหนึ่งในเครื่องมือที่เปลี่ยนแปลงวิธีการเล่นเกมบน Linux โดยไม่สร้างกระแสมากนัก มันไม่ใช่แค่โปรแกรมเปิดเกมแบบกราฟิกทั่วไป แต่ภารกิจของมันคือการรวมวิธีการทำงานของเกม Windows กับ Proton นอก Steam เข้าด้วยกันเพื่อให้ไคลเอนต์หรือสคริปต์ใดๆ ก็สามารถใช้ประโยชน์จากสภาพแวดล้อมเดียวกันกับที่ Valve ใช้ได้โดยไม่ต้องพึ่งพา Steam
พูดให้เข้าใจง่ายๆ ก็คือ UMU จำลองโมเดลคอนเทนเนอร์ของ Steam Runtime (แบบเดียวกับที่ Proton และ Steam Linux Runtime ใช้) โดยมีการปรับแต่งเล็กน้อย ทำให้Proton ทำงานได้เหมือนกับที่ใช้งานภายใน Steam ทุกประการ แต่สามารถใช้งานได้จากตัวเรียกใช้งานที่เข้ากันได้ เช่น Lutris, Heroicหรือ Bottles หรือแม้แต่จากคำสั่งเทอร์มินัลง่ายๆ และใช่คุณไม่จำเป็นต้องติดตั้ง Steamเพื่อใช้งานมัน
UMU Launcher คืออะไร และชื่อของมันมาจากไหน?
UMU เป็นการดัดแปลงมาจาก Steam Linux Runtime "sniper" และ Steam Runtime Toolsโดยมีจุดเริ่มต้นและยูทิลิตี้ของตัวเองสำหรับการบูรณาการกับระบบของบุคคลที่สาม ชื่อ "umu" ไม่ได้มาโดยบังเอิญ: มันหมายถึงเตาอบของชาวโพลินีเซียที่ทำจากหินภูเขาไฟที่ถูกทำให้ร้อนซึ่งสิ่งใดก็ตามที่คุณวางไว้ด้านบนจะถูก "ปรุง" ให้สุก คำอุปมานี้เข้ากับเครื่องมือจัดการคอนเทนเนอร์ของ Valve ที่เรียกว่า "pressure-vessel": UMU ก็เปรียบเสมือน "เตา" ที่วาง pressure vessel ไว้เพื่อเตรียมสภาพแวดล้อมที่ Proton จะ "ปรุง" เกมของคุณ
เมื่อ Steam เริ่มเกมด้วย Proton มันจะเปิดกระบวนการชุดหนึ่งซึ่งปกติจะปรากฏ เครื่องห่อหุ้มการเปิดตัวด้วยไอน้ำ (เพียง ทางวิ่ง ซึ่งส่งต่อตัวแปรสภาพแวดล้อม) และที่สำคัญคือ SteamLinuxRuntime_สไนเปอร์ กับเขา _v2-entry-point ที่ประกอบคอนเทนเนอร์และโหลดโปรตอน UMU จำลองตรรกะนั้น: สคริปต์ _v2-entry-point มันถูกเปลี่ยนชื่อเป็น umu, มันเพิ่ม umu-run จะเข้ามาแทนที่ steam-launch-wrapper และปรับรายละเอียดที่จำเป็นให้ ใช้โปรตอนภายนอกไอน้ำ รักษาความคาดหวังด้านสิ่งแวดล้อมที่โปรตอนต้องการ (รวมถึงตัวแปรด้านสิ่งแวดล้อม)
วิธีการทำงาน: ตัวแปรสภาพแวดล้อม คอนเทนเนอร์ และ umu-run
คีย์อยู่ใน เริ่มเกมภายในคอนเทนเนอร์ประเภทเดียวกับที่ Steam ใช้ด้วยตัวแปรที่ถูกต้องสำหรับโปรตอน UMU ช่วยให้คุณสามารถเรียกใช้ umu-run ระบุเกมที่สามารถปฏิบัติการได้ อาร์กิวเมนต์ และตัวเลือก WINEPREFIX เวอร์ชัน Proton และร้านค้า ซึ่งเกมจะมาเพื่อแก้ไขเฉพาะจุด
พารามิเตอร์และตัวแปรหลักของumu-runที่คุณควรรู้:
- ไวน์พรีฟิกซ์: เส้นทางคำนำหน้า WINE หากคุณไม่ได้ระบุ UMU จะสร้างเส้นทางนี้ตามค่าเริ่มต้น
$HOME/Games/umu/GAMEID. หากคุณไม่ได้กำหนด GAMEIDคำนำหน้าเริ่มต้นจะเป็น$HOME/Games/umu/umu-default. - เกมไอดี: อาจเป็นค่าที่กำหนดเองหรือ ID ที่ถูกต้องใน ฐานข้อมูลอูมู. หากคุณไม่กำหนดมัน, ถูกใช้
umu-default(โดยไม่มีการแก้ไขอัตโนมัติ) - โปรตอนพาธ: เส้นทางแบบเต็มไปยังเวอร์ชัน Proton ที่คุณต้องการใช้ นอกจากนี้ยังรองรับค่า จีอี-โปรตอน สำหรับ ดาวน์โหลดรุ่นล่าสุดโดยอัตโนมัติ จาก GE-Proton หากคุณไม่ได้ระบุไว้ ยูเอ็มยู-โปรตอน (รุ่นเสถียรจาก Valve พร้อมการรองรับ UMU) เป็นตัวเลือกเริ่มต้น
- เก็บ: ร้านค้าเกมหรือ "หน้าร้าน" (ตัวอย่างเช่น EGS, มุง, ฯลฯ) มช. ผสมผสาน STORE + GAMEID เพื่อค้นหาวิธีแก้ไขเฉพาะเจาะจง ในฐานข้อมูลของคุณ
- โปรตอน_คำกริยา: กริยาโปรตอนใช้ ถ้าไม่ตั้งไว้ ใช้ "waitforexitandrun".
- ยูเอ็มยู_ล็อก: เปิดใช้งานบันทึกการดีบัก UMU มีประโยชน์สำหรับ วินิจฉัยปัญหา.
- ยูเอ็มยู_เซนนิตี้: หากใช้งานอยู่ แสดงป๊อปอัปด้วย Zenity เมื่อดาวน์โหลดไฟล์ขนาดใหญ่
- UMU_RUNTIME_UPDATE y ยูเอ็มยู_โน_โปรตอน: ตัวเลือกเพิ่มเติมสำหรับ การจัดการรันไทม์ หรือสถานการณ์ที่คุณไม่ต้องการให้ UMU จัดการ Proton
นอกจากนี้ UMU จะดาวน์โหลดและใช้ Steam Runtime ที่จำเป็นโดยอัตโนมัติ สำหรับเวอร์ชัน Proton ที่เลือกและวางไฟล์ไว้ใน $HOME/.local/share/umu. เมื่อนั้นคอนเทนเนอร์รันไทม์ก็พร้อมแล้ว เกมดังกล่าวทำงานเหมือนกับว่าเป็นเกมดั้งเดิมบน Steamด้านนอกของ Steam
ข้อดี: เหตุใดการรวมกันนี้จึงมีความสำคัญ
แนวทางของ UMU ทำให้โปรแกรมเรียกใช้งานเกมทุกตัวสามารถสื่อสาร "ภาษา" เดียวกัน ได้ง่ายขึ้น เมื่อเรียกใช้เกมด้วย Proton ซึ่งมีข้อดีหลายประการสำหรับทั้งผู้ใช้และนักพัฒนา:
- ไม่ต้องใช้ Steam:คุณไม่จำเป็นต้องมีไคลเอนต์ Steam หรือไฟล์ไบนารีเพื่อใช้ Proton อีกต่อไป
- ฐานการแก้ไขแบบรวม- การแก้ไขเฉพาะเกม (protonfixes) จะถูกแบ่งปันระหว่างชุมชนและระหว่างตัวเรียกใช้งานที่แตกต่างกัน
- ความเท่าเทียมกับ Steam:เกมเริ่มต้นด้วย Proton ภายในคอนเทนเนอร์ประเภทเดียวกับที่ Steam ใช้ การจำลองสภาพแวดล้อมของมัน.
- การบำรุงรักษาแบบรวมศูนย์: หากมีการเปลี่ยนแปลงใดๆ จะมีการอัพเดตใน Proton GE และ/หรือ Protonfixes หรือในรุ่น Proton ที่เป็นหนึ่งเดียว ส่งผลดีต่อทุกคน.
วันนี้โปรตอนฟิกซ์ได้จัดแพ็คเกจโฟลเดอร์ท้องถิ่นของ «การแก้ไขเกม»แต่โครงการเองก็ชี้ให้เห็นว่า อาจพัฒนาไปเป็นการดาวน์โหลดออนไลน์ได้ เพื่อให้เครื่องมือใดๆ ที่คุณใช้ umu-run รับการแก้ไขที่คุณต้องการจากศูนย์กลาง
ProtonFixes และฐานข้อมูล UMU: การแก้ไขถูกนำไปใช้อย่างไร
UMU เสนอขั้นตอนการทำงานที่เรียบง่ายสำหรับตัวเรียกใช้งานเกม เพื่อระบุเกม ร้านค้า และตัวแก้ไขที่เกี่ยวข้อง จากนั้นจะทำการแก้ไขโดยอัตโนมัติก่อนที่จะเรียกใช้งานด้วย Proton กระบวนการดังกล่าวประกอบด้วยขั้นตอนดังต่อไปนี้:
- สร้างฐานข้อมูล พร้อมชื่อเกม ID ของพวกเขาในร้านค้าต่างๆ และ อูมู-ไอดี มีความสัมพันธ์กัน
- เหยือกค้นหาฐานเพื่อหาข้อมูลเกมและดึงข้อมูล อูมู-ไอดีซึ่งเกิดขึ้นกับ
umu-runพร้อมกับ STORE, Proton, WINEPREFIX, ไฟล์ปฏิบัติการและอาร์กิวเมนต์. - เมื่อเริ่มเกมด้วย
umu-run, โปรตอนฟิกซ์ ตรวจจับ STORE + umu-ID ค้นหาสคริปต์แก้ไขที่เหมาะสมและ ใช้มัน ก่อนการดำเนินการ - protonfixes จัดระเบียบสคริปต์เป็น โฟลเดอร์ต่อร้านเกมเดียวกันจะรักษา umu-ID เดียวกันในร้านค้าหลายแห่ง อาจมีสคริปต์เฉพาะร้านค้าหรือ ลิงค์ไปยังการแก้ไขที่มีอยู่ หากคุณแบ่งปันความต้องการ
ตัวอย่างที่เขาให้คือ Borderlands 3 บน Epic Games Store (EGS). EGS ใช้ «ชื่อรหัส» อย่างเช่น "แคทนิป" ตัวเรียกใช้งานจะตรวจจับได้ว่าร้านค้านั้น EGS และชื่อรหัสคือ หญ้าชนิดหนึ่งตรวจสอบฐานข้อมูล เชื่อมโยงกับ "Borderlands 3" และ อูมู-ไอดี สอดคล้องกัน (เช่น umu-12345) และ ID นั้นจะถูกส่งต่อไปยัง umu-run. นี่คือวิธีการรับประกันการแก้ไขที่ถูกต้อง แม้ว่าร้านค้าจะไม่ได้ใช้ชื่อแบรนด์เกมก็ตาม
ข้อมูลอ้างอิงการใช้งาน: ตัวเลือกและตัวอย่าง
UMU มีเอกสารมาตรฐาน man page สำหรับ umu-run, มีรูปแบบการใช้งาน เช่น umu-run , umu-run ] o umu-run winetricks นอกจากนี้ --config <FILE> y --helpในตัวอย่างที่พวกเขาเสนอ กรณีปฏิบัติ เป็น:
- รันเกม โดยตรง
- รันเกมด้วยโปรตอนฟิกซ์เฉพาะ.
- การใช้ไฟล์กำหนดค่า เพื่อกำหนดค่าพารามิเตอร์ในการดำเนินการ
- สร้าง WINEPREFIX UMU และเปิดตัวด้วยโปรตอน
- เลือกโปรตอนโดยอัตโนมัติ (และสร้างคำนำหน้าหากจำเป็น)
- กำหนดคำกริยาโปรตอนที่ถูกต้อง โดยชัดเจน
- เปิดใช้งานบันทึกการดีบัก เพื่อวินิจฉัยข้อบกพร่อง
- บังคับให้ระบุเวอร์ชัน Proton เฉพาะตามชื่อ.
- ใช้ GE-Proton รุ่นล่าสุด อัตโนมัติ
- ดำเนินการคำกริยา winetricks จาก
umu-run. - ปิดใช้งานแอปพลิเคชัน Protonfixes ถ้าคุณต้องการ
ยูทิลิตี้ที่เกี่ยวข้อง ได้แก่ การอ้างอิงถึงwinetricks , zenity , umu(5)เองและเอกสารประกอบสำหรับรันไทม์คอนเทนเนอร์ Steam นอกจากนี้ยังมีการเชื่อมโยงไปยังที่เก็บ Proton , umu-protonfixesและumu-databaseสำหรับผู้ที่ต้องการสำรวจเพิ่มเติมหรือมีส่วนร่วม
การสร้างและการติดตั้ง: จากการผลิตไปจนถึงบรรจุภัณฑ์แบบ nixpkgs
สำหรับผู้ที่ต้องการคอมไพล์หรือแพ็กเกจเอง เอกสารของ UMU ระบุว่าการสร้างนั้นต้องใช้bash , make , scdoc และ เครื่องมือPython (build, hatchling, installer, pip) นอกจากนี้ ยังต้องการ MSRV ขั้นต่ำที่เท่ากับเวอร์ชันเสถียรล่าสุดของส่วนประกอบที่เกี่ยวข้องโดยตรงด้วย
อัตราการไหลที่แนะนำคือ: ดาวน์โหลดโค้ด, เข้าสู่ไดเรกทอรี, ดำเนินการ configure.sh --prefix เพื่อตั้งค่าคำนำหน้าการติดตั้ง (ตัวอย่างเช่น /usr/local o /app หากคุณกำลังจะแพ็คเกจใน Flatpak) ให้รัน make และถ้าทุกอย่างเป็นไปด้วยดี คุณจะมีสิ่งประดิษฐ์ใน ./builddir. แล้วคุณก็สามารถรันได้ make install ติดตั้ง.
สำหรับการติดตั้งของผู้ใช้ UMU วางไฟล์ปฏิบัติการไว้ใน $HOME/.local/bin. อย่าลืม เพิ่มไดเรกทอรีนั้นลงใน PATH ของคุณ (เช่น การส่งออกไป $HOME/.bash_profile) หากคุณต้องการเรียกใช้โดยไม่ต้องมีเส้นทางแบบเต็ม
อีกทางเลือกหนึ่ง พวกเขาเสนอให้ใช้`uv`เพื่อสร้างสภาพแวดล้อมเสมือนและกำหนดค่า UMU อย่างรวดเร็วคู่มือแนะนำให้สร้างสคริปต์ในไดเร็กทอรีของโปรเจ็กต์สร้างสภาพแวดล้อมเสมือนด้วย`uv`ติดตั้งส่วนประกอบที่จำเป็น และเรียกใช้สคริปต์ผ่าน` uv`
En NixOS/nixpkgs, UMU มีจำหน่ายเป็น pkgs.umu-launcher ตั้งแต่ 25.05 (สาขาไม่เสถียร ณ เวลาที่ระบุ) นอกจากนี้ยังมีรายละเอียดวิธีการใช้งาน สะเก็ด หากคุณต้องการสแนปช็อตที่ใหม่กว่าช่อง และพวกเขายังจัดเตรียมไว้ให้ด้วย ตัวอย่างสำหรับ NixOS และ Home-Manager. หากคุณทำงานกับช่องเก่า (เช่น nixos-24.11) แนะนำให้รวมหลายช่องสัญญาณเข้าด้วยกันหรือ ดึงเกล็ดของคุณ.
พารามิเตอร์การบรรจุภัณฑ์ที่คุณสามารถแทนที่ใน nixpkgs ได้:
- แพ็คเกจเสริม: เพิ่มแพ็กเกจพิเศษลงในสภาพแวดล้อม FHS (ค่าเริ่มต้น)
pkgs: []). - ห้องสมุดพิเศษ: เพิ่มไลบรารีพิเศษลงในสภาพแวดล้อม FHS (ตามค่าเริ่มต้น)
pkgs: []). - ด้วยMultiArch:รวมไลบรารี 32 บิตไว้ในสภาพแวดล้อม FHS (ตามค่าเริ่มต้น) จริง).
หากคุณใช้ flake คุณสามารถกำหนดค่าการอ้างอิงแบบเสริมได้ เช่น:
- ด้วย Truststore: ช่วยให้สามารถใช้งาน ระบบจัดเก็บข้อมูลความน่าเชื่อถือ (ค่าเริ่มต้น จริง).
- ด้วยการอัปเดต Delta: เปิดใช้งานการอ้างอิงสำหรับ "การอัปเดตเดลต้า" ของโปรตอน (ค่าเริ่มต้น จริง).
พวกเขายังแสดงวิธีการประยุกต์ใช้ ซ้อนทับผ่าน specialArgs หรือเข้าโดยตรง flake.nixรวมถึงตัวอย่างของการแทนที่อาร์กิวเมนต์แพ็คเกจ
Steam Runtime, Logs และการดีบัก
UMU ใช้Steam Runtime ที่ทำงานบนคอนเทนเนอร์ (ซึ่งเป็นตัวเดียวกับที่ใช้ในเกม Linux ดั้งเดิมและProton 8.0+ ) ในการวินิจฉัยปัญหาในสภาพแวดล้อมนี้ Runtime เองรองรับตัวแปรสภาพแวดล้อมที่มีประโยชน์เมื่อเรียกใช้งานด้วยไคลเอ็นต์ Steam ซึ่งยังใช้เป็นข้อมูลอ้างอิงเมื่อทำงานกับคอนเทนเนอร์ด้วย:
- บันทึก STEAM_LINUX_RUNTIME_LOG=1: เปิดใช้งานบันทึกที่ปรากฏใน
SteamLinuxRuntime_sniper/var/slr-*.log(โดยมี AppID อยู่ในชื่อ)slr-latest.logเป็น ลิงค์สัญลักษณ์ จนถึงจุดที่สร้างครั้งสุดท้าย - STEAM_LINUX_RUNTIME_VERBOSE=1: การเพิ่มความละเอียดในผลลัพธ์ (ไปยังไฟล์หากมี LOG=1 หรือไปยังตำแหน่งเดียวกับผลลัพธ์ของ
steamแต่). - PRESSURE_VESSEL_SHELL=แทน: แทนที่จะเริ่มเกม เปิดเชลล์แบบโต้ตอบภายในคอนเทนเนอร์ สำหรับการตรวจสอบ
Valve จัดทำเอกสารสมมติฐานเกี่ยวกับ การแจกจ่ายที่รองรับเคล็ดลับการแก้จุดบกพร่อง และการบำรุงรักษาบันทึกประจำรุ่นและปัญหารันไทม์ที่ทราบ หากคุณพัฒนาเกมและสนใจ กำหนดเป้าหมายที่สภาพแวดล้อมตรวจสอบ SDK และข้อมูลทางเทคนิคสำหรับนักพัฒนา รันไทม์ทั้งหมดผสานรวม ซอฟต์แวร์บุคคลที่สาม ด้วยใบอนุญาตแบบเปิดและโค้ดต้นฉบับมีอยู่ในไดเร็กทอรีที่มีเวอร์ชัน (ดู VERSIONS.txt เพื่อดูการติดต่อสื่อสาร)
การอัปเดตและการแก้ไขด่วนล่าสุด
ในการอัปเดตล่าสุด ผู้ดูแลระบบได้ปล่อยhotfix เพื่อย้อนกลับการเปลี่ยนแปลงใน "reaper"เนื่องจากทำให้ UMU เสียหายภายในเซสชัน GameScope บน Flatpakรายการดังกล่าวระบุว่า:
- การพลิกกลับ ของ "umu_run: ดำเนินการใช้งาน reaper ให้เสร็จสมบูรณ์ใน umu"
- การพลิกกลับ ของ "umu_run: รันวิธีแก้ไขปัญหา steammode บนกระบวนการหลัก"
- การพลิกกลับ ของ "umu_run: ใช้ค่าการแสดงผลแบบฮาร์ดโค้ดในตอนนี้"
- หมายเหตุการเปิดตัวที่อัปเดต (หมายเหตุการเปิดตัวเพิ่มเติม)
การแก้ไขด่วนในลักษณะนี้แสดงให้เห็นว่าโครงการตอบสนองต่อข้อผิดพลาดในสภาพแวดล้อมเฉพาะ เช่น Flatpak + gamescope ได้อย่างรวดเร็ว ซึ่งเป็นสิ่งสำคัญสำหรับ ผู้ใช้ Steam Deckหรือคอมพิวเตอร์เดสก์ท็อปที่ใช้ชุดซอฟต์แวร์ดังกล่าว
สถานะโครงการ: เวอร์ชันอย่างเป็นทางการครั้งแรกและวัตถุประสงค์ที่แท้จริง
เวอร์ชัน1.1.1 ได้รับการเน้นย้ำ ว่าเป็นเวอร์ชันเปิดตัวอย่างเป็นทางการครั้งแรกของ Unified Linux Wine Game Launcher โดย Thomas "GloriousEggroll" Crider และชุมชน Open Wine Components พวกเขาเน้นย้ำว่านี่ไม่ใช่ตัวเรียกใช้งานเกมแบบกราฟิกเหมือน Steam/Heroic/Lutrisแต่เป็นเลเยอร์ทั่วไปที่ตัวเรียกใช้งานเหล่านั้นสามารถใช้เพื่อเรียกใช้เกมที่ใช้ Proton นอก Steam ด้วยคุณภาพเดียวกันกับภายใน Steam
พวกเขาชี้ว่ามันควรจะใช้งานได้กับ Flatpak และ Snapและมีคำแนะนำในการบรรจุภัณฑ์สำหรับทั้งสองรูปแบบในที่เก็บข้อมูลของพวกเขา เป้าหมายคือเพื่อให้แอปใด ๆ ก็ตามสามารถเปิดเกมจากร้านค้าต่างๆ เช่น Epic, GOG หรือ Amazon ได้ด้วยคุณภาพเดียวกันกับบน Steam โดยได้รับประโยชน์จากprotonfixes และฐานข้อมูลแบบรวมศูนย์เพื่อความเข้ากันได้ที่ดียิ่งขึ้นเรื่อยๆ
ลิงค์และเอกสารแนะนำ
สำหรับข้อมูลเพิ่มเติม เอกสารนี้มีลิงก์ไปยังแหล่งข้อมูลต่างๆ เช่นบันทึกการเผยแพร่ Steam Runtime Sniperปัญหาการทำงาน ที่พบ และ วิธีการรายงานข้อบกพร่องรวม ถึง เอกสารcontainer-runtimeนอกจากนี้ยังควรตรวจสอบสิ่งต่อไปนี้ด้วย:
- winetricks: https://github.com/Winetricks/winetricks
- โปรตอน: https://github.com/ValveSoftware/Proton
- อูมู-โปรตอนฟิกซ์: https://github.com/Open-Wine-Components/umu-protonfixes
- ฐานข้อมูลอูมู: https://github.com/Open-Wine-Components/umu-database
- รันไทม์คอนเทนเนอร์: เอกสารอย่างเป็นทางการ
โครงการนี้ได้รับการดูแลโดย Open Wine Componentsโดยได้รับความช่วยเหลือจากผู้ร่วมพัฒนาท่านอื่นๆ หากคุณต้องการมีส่วนร่วม พวกเขาแนะนำให้ติดตั้งRuffจากระบบปฏิบัติการของคุณและเปิดใช้งานเซิร์ฟเวอร์ Ruffในโปรแกรมแก้ไขโค้ดของคุณ เพื่อรักษาความสม่ำเสมอของรูปแบบโค้ด
UMU ทำหน้าที่เป็นตัวเชื่อมทางเทคนิคระหว่าง Proton และตัวเรียกใช้งานเกม โดยมีรันไทม์ที่เป็นมาตรฐานและฐานการแก้ไขที่ใช้ร่วมกัน ซึ่งช่วยให้ชุมชนสามารถพัฒนาต่อไปได้เร็วขึ้นและมีอุปสรรคน้อยลง และผู้ใช้จะได้รับความเสถียรและความเรียบง่ายเมื่อเรียกใช้เกมของตนภายนอก Steam ด้วยคุณภาพเดียวกัน