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

ภาพรวม

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

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

ข้อกำหนด

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

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

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

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