วิธีแสดงตัวนับ FPS ในเกม Linux

How Show Fps Counter Linux Games



เกมลินุกซ์ได้รับแรงผลักดันครั้งใหญ่เมื่อ Valve ประกาศ Linux รองรับไคลเอนต์ Steam และเกมของพวกเขาในปี 2012 ตั้งแต่นั้นมา เกม AAA และเกมอินดี้จำนวนมากได้เข้าสู่ Linux และจำนวนผู้ใช้ที่เล่นเกมบน Linux ได้เพิ่มขึ้นอย่างมาก

ด้วยการเติบโตของเกม Linux ผู้ใช้จำนวนมากเริ่มมองหาวิธีที่เหมาะสมในการแสดงตัวนับเฟรมต่อวินาที (FPS) เป็นโอเวอร์เลย์ในการรันเกม Linux ตัวนับ FPS ช่วยในการปรับแต่งประสิทธิภาพของเกมที่ทำงานอยู่ตลอดจนเปรียบเทียบความสามารถโดยรวมของพีซีในการเล่นเกมที่ความละเอียดต่างกัน







น่าเสียดายที่ไม่มีวิธีเดียวในการแสดงตัวนับ FPS ในเกม Linux ทั้งหมดที่ไม่ขึ้นอยู่กับเทคโนโลยีพื้นฐานที่เกมกำลังทำงานอยู่ ตัวแสดงผลและ API ที่ต่างกันมีวิธีการแสดงตัวนับ FPS ต่างกัน คู่มือนี้จะอธิบายวิธีการต่างๆ ที่สามารถใช้แสดงตัวนับ FPS ในเกม Linux



หมายเหตุความเข้ากันได้:



  • ทำงานร่วมกับเกม OpenGL และ Vulkan
  • ใช้งานได้กับเกมเนทีฟและ โปรตอน Proton เป็นเลเยอร์ความเข้ากันได้ที่รวมอยู่ใน Steam สำหรับการรันเกม Windows ใน Linux มันขึ้นอยู่กับ ไวน์ , DXVK และ D9VK โครงการโอเพ่นซอร์สพร้อมแพตช์เพิ่มเติมและคุณสมบัติใหม่ที่เพิ่มโดยผู้พัฒนา Valve/Wine
  • ทำงานร่วมกับเกมที่ซื้อบน Steam หรือเกมของบุคคลที่สามที่ผู้ใช้เพิ่มลงใน Steam
  • ทดสอบการทำงานกับกราฟิกการ์ด Intel และ AMD ในตัว
  • ไม่ผ่านการทดสอบกับการ์ด NVIDIA เนื่องจากฉันไม่มีการ์ด NVIDIA แต่ตามฟอรัมชุมชน Steam ตัวนับ fps ในตัวทำงานได้ดีบนการ์ด NVIDIA

Steam สำหรับ Linux มีตัวนับ FPS ในตัวที่สามารถสลับจากการตั้งค่าได้ นี่อาจเป็นหนึ่งในตัวเลือกที่เข้ากันได้มากที่สุดซึ่งใช้ได้กับเกม Linux ส่วนใหญ่ อย่างไรก็ตาม ฉันมีปัญหาบางอย่างกับเกม Unity engine ไม่แสดงตัวนับ FPS ในตัว ตัวเลือกนี้ยังกำหนดให้คุณต้องมีบัญชี Steam และไคลเอนต์ Steam ติดตั้งอยู่ในระบบของคุณ







Steam ยังให้คุณเพิ่มเกมที่ไม่ได้ซื้อจาก Steam ลงในไลบรารีเกมและตัวนับ FPS ในตัวก็ใช้งานได้ในเกมเหล่านี้เช่นกัน ในการเพิ่มเกมที่ไม่ใช่ Steam ให้คลิกที่ Games จากนั้นคลิกที่ Add a Non-Steam Game to My Library ดังที่แสดงในภาพหน้าจอด้านล่าง:

เรียกดูตำแหน่งของไฟล์เกมของคุณ จากนั้นสลับตัวเลือกไฟล์ทั้งหมดที่ด้านล่าง

เลือกเกมที่สามารถเรียกใช้งานได้จากนั้นคลิกที่ ADD SELECTED PROGRAMS ตามที่แสดงในภาพหน้าจอด้านล่าง:

หากคุณต้องการเรียกใช้เกม Windows เท่านั้นในเลเยอร์ความเข้ากันได้ของ Proton ของ Steam คุณจะต้องเปิดใช้งานตัวเลือกเพิ่มเติมในคุณสมบัติของเกม

