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

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

คำอธิบาย

สามารถใช้บริการช่องเก็บของได้อยู่ 2 วิธีด้วยกันคือ - การใช้งานแบบไม่มีเซิร์ฟเวอร์ และการใช้งานแบบมีเซิร์ฟเวอร์เสริมที่ได้รับความเชื่อถือ เพื่อรับรู้ถึงสถานะของเกม

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

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

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

และท้ายสุดในการใช้งานร่วมกับการบริการช่องเก็บของนั้น คุณสามารถขายไอเท็มแบบเป็นชิ้นหรือแบบเป็นคันรถเข็นก็ได้ ทั้ง ในเกม หรือผ่านทาง หน้าร้าน บนเว็บไซต์

สำหรับการใช้งานในภาพรวม ปัญหาเฉพาะต่าง ๆ ที่การบริการช่องเก็บของได้มาช่วยแก้ไขให้แก่ผู้พัฒนา และการสาธิตให้ดูว่าพันธมิตรสามารถใช้ระบบนี้เพื่อให้บริการลูกค้าของตนเองได้อย่างไรนั้น ก็ขอแนะนำให้คุณดูได้จากการนำเสนอ Steam Dev Days 2016

https://www.youtube.com/watch?v=jDfhPTSOLis

ภาพรวมการใช้งาน

  1. การสร้างคำนิยามไอเท็ม
    ในการเริ่มต้นใช้งานนั้นคุณจะต้องสร้างและอัปโหลด คำนิยามไอเท็ม (ItemDefs) บางส่วนเสียก่อน
    เพื่อเป็นการอธิบายถึงชุดของไอเท็มที่มีความเป็นไปได้ว่าจะมีอยู่ในเกมของคุณ โดยคุณไม่จำเป็นต้องใช้สิ่งเหล่านี้จากในตัวเกมของคุณ แต่ทาง Steam นั้นจำเป็นจะต้องใช้เพื่อที่จะได้ทำการแสดงผลช่องเก็บของได้อย่างถูกต้อง ในการสร้าง ItemDefs นั้น ให้ไปยังหัวข้อช่องเก็บของ Steam ที่อยู่ในหัวข้อการตั้งค่า Steamworks ของคุณ ซึ่งคุณสามารถไปที่นั่นได้จาก: https://partner.steamgames.com/apps/inventoryservice/
  2. Enable Inventory Service
    Once you have item definitions, turn on the Inventory Service by checking "Enable Inventory Service" on the page you uploaded your item definitions. Note that while your item visibility is set to Private, only accounts in your Steamworks Partner group will be able to access your items in-game.
  3. การตั้งค่าคีย์เซิร์ฟเวอร์ทรัพยากร
    เริ่มแรกให้สร้างคีย์ Web API ให้แก่แอปพลิเคชันของคุณเสียก่อน (วิธีการ: การสร้างคีย์ Web API สำหรับผู้จัดจำหน่าย) แล้วก็นำคีย์นั้นไปใส่ไว้ในช่องข้อมูลคีย์เซิร์ฟเวอร์ทรัพยากร ในการตั้งค่าระบบเศรษฐกิจของ Steam
  4. การดาวน์โหลดช่องเก็บของของผู้ใช้
    คุณสามารถสั่งการไคลเอนต์เกมของคุณให้ดาวน์โหลดช่องเก็บของของผู้ใช้ได้ด้วยการเรียก ISteamInventory::GetAllItems
    ซึ่งก็ขอแนะนำให้คุณดำเนินการเช่นนี้อยู่เป็นประจำ เพื่อให้เป็นการเผื่อไว้ในกรณีที่ผู้ใช้ได้เพิ่มไอเท็มของตนเองเข้าไปผ่านทางการแลกเปลี่ยนหรือการสั่งซื้อ
    โดยแนะนำให้ทำการตรวจสอบเวลาที่เริ่มเกมใหม่หรือเริ่มด่านใหม่ แต่ทั้งนี้ขึ้นอยู่กับลักษณะของเกมของคุณด้วย
  5. การมอบไอเท็มทดสอบ
    ให้ใช้ ISteamInventory::GenerateItems เพื่อมอบไอเท็มที่ระบุเฉพาะให้กับบัญชีผู้ใช้ปัจจุบัน เพื่อเป้าหมายในการพัฒนาเกม
  6. การดร็อปไอเท็มให้ตามเวลาเล่น (ตัวเลือกเสริม)
    มื่อเวลาเล่นเกมได้มีค่าถึงที่กำหนดไว้ (ส่วนมากจะเป็นเมื่อจบแมตช์หรือจบช่วงเฟสการเล่น) ก็ให้เรียก ISteamInventory::TriggerItemDrop เพื่อมาดูว่าผู้ใช้ได้รับไอเท็มดร็อปชิ้นใหม่หรือไม่
  7. การขายไอเท็ม (ตัวเลือกเสริม)
    หากต้องการรองรับการทำธุรกรรมขนาดเล็ก ให้กำหนดราคาเอาไว้ใน itemdefs แล้วจากนั้นคุณจะสามารถอนุญาตให้ผู้เล่นสามารถสั่งซื้อไอเท็มเหล่านั้นได้

API

สามารถดูเอกสารประกอบการใช้งานสำหรับ Steam Inventory API ได้ใน เอกสารอ้างอิง API ที่นี่: ISteamInventory

Web API

สามารถดูเอกสารประกอบการใช้งานสำหรับ Web API ได้ใน เอกสารอ้างอิง Web API ที่นี่: IInventoryService

ฟังก์ชั่นเว็บ

เว็บเพจเหล่านี้เป็นเว็บเพจที่ได้รับการจัดโครงสร้างเอาไว้ที่ทำให้คุณสามารถส่งผู้ใช้ไปได้
  • ItemCart - สามารถใช้เพื่อส่งรถเข็นที่บรรจุเอาไว้ด้วยไอเท็มที่สามารถสั่งซื้อผ่าน Steam ได้
  • BuyItem - สามารถใช้เพื่อสั่งซื้อไอเท็ม 1 ชิ้นผ่านทาง Steam ได้