GameMode เป็นคอมโบ Daemon/Lib สำหรับ Linux ที่อนุญาตให้เกมขอชุดการปรับให้เหมาะสมถูกนำไปใช้ชั่วคราวกับระบบปฏิบัติการโฮสต์และ/หรือกระบวนการเกม
GameMode ได้รับการออกแบบเป็นหลักเป็นวิธีแก้ปัญหาหยุดช่องว่างสำหรับปัญหาเกี่ยวกับ Intel และ AMD CPU Powersave หรือผู้ว่าการ OnDemand แต่ตอนนี้เป็นโฮสต์ของคุณสมบัติการเพิ่มประสิทธิภาพและการกำหนดค่า
ขณะนี้เกมโหมดรวมถึงการสนับสนุนการเพิ่มประสิทธิภาพรวมถึง:
SCHED_ISO
)แพ็คเกจ GameMode พร้อมใช้งานสำหรับ Ubuntu, Debian, Solus, Arch, Gentoo, Fedora, OpenSuse, Mageia และอีกมาก
ควรรายงานปัญหาเกี่ยวกับเกมโหมดที่นี่ในส่วนปัญหาและไม่ได้รายงานว่าดุร้ายโดยตรง
สำหรับเกม/ปืนกลที่รวมการสนับสนุน GameMode (ดูรายการในภายหลัง) เพียงแค่เรียกใช้เกมจะเปิดใช้งาน GameMode โดยอัตโนมัติ
สำหรับคนอื่น ๆ คุณต้องขอเกมเล่นเกมด้วยตนเองเมื่อเรียกใช้เกม สามารถทำได้โดยการเปิดตัวเกมผ่าน gamemoderun
:
gamemoderun ./game
หรือแก้ไขตัวเลือกการเปิดตัว Steam:
gamemoderun %command%
หมายเหตุ: สำหรับ GameMode รุ่นเก่า (ก่อน 1.3) ใช้สตริงนี้แทน gamemoderun
:
LD_PRELOAD="$LD_PRELOAD:/usr/$LIB/libgamemodeauto.so.0"
โปรดทราบ backslash ที่นี่ใน $LIB
เป็นสิ่งจำเป็น
daemon ได้รับการกำหนดค่าด้วยไฟล์ gamemode.ini
ตัวอย่าง/gameMode.ini เป็นตัวอย่างของไฟล์นี้จะเป็นอย่างไรพร้อมคำอธิบายสำหรับตัวแปรทั้งหมด
ไฟล์การกำหนดค่าจะถูกโหลดและรวมจากไดเรกทอรีต่อไปนี้จากลำดับความสำคัญสูงสุดถึงต่ำสุด:
$PWD
("unsafe" - [gpu]
การตั้งค่าไม่มีผลในไฟล์นี้ )$XDG_CONFIG_HOME
หรือ $HOME/.config/
("unsafe" - [gpu]
การตั้งค่าไม่มีผลในไฟล์นี้ )/etc/
/usr/share/gamemode/
เป็นไปไม่ได้ที่จะรวมคำสั่งเช่น Optirun ภายใน GameMode โดยอัตโนมัติเนื่องจากคำขอ GameMode ถูกสร้างขึ้นเมื่อเกมเริ่มต้นแล้ว อย่างไรก็ตามเป็นไปได้ที่จะใช้ wrapper GPU แบบไฮบริดอย่าง Optirun โดยเริ่มต้นเกมด้วย gamemoderun
คุณสามารถทำได้โดยการตั้งค่าตัวแปรสภาพแวดล้อม GAMEMODERUNEXEC
เป็นคำสั่งการเปิดตัวของ wrapper ของคุณดังนั้นตัวอย่างเช่น GAMEMODERUNEXEC=optirun
, GAMEMODERUNEXEC="env DRI_PRIME=1"
หรือ GAMEMODERUNEXEC="env __NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME=nvidia __VK_LAYER_NV_optimus=NVIDIA_only"
ตัวแปรสภาพแวดล้อมนี้สามารถตั้งค่าได้ทั่วโลก (เช่นใน /etc /environment) เพื่อให้คำสั่งคำนำหน้าเดียวกันไม่จำเป็นต้องทำซ้ำทุกที่ที่คุณต้องการใช้ gamemoderun
GameMode จะไม่ถูกฉีดเข้าไปใน wrapper
เกมต่อไปนี้เป็นที่รู้จักกันในการรวมการสนับสนุน GameMode (หมายความว่าพวกเขาไม่ต้องการการกำหนดค่าเพิ่มเติมใด ๆ เพื่อเปิดใช้งาน GameMode ในขณะที่ทำงาน):
แอพอื่น ๆ ที่สามารถรวมเข้ากับ GameMode ได้แก่ :
การออกแบบ gameMode มีนามธรรมที่ชัดเจนระหว่างโฮสต์ daemon และห้องสมุด ( gamemoded
และ libgamemode
) และรถตักไคลเอนต์ ( libgamemodeauto
และ gamemode_client.h
) ที่ช่วยให้การใช้งานปลอดภัยโดยไม่ต้องกังวลว่าจะติดตั้ง daemon หรือวิ่ง การออกแบบนี้ยังหมายความว่าในขณะที่ห้องสมุดโฮสต์ในปัจจุบันอาศัย systemd
สำหรับการแลกเปลี่ยนข้อความกับ Daemon แต่ก็เป็นไปได้ทั้งหมดที่จะใช้ภายในอื่น ๆ ที่ยังคงทำงานกับลูกค้ารายเดียวกัน
ดูไดเรกทอรีย่อยที่เก็บข้อมูลสำหรับแต่ละองค์ประกอบ
GameMode ขึ้นอยู่กับ meson
สำหรับการสร้างและ systemd
สำหรับการสื่อสารภายใน repo นี้มีสคริปต์ bootstrap.sh
เพื่ออนุญาตให้ติดตั้งอย่างรวดเร็วไปยังบัสผู้ใช้ แต่ตรวจสอบ meson_options.txt
สำหรับการตั้งค่าที่กำหนดเอง
dbus-user-session
) apt install meson libsystemd-dev pkg-config ninja-build git libdbus-1-dev libinih-dev build-essential
บน Ubuntu 18.04 คุณจะต้องติดตั้งแพ็คเกจ python3
และติดตั้งเวอร์ชัน Meson ล่าสุดจาก pip
python3 -m venv .venv
source .venv/bin/activate
pip install meson
หลังจากนั้นคุณสามารถปิดการใช้งานสภาพแวดล้อมเสมือนจริงและลบออก
deactivate
rm -rf .venv
pacman -S meson systemd git dbus libinih
dnf install meson systemd-devel pkg-config git dbus-devel
Gentoo มี ebuild ซึ่งสร้างการปลดปล่อยที่มั่นคงจากแหล่งที่มา นอกจากนี้ยังจะดึงการพึ่งพาทั้งหมดเพื่อให้คุณสามารถทำงานกับซอร์สโค้ดได้
emerge --ask games-util/gamemode
คุณสามารถติดตั้งโดยใช้แหล่งข้อมูลล่าสุดจาก Git:
ACCEPT_KEYWORDS= " ** " emerge --ask ~ games-util/gamemode-9999
จากนั้นโคลนนิ่งสร้างและติดตั้งเกมเกมรุ่นที่ 1.8.2:
git clone https://github.com/FeralInteractive/gamemode.git
cd gamemode
git checkout 1.8.2 # omit to build the master branch
./bootstrap.sh
ในการทดสอบ GameMode ที่ติดตั้งและจะทำงานอย่างถูกต้อง:
gamemoded -t
เพื่อถอนการติดตั้ง:
systemctl --user stop gamemoded.service
ninja uninstall -C builddir
คำขอดึงจะต้องตรงกับรูปแบบการเข้ารหัสที่พบในไฟล์ .clang-format
โปรดเรียกใช้ก่อนที่จะดำเนินการ:
clang-format -i $(find . -name '*.[ch]' -not -path "*subprojects/*")
การโต้ตอบที่ดุร้าย
ดูส่วนผู้มีส่วนร่วมสำหรับรายชื่อผู้สนับสนุนเพิ่มเติม
ลิขสิทธิ์© 2017-2024 Feral Interactive
GameMode มีให้ภายใต้ข้อกำหนดของใบอนุญาต BSD 3-cluse (แก้ไข)
ห้องสมุด "inih" จัดจำหน่ายภายใต้ใบอนุญาต BSD ใหม่