ฉันได้เพิ่ม SuperTuxKart ที่สามารถเรียกใช้งานได้ใน Steam Library และตัวนับ FPS ก็ทำงานได้ดีที่นี่เช่นกัน โปรดทราบว่าเกมของบุคคลที่สามที่เพิ่มลงในคลัง Steam ไม่ควรมีที่ว่างในเส้นทางตำแหน่งไฟล์

วิธีที่ 2 (LibGL)

หมายเหตุความเข้ากันได้:

  • ใช้งานได้กับเกม OpenGL เท่านั้น
  • ทำงานร่วมกับเกมเนทีฟและเกมไวน์
  • ทดสอบการทำงานกับการ์ดกราฟิก Intel และ AMD ในตัวพร้อมไดรเวอร์โอเพ่นซอร์ส
  • ไม่ผ่านการทดสอบกับการ์ด NVIDIA เนื่องจากฉันไม่มีการ์ด NVIDIA อย่างไรก็ตาม ควรทำงานร่วมกับ NVIDIA GPU ที่มีไดรเวอร์โอเพ่นซอร์ส

LibGL เป็นไลบรารี Mesa ที่เปิดเผย OpenGL APIs ให้กับแอปและเกม และรวมอยู่ในการแจกจ่าย Linux เกือบทั้งหมดโดยค่าเริ่มต้น การใช้ไลบรารีนี้และแพ็คเกจอื่นที่สร้าง HUD บนจอแสดงผลที่มองเห็นได้ เราจะแสดงตัวนับ FPS ในเกม Linux รันคำสั่งต่อไปนี้เพื่อติดตั้งแพ็คเกจที่จำเป็น:

sudoฉลาดติดตั้งxosd-bin

หากต้องการแสดงตัวนับ FPS ในเกม Linux ดั้งเดิม ให้ใช้คำสั่งด้านล่างหลังจากแทนที่ /path/to/executable ด้วยพาธที่สั่งการได้ของเกมของคุณเอง คุณสามารถทราบข้อมูลเพิ่มเติมเกี่ยวกับตัวเลือก osd-cat ทั้งหมดได้จาก ที่นี่ .

LIBGL_SHOW_FPS=1 /path/to/executable 2>&1 |
tee /dev/stderr | sed -u -n -e '/^libGL: FPS = /{s/.* ([^ ]*)= /1/;p}' |
osd_cat --lines=1 --color=yellow --outline=1 --pos=top --align=left

หากต้องการแสดงตัวนับ FPS ในเกม Windows ที่ทำงานบน Linux ผ่าน Wine ให้ใช้คำสั่งด้านล่างหลังจากแทนที่ /path/to/executable ด้วยเส้นทางที่สั่งการได้ของเกมของคุณเอง

WINEEBUG=ไวน์ fps /path/to/executable 2>&1 | tee /dev/stderr |
sed -u -n -e '/trace/ s/.*ประมาณ //p' | osd_cat --lines=1 --color=yellow
--outline=1 --pos=top --align=center

หากคุณกำลังใช้คำนำหน้าไวน์ คำสั่งจะเป็น (แทนที่ /path/to/wine/prefix และ /path/to/executable):

WINEDEBUG=fps WINEPREFIX=/path/to/wine/prefix wine
/path/to/executable 2>&1 | tee /dev/stderr | sed -u -n -e '/trace/ s/
.*ประมาณ //p' | osd_cat --lines=1 --color=yellow --outline=1 --pos=top
--align=center

วิธีการนี้มีข้อจำกัดเล็กน้อย ในขณะที่คุณสามารถปรับแต่ง osd-cat HUD ได้ มันจะอยู่ที่ตำแหน่งคงที่บนพื้นที่แสดงผลโดยไม่คำนึงถึงรูปทรงของหน้าต่างเกม ในภาพหน้าจอด้านบน ตัวนับ FPS จะแสดงอยู่เหนือหน้าต่างเกม ไม่ใช่อยู่ข้างใน เกมที่ทำงานในโหมดเต็มหน้าจอจะไม่ได้รับผลกระทบจากสิ่งนี้

วิธีที่ 3 (Gallium3D)

  • ใช้งานได้กับเกม OpenGL เท่านั้น
  • ทำงานร่วมกับเกมเนทีฟและเกมไวน์
  • ทดสอบการทำงานกับกราฟิกการ์ด AMD พร้อมไดรเวอร์โอเพ่นซอร์ส
  • การสนับสนุน Gallium3D สำหรับ Intel ยังคงดำเนินต่อไป ดังนั้นจึงยังไม่ทำงาน
  • ไม่ผ่านการทดสอบกับการ์ด NVIDIA เนื่องจากฉันไม่มีการ์ด NVIDIA เนื่องจากไดรเวอร์โอเพ่นซอร์ส NVIDIA เปิดใช้งาน Gallium3D วิธีนี้จึงควรใช้งานได้
  • Gallium3D เป็น API ที่ช่วยให้พัฒนาไดรเวอร์สำหรับการ์ดกราฟิกได้ง่ายขึ้นด้วยการจัดหาชุดไลบรารีและอินเทอร์เฟซมาตรฐาน ไดรเวอร์โอเพ่นซอร์ส AMD และ NVIDIA สร้างขึ้นจาก Gallium3D

    หากต้องการแสดงตัวนับ FPS ในเกม Linux ดั้งเดิม ให้ใช้คำสั่งด้านล่างหลังจากแทนที่ /path/to/executable ด้วยพา ธ ปฏิบัติการเกมของคุณเอง:

    GALLIUM_HUD='ง่าย fps' /เส้นทาง/ถึง/ปฏิบัติการได้

    หากต้องการแสดงตัวนับ FPS ในเกม Windows ที่ทำงานบน Linux ผ่าน Wine ให้ใช้คำสั่งด้านล่างหลังจากแทนที่ /path/to/executable ด้วยเส้นทางที่สั่งการได้ของเกมของคุณเอง

    GALLIUM_HUD='ง่าย fps' ไวน์ /เส้นทาง/ถึง/ปฏิบัติการได้

    หากคุณกำลังใช้คำนำหน้าไวน์ คำสั่งจะเป็น (แทนที่ /path/to/wine/prefix และ /path/to/executable):

    GALLIUM_HUD='simple,fps' WINEPREFIX=/path/to/wine/prefix wine /path/to/executable

    ในภาพหน้าจอด้านบน ฉันกำลังใช้ตัวแปร GALLIUM_HUD ที่กำหนดเองซึ่งแสดงอุณหภูมิ GPU และ CPU เช่นกัน คำสั่งแบบกำหนดเองนี้จะแตกต่างกันไปตามการกำหนดค่าพีซีที่แตกต่างกัน หากต้องการอ่านเพิ่มเติมเกี่ยวกับตัวเลือกการปรับแต่งทั้งหมด ให้รันคำสั่ง:

    sudoฉลาดติดตั้งของใช้บนโต๊ะอาหาร
    GALLIUM_HUD=ช่วยglxgears

    สำหรับการอ้างอิง นี่คือคำสั่งกำหนดเองที่ฉันใช้ในภาพหน้าจอด้านบน:

    GALLIUM_HUD='ง่าย fps;sensors_temp_cu-amdgpu-pci-1c00.temp1;
    sensors_temp_cu-k10temp-pci-00c3.Tdie '
    /เส้นทาง/ถึง/ปฏิบัติการได้

    วิธีที่ 4 (ตารางซ้อนทับของ Vulkan)

    หมายเหตุความเข้ากันได้:

    • ใช้งานได้กับเกม Vulkan เท่านั้น
    • ใช้งานได้กับ Ubuntu 19.10+ เท่านั้นและรุ่นอื่นๆ ที่มี Mesa ล่าสุดพร้อม vulkan overlay layer
    • ทำงานร่วมกับเกมเนทีฟและเกม Steam Proton ที่ทำงานด้วยการสนับสนุน DXVK/D9VK
    • ทำงานร่วมกับเกม Wine ที่ทำงานด้วย DXVK/D9VK libs
    • สถานะการทำงานที่ไม่รู้จักสำหรับ Wine's Vkd3d . เนื่องจากนี่คือเลเยอร์ Vulkan จึงควรทำงานกับอะไรก็ได้ตราบใดที่ Mesa สร้างขึ้นด้วยการสนับสนุน VK_LAYER_MESA_overlay
    • ทดสอบการทำงานกับกราฟิกการ์ด AMD และการ์ด Intel ในตัวพร้อมไดรเวอร์โอเพ่นซอร์ส
    • ไม่ผ่านการทดสอบกับการ์ด NVIDIA เนื่องจากฉันไม่มีการ์ด NVIDIA เนื่องจากนี่คือเลเยอร์ Vulkan จึงควรทำงานกับอะไรก็ได้ตราบใดที่ Mesa สร้างขึ้นด้วยการสนับสนุน VK_LAYER_MESA_overlay

    ตารางซ้อนทับวัลแคน เป็นเลเยอร์ Vulkan ใหม่ที่เพิ่มเข้าไปในงานสร้างล่าสุดของ Mesa จะแสดงข้อมูลต่างๆ เกี่ยวกับแอปพลิเคชันที่ทำงานอยู่โดยใช้โอเวอร์เลย์

    หากต้องการแสดงตัวนับ FPS ในเกม Linux ดั้งเดิม ให้ใช้คำสั่งด้านล่างหลังจากแทนที่ /path/to/executable ด้วยพา ธ ปฏิบัติการเกมของคุณเอง:

    VK_INSTANCE_LAYERS=VK_LAYER_MESA_overlay VK_LAYER_MESA_OVERLAY_CONFIG=position=บนซ้าย /path/to/executable

    หากต้องการแสดงตัวนับ FPS ในเกม Windows ที่ทำงานบน Linux ผ่าน Wine และ DXVK ให้ใช้คำสั่งด้านล่างหลังจากแทนที่ /path/to/executable ด้วยเส้นทางที่สั่งการได้ของเกมของคุณเอง:

    VK_INSTANCE_LAYERS=VK_LAYER_MESA_overlay VK_LAYER_MESA_OVERLAY_CONFIG=position=ไวน์บนซ้าย /path/to/executable

    หากคุณกำลังใช้คำนำหน้าไวน์ คำสั่งจะเป็น (แทนที่ /path/to/wine/prefix และ /path/to/executable):

    VK_INSTANCE_LAYERS=VK_LAYER_MESA_overlay
    VK_LAYER_MESA_OVERLAY_CONFIG=position=top-left
    WINEPREFIX=/path/to/wine/prefix wine /path/to/executable

    วิธีที่ 5 (DXVK HUD)

    หมายเหตุความเข้ากันได้:

    • ใช้งานได้เฉพาะกับเกม Vulkan ที่ทำงานใน Wine และ Proton ด้วย DXVK/D9VK libs
    • ทดสอบการทำงานกับ AMD และการ์ดกราฟิก Intel ในตัวพร้อมไดรเวอร์โอเพ่นซอร์ส
    • ไม่ผ่านการทดสอบกับการ์ด NVIDIA เนื่องจากฉันไม่มีการ์ด NVIDIA ซอร์สโค้ดได้คอมมิตที่กล่าวถึงการรองรับ NVIDIA ดังนั้นวิธีนี้น่าจะใช้ได้

    DXVK มีเลเยอร์การแปลแบบ Vulkan สำหรับ D3D10 และ D3D11 ทำให้ผู้ใช้สามารถเล่นเกม Direct3D 10/11 บน Linux ได้ D9VK ใช้แบ็กเอนด์ DXVK เพื่อจัดเตรียมการใช้งาน Direct3D9 เพิ่มเติมที่สามารถใช้เพื่อเล่นเกมที่สร้างจาก D3D9

    หากต้องการแสดงตัวนับ FPS ในเกม DXVK ที่ทำงานบน Linux ผ่าน Wine ให้ใช้คำสั่งด้านล่างหลังจากแทนที่ /path/to/executable ด้วยเส้นทางที่สามารถเรียกใช้งานได้ของเกมของคุณเอง:

    DXVK_HUD= fpsไวน์ /เส้นทาง/ถึง/ปฏิบัติการได้

    หากคุณกำลังใช้คำนำหน้าไวน์ คำสั่งจะเป็น (แทนที่ /path/to/wine/prefix และ /path/to/executable):

    DXVK_HUD= fpsWINEPREFIX=/เส้นทาง/ถึง/ไวน์/คำนำหน้าไวน์ /เส้นทาง/ถึง/ปฏิบัติการได้

    นี่เป็นจุดสิ้นสุดของโพสต์นี้ โดยสรุป ผมจะกล่าวถึงรายละเอียดเล็กๆ น้อยๆ ที่ละเว้นจากด้านบน วิธีการที่ไม่ใช่ Steam ทั้งหมดที่อธิบายไว้ข้างต้นจะใช้ได้กับเกม Steam เช่นกัน คุณต้องแทนที่ /path/to/executable หรือ wine /path/to/executable หรือ WINEPREFIX=/path/to/wine/prefix wine /path/to/executable ด้วย %command% ในคำสั่งเดียวกันกับที่ใช้ด้านบน เพียงเพิ่มคำสั่งแบบเต็มเพื่อเปิดใช้ตัวเลือกในคุณสมบัติของเกมภายในแอป Steam ดังที่แสดงในภาพหน้าจอด้านล่าง: