เอกสาร Steamworks
โอเวอร์เลย์ Steam

ภาพรวม

โอเวอร์เลย์ Steam เป็นอินเตอร์เฟซสำหรับผู้ใช้ของ Steam ชนิดหนึ่งที่สามารถเรียกให้แสดงเหนือเกมเกือบทุกเกมที่เปิดทำงานผ่าน Steam โอเวอร์เลย์ทำให้ผู้ใช้สามารถเข้าถึงรายชื่อเพื่อน เว็บเบราว์เซอร์ แช็ต และการซื้อเนื้อหาดาวน์โหลดภายในเกมได้

กดปุ่มลัดที่เป็นปุ่มเริ่มต้นสำหรับให้ผู้ใช้เข้าถึงโอเวอร์เลย์คือ SHIFT+TAB แต่สามารถเปลี่ยนปุ่มได้จากไดอะล็อก Steam -> การตั้งค่า

ข้อกำหนด

เกมของคุณไม่จำเป็นต้องทำอะไรเป็นพิเศษเพื่อใช้โอเวอร์เลย์ เนื่องจากระบบนี้จะฮุคกับเกมทุกเกมที่เรียกใช้งานจาก Steam อยู่แล้ว! ขณะพัฒนาเกมหรือเรียกใช้เกมของคุณในเครื่องมือดีบัก คุณสามารถโหลดโอเวอร์เลย์ได้โดยการเรียก SteamAPI_Init ดังนั้น คุณจึงจำเป็นต้องเรียก SteamAPI_Init ก่อนเริ่มต้นอุปกรณ์ OpenGL/D3D มิฉะนั้นจะไม่สามารถฮุคกับการสร้างอุปกรณ์ได้

โอเวอร์เลย์รองรับเกมที่ใช้ DirectX 7 - 12, OpenGL, Metal และ Vulkan นอกจากนี้ โอเวอร์เลย์จะไม่ทำงานในเกมที่มีการ Rasterize ด้วยซอฟต์แวร์

macOS: การรองรับโอเวอร์เลย์สำหรับ 10.15 (Catalina) จำเป็นต้องเพิ่มการให้สิทธิ์กับการกำหนดค่าบิลด์ของคุณ รายละเอียดมีอยู่ในหน้าแพลตฟอร์ม
หมายเหตุ: โอเวอร์เลย์จะถูกปิดการใช้งานโดยอัตโนมัติในแอปประเภท "ซอฟต์แวร์" หากคุณจำเป็นต้องเปิดการใช้งานโอเวอร์เลย์ คุณสามารถทำได้โดย:
  • ตรวจสอบให้แน่ใจว่าบัญชี Steam ของคุณมีสิทธิ์ที่จะแก้ไขเมทาเดตาของแอป
  • ออกจากหน้ารองรับของแอปไปยัง > แก้ไขการตั้งค่า Steamworks > แท็บการติดตั้ง > การติดตั้งทั่วไป
  • เลือกกล่องเปิดการใช้งานโอเวอร์เลย์ Steam สำหรับแอปพลิเคชัน
  • เผยแพร่

การเปิดใช้งานโอเวอร์เลย์จากแอปของคุณ

Steamworks API มีชุดฟังก์ชันจำนวนหนึ่งที่ช่วยให้คุณเข้าไปเปิดใช้งานโอเวอร์เลย์ของเกมได้โดยตรง
  • ISteamFriends::ActivateGameOverlay
    ฟังก์ชันนี้สามารถเปิดโอเวอร์เลย์ของเกมไปยังไดอะล็อกที่ระบุ
  • ISteamFriends::ActivateGameOverlayToUser
    ฟังก์ชันนี้สามารถเปิดโอเวอร์เลย์ของเกมไปยังไดอะล็อกที่ระบุ โดยมีการส่งผู้ใช้เข้าไปเป็นบริบท
  • ISteamFriends::ActivateGameOverlayToWebPage
    ฟังก์ชันนี้สามารถเปิดโอเวอร์เลย์ของเกมไปยังเว็บเบราว์เซอร์ และโหลด URL ที่ระบุได้ โดยจะต้องใช้ URL แบบเต็ม เช่น http://www.steamgames.com/
  • ISteamFriends::ActivateGameOverlayToStore
    ฟังก์ชันนี้สามารถเปิดโอเวอร์เลย์ของเกมไปยังส่วนการซื้อเนื้อหาดาวน์โหลดของเกมปัจจุบัน (ดูข้อมูลเพิ่มเติมได้ที่ เนื้อหาดาวน์โหลด (DLC))
  • ISteamUtils::SetOverlayNotificationPosition
    ตั้งค่าว่าต้องการให้การแจ้งเตือน ("โทสต์") ปรากฏที่มุมใดของหน้าจอ ค่าเริ่มต้นคือมุมขวาล่างของหน้าจอ
  • ISteamUtils::IsOverlayEnabled
    คืนค่า true ถ้าโอเวอร์เลย์ทำงานและผู้ใช้สามารถเข้าถึงโอเวอร์เลย์ได้ กระบวนการโอเวอร์เลย์อาจจะต้องใช้เวลาประมาณชั่วครู่หนึ่งในการเริ่มและฮุคกระบวนการของเกม เพราะฉะนั้น ตอนเริ่มต้นจะคืนค่า false ขณะที่กำลังโหลดโอเวอร์เลย์

