เอกสาร Steamworks
เสียง Steam
Steam Voice API คือชุดฟังก์ชันที่ใช้สำหรับบันทึกเสียงจากไมโครโฟนของผู้ใช้ ซึ่งสามารถนำไปสร้างระบบแชตด้วยเสียงหรือระบบออกคำสั่งด้วยเสียง

การผสานระบบแชตด้วยเสียง

คุณสามารถสร้างระบบแชตด้วยเสียงในเกมได้โดยทำตามขั้นตอนต่อไปนี้:

  • การบันทึก
    ขั้นตอนแรก ให้เรียก ISteamUser::StartVoiceRecording tเพื่อเริ่มบันทึกเสียงจากไมโครโฟนของผู้ใช้ โดยจะเรียกทุกครั้งที่ผู้ใช้กดปุ่มลัด Push-to-talk หรือเมื่อเริ่มเซสชันการเล่นเกม หากไมโครโฟนควรต้องบันทึกเสียงตลอดเวลา สามารถเลือกใช้วิธีใดวิธีหนึ่งที่เหมาะกับเกมก็ได้ แต่จะเป็นการดีที่สุด ถ้าเปิดโอกาสให้ผู้ใช้เลือกเองได้ว่าจะแชตแบบเปิดไมโครโฟนตลอดเวลา หรือแบบ Push-to-talk ในเกือบทุกกรณี คุณไม่ควรเปิดไมโครโฟนตลอดเวลาเป็นค่าเริ่มต้น และถ้าเกมของคุณรองรับผู้เล่นมากกว่า 4 คน เราไม่แนะนำอย่างยิ่งให้เปิดไมโครโฟนตลอดเวลา จากนั้น เมื่อผู้เล่นปล่อยปุ่มลัด Push-to-talk หรือเซสชันกการเล่น ให้เรียก ISteamUser::StopVoiceRecording เพื่อหยุดบันทึกเสียง

    ถ้าผู้ใช้ใช้ระบบแชตด้วยเสียงแบบ Push-to-talk คุณสามารถเรียก ISteamFriends::SetInGameVoiceSpeaking เมื่อเริ่มต้นและหยุดบันทึกเสียง เพื่อปิดการแชตด้วยเสียงที่ผู้ใช้อาจกำลังใช้งานอยู่ผ่าน UI สำหรับสื่อสารกับเพื่อนบน Steam ทางที่ดีที่สุดก็คือ คุณควรเปิดโอกาสให้ผู้เล่นเลือกได้ว่าจะเปิด/ปิดการใช้งานฟังก์ชันนี้หรือไม่

    หลังจากเริ่มบันทึก คุณควรเรียก ISteamUser::GetAvailableVoice ในแต่ละเฟรม เพื่อตรวจสอบว่ามีข้อมูลเสียงที่ได้รับการบีบอัดใด ๆ อยู่หรือไม่ ถ้ามีข้อมูลเสียง คุณจำเป็นต้องใช้ ISteamUser::GetVoice เพื่อรับข้อมูลเสียงล่าสุดจากไมโครโฟน
  • การส่ง
    เมื่อมีข้อมูลเสียงแล้ว คุณน่าจะต้องการส่งข้อมูลดังกล่าวให้ผู้เล่นอื่น API ของเสียง Steam ไม่ได้เตรียมวิธีส่งข้อมูลดังกล่าวโดยตรง แต่ก็สามารถทำได้โดยใช้คลังเครือข่ายตัวใดก็ได้ที่คุณต้องการ API ระบบเครือข่าย Peer-to-Peer ของ Steam เป็นอีกทางเลือกที่ดีเยี่ยมสำหรับการดำเนินการนี้
  • การรับ
    เมื่อผู้ใช้เป้าหมายได้รับข้อมูลเสียง พวกเขาจะเรียก ISteamUser::DecompressVoice เพื่อเปลี่ยนข้อมูลที่ถูกบีบอัดกลับเป็นเสียง
    และเพื่อเป็นทางเลือกเสริม คุณสามารถใช้ ISteamUser::GetVoiceOptimalSampleRate เพื่อรับอัตราแซมเปิลของเครื่องมือคลายการบีบอัดของ Steam Voice ก่อนเรียก ISteamUser::DecompressVoice ซึ่งช่วยลดการใช้งาน CPU แต่คุณภาพเสียงอาจแย่ลง

เช่น

แอปพลิเคชันตัวอย่างของ Steamworks API (SpaceWar) มีตัวอย่างการอิมพลีเมนต์ API ของเสียง Steam ที่มีคุณภาพสูง สามารถรับชิ้นส่วนที่เกี่ยวข้องได้จากไฟล์ voicechat.cpp/h

ต้องการความช่วยเหลือหรือเปล่า?

กรุณาเยี่ยมชม กระดานสนทนาสำหรับผู้พัฒนาเกม Steamworks เพื่อค้นหาคำถามที่ผู้อื่นเคยถามไว้และถามคำถามของคุณเอง