เอกสาร 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. เปิดการใช้งานบริการช่องเก็บของ
    เมื่อคุณมีคำนิยามไอเท็มแล้ว ให้เปิดบริการช่องเก็บของด้วยการทำเครื่องหมายที่ "เปิดการใช้งานบริการช่องเก็บของ" บนหน้าที่คุณได้อัปโหลดคำนิยามไอเท็มของคุณไว้ โปรดทราบว่าเมื่อคุณตั้งค่าการมองเห็นไอเท็มของคุณให้เป็นส่วนตัวในการตั้งค่าระบบเศรษฐกิจของ Steam เฉพาะบัญชีในกลุ่มพันธมิตร Steamworks ของคุณเท่านั้นที่จะสามารถเข้าใช้งานไอเท็มของคุณในเกมได้
  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 ได้