การสื่อสารจากโอเวอร์เลย์ถึงเกมของคุณ

Steam จะส่งสัญญาณต่อไปนี้ (คอลแบ็ก) ไปยังเกมของคุณตามที่ผู้ใช้ดำเนินการในโอเวอร์เลย์:
  • GameOverlayActivated_t
    โพสต์เมื่อมีการเปิดใช้งานหรือปิดใช้งานโอเวอร์เลย์ของเกม เกมสามารถใช้ฟังก์ชันนี้เพื่อหยุดเกมแบบมีผู้เล่นคนเดียวไว้ชั่วคราว หรือเล่นต่อจากที่หยุดไว้ได้
  • GameServerChangeRequested_t
    โพสต์เมื่อผู้ใช้เลือกเกมของเพื่อนที่ตนต้องการเข้าร่วม ซึ่งมีรายละเอียดเกี่ยวกับเซิร์ฟเวอร์เกมที่จะเข้าร่วม
  • GameLobbyJoinRequested_t
    โพสต์เมื่อผู้ใช้เลือกเกมของเพื่อนที่ตนต้องการเข้าร่วม ซึ่งมีรายละเอียดเกี่ยวกับล็อบบี้ที่จะเข้าร่วม

คำถามที่พบบ่อย

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

ถาม: ทำไมโอเวอร์เลย์ของ Steam ทำให้แอปของฉันหยุดทำงาน?

ตอบ: เนื่องจากโอเวอร์เลย์ Steam ใช้กับเกมจำนวนนับเป็นพัน ๆ เกม ด้วยเหตุนี้จึงผ่านการทดสอบอย่างละเอียดถี่ถ้วน และแทบจะไม่ทำให้เกิดการแครชเลย อย่างไรก็ตาม เนื่องจากวิธีการที่โอเวอร์เลย์แทรกเข้าไปในเกม จึงมักทำให้เสี่ยงต่อภาวะหน่วยความจำรั่วไหลหรือหน่วยความจำเสียหายเมื่อคุณใช้ API การเรนเดอร์ ซึ่งอาจไม่ส่งผลกระทบต่อการเล่นเกม

ตัวอย่างเช่น หากต้องการวินิจฉัยการแครชของโอเวอร์เลย์เมื่อใช้ DirectX ให้ลองตรวจสอบว่า D3D เข้าสู่สถานะที่ผิดพลาดได้อย่างไร โดยใช้ดีบักรันไทม์ d3d ที่เปิดใช้งานการคายข้อมูลทุกระดับ (ข้อมูล/คำเตือน/ข้อผิดพลาด/ประกาศ) ซึ่งอาจช่วยให้ทราบเงื่อนงำเกี่ยวกับทรัพยากร d3d ที่ถูกละเลย หากการดำเนินการดังกล่าวไม่ช่วยให้คุณตรวจพบข้อผิดพลาดใด ๆ ก็อาจเป็นปัญหาทั่วไปเกี่ยวกับหน่วยความจำเสียหาย หากปัญหาเหล่านี้เกิดขึ้นทุกครั้งที่ปิดเครื่อง อาจเป็นไปได้ว่าเกิดปัญหาในการสั่งปิดเครื่องโดยที่เกมไม่ล้างข้อมูลขณะที่ปิดทำงาน

หากแอปยังคงแครชในโอเวอร์เลย์หลังจากดีบัก โปรดแจ้งเราให้เราทราบในกลุ่มผู้พัฒนา Steamworks

ถาม: ทำไมโอเวอร์เลย์ Steam ถึงไม่แสดงขึ้นในแอปของฉัน?

ตอบ: ก่อนอื่นให้ตรวจสอบดูว่าคุณปฏิบัติตาม ข้อกำหนด ข้างต้น ถ้าคุณปฏิบัติตามเงื่อนไขแล้ว แต่โอเวอร์เลย์ยังไม่แสดงให้เห็น โปรดตรวจสอบให้แน่ใจว่าคุณได้เปิดแอปผ่านไคลเอนต์ Steam แล้ว ทั้งนี้อาจเป็นการเปิดโดยตรงจากล็อบบี้/รายการเรียกใช้ด่วน หรือการเปิดโดยเรียก SteamAPI_RestartAppIfNecessary ก็ได้

ถาม: เกมของฉันใช้ D3D12 บน Win7 และโอเวอร์เลย์ Steam ไม่ทำงาน ทำไมจึงเป็นเช่นนั้น?

ตอบ: โปรดอ่านเอกสารของ Microsoft เกี่ยวกับวิธีเพิ่มการรองรับโอเวอร์เลย์ Steam