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

API ใหม่ล่าสุดของเราส่งต่อแพ็กเก็ตผ่านทางเครือข่าย Valve ตามค่าเริ่มต้น ซึ่งทำให้มั่นใจว่ามีการปกป้องผู้เล่นและเซิร์ฟเวอร์เกม เพราะมีประสิทธิภาพสูงกว่าเดิม และใช้ชั้นความน่าเชื่อถือที่มีคุณภาพสูงขึ้น นอกจากนั้นยังรองรับการเชื่อมต่อ UDP แบบปกติด้วย เวอร์ชันโอเพนซอร์ซมีอยู่ใน GitHub
  • ISteamNetworkingMessages เป็นอินเตอร์เฟซระดับสูงที่ใช้สำหรับส่งข้อความถึงเพียร์ที่คุณกำหนดเอง ซึ่งเหมือนกับ UDP ในลักษณะที่ว่าจะไม่ใช้แฮนเดิลการเชื่อมต่อ คุณกำหนดผู้รับข้อความในแต่ละครั้งที่คุณส่งข้อความ คล้ายกับฟังก์ชันซ็อกเก็ต sendto() คุณไม่จำเป็นต้องเลือกให้เพียร์รายใดรายหนึ่งเป็น "ไคลเอนต์" และเริ่มต้นการเชื่อมต่อ และเซิร์ฟเวอร์ก็ไม่จำเป็นต้อง "รอ" หรือ "ยอมรับ" การเชื่อมต่อกับไคลเอนต์ เพียร์แต่ละรายสามารถส่งข้อความได้ทันที เนื่องจากคุณสมบัตินี้คล้ายคลึงกับ UDP จึงอาจเป็น API ที่ง่ายที่สุดที่จะพอร์ตรหัส UDP ที่มีอยู่ อย่างไรก็ตาม API นี้ต่างจาก UDP แบบดิบ โดยรองรับข้อความที่มีขนาดใหญ่กว่าแพ็กเก็ตเดียว และส่งข้อความได้อย่างน่าเชื่อถือ การจราจรข้อมูลได้รับการถ่ายทอดผ่านทางโครงสร้างหลักของ Valve หรืออาจมีการสร้างการเชื่อมต่อโดยตรงเมื่อเหมาะสม
  • ISteamNetworkingSockets เป็นอินเตอร์เฟซระดับต่ำที่อาศัยแฮนเดิลการเชื่อมต่อสำหรับส่งและรับข้อความ
  • ISteamNetworkingUtils มีอรรถประโยชน์เบ็ดเตล็ด ซึ่งรวมถึงเครื่องมือสำหรับประเมินค่าปิงระหว่างอินเทอร์เน็ตโฮสต์ต่าง ๆ ที่ไม่เจาะจง
  • steamnetworkingtypes เป็นส่วนหัวที่มีประเภทและอรรถประโยชน์ทั่ว ๆ ไปมากมาย
  • Steam Datagram Relay เป็นบริการสำหรับรีเลย์ปริมาณการใช้งานเกมของคุณผ่านทางโครงสร้างหลักของ Valve บริการนี้ช่วยป้องกันการเปิดเผยที่อยู่ IP และในหลาย ๆ กรณีช่วยเพิ่มค่าปิงและคุณภาพการเชื่อมต่อ การเชื่อมต่อ P2P ทั้งหมดจะได้รับการถ่ายทอดข้อมูลผ่านโครงสร้างหลักของ Valve โดยอัตโนมัติในสถานการณ์ที่เหมาะสม เอกสารฉบับนี้อธิบายว่าคุณจะต้องทำอย่างไรบ้างถ้าคุณต้องการใช้ SDR สำหรับเกมที่ใช้เซิร์ฟเวอร์เฉพาะ เพื่อเพิ่มประสิทธิภาพของค่าปิงและป้องกันเซิร์ฟเวอร์จากการโจมตีของ DoS

ISteamNetworking เป็น API เก่าที่เลิกใช้แล้ว ถ้าคุณยังใช้อยู่ คุณควรโอนย้ายไปยัง API ใหม่เร็ว ๆ นี้ เพราะเราอาจลบ API นี้ออกจาก SDK ในการเปิดตัวในอนาคต

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

บนอินเทอร์เน็ตมีบทความที่ดีมากมายเกี่ยวกับระบบเครือข่ายในหัวข้อต่าง ๆ เราขอแนะนำให้ลองอ่านบทความต่อไปนี้:

ไปที่ แอปพลิเคชันตัวอย่างของ Steamworks API (SpaceWar) เพื่อดูตัวอย่างการใช้ ISteamNetworkingSockets สำหรับการสื่อสารระหว่างเซิร์ฟเวอร์กับไคลเอนต์