เอกสาร Steamworks
การอัปโหลดไปยัง Steam

ระบบเนื้อหา SteamPipe เบื้องต้น

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

วิดีโอฝึกสอน Steamworks - การสร้างเกมของคุณใน Steampipe

การฝึกสอนนี้จะแนะนำ SteamPipe และขั้นตอนต่าง ๆ ผ่านทางการสร้างแอปพลิเคชันตัวอย่างสำหรับ Steam ด้วยเครื่องมือ Steamworks
https://www.youtube.com/watch?v=SoNH-v6aU9Q

วิดีโอฝึกสอน Steamworks - การเพิ่มแพลตฟอร์มและภาษาใหม่

การฝึกสอนนี้จะอธิบายวิธีการเพิ่มแพลตฟอร์มและภาษาใหม่ไปยังเกมของคุณด้วยการเพิ่มดีโปไปยังแอปของคุณ
https://www.youtube.com/watch?v=PShS32hcing

รายละเอียดทางเทคนิคของ SteamPipe

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

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

บัญชีบิลด์ Steam

ก่อนที่คุณจะสามารถสร้างบิลด์ใด ๆ ก็ตามบน Steam ได้นั้น คุณจะต้องมีบัญชี Steam ในบัญชี Steamworks ของคุณที่ได้รับสิทธิ์ "แก้ไขเมทาดาตาของแอป" และ "เผยแพร่การเปลี่ยนแปลงของแอปไปยัง Steam" แล้วเสียก่อน ด้วยเหตุผลด้านความปลอดภัย ขอแนะนำให้คุณสร้างบัญชีบิลด์เฉพาะที่มีสิทธิ์เหล่านี้ คุณสามารถสร้างบัญชี Steam ขึ้นใหม่เพื่อการนี้โดยเฉพาะได้ที่ https://store.steampowered.com/join

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

create_build_account.png

การติดตั้งครั้งแรกสำหรับแอป SteamPipe ใหม่

ปฏิบัติตามขั้นตอนต่อไปนี้สำหรับการติดตั้งแอป SteamPipe ใหม่:
  1. หาไอดีแอปของแอปพลิเคชันของคุณ (ซึ่งสามารถหาได้ด้วยการเลือกแอปพลิเคชันดังกล่าวที่หน้าหลักใน Steamworks ของคุณ)
  2. ไปที่หน้า การตั้งค่าการติดตั้งทั่วไป ของแอปของคุณ
  3. กำหนดตัวเลือกการเริ่มใช้งานอย่างน้อย 1 ตัวเลือก (เส้นทาง และหากเป็นไปได้ ให้ใส่อาร์กิวเมนต์ที่จำเป็นต้องใช้ในการเปิดใช้เกมด้วย) เลื่อนเมาส์ไปค้างไว้เหนือ (?) เพื่อรับทราบข้อมูลเพิ่มเติมเกี่ยวกับช่องข้อมูลแต่ละช่อง

    ตัวอย่างด้านล่างนี้แสดงตัวเลือกการเริ่มใช้งาน 4 ตัวเลือก โดยแบ่งเป็น 2 ตัวเลือกสำหรับระบบ Windows และอย่างละ 1 ตัวเลือกสำหรับระบบ MacOS และ Linux ตัวเลือกที่ 3 จะแสดงบนระบบ Windows เมื่อผู้ใช้เป็นเจ้าของเนื้อหาดาวน์โหลดที่ระบุไว้เท่านั้น

    updatedlaunchoptions.png
  4. ไปที่หน้า ดีโป และเพิ่มดีโปให้แก่แอปนี้ตามที่จำเป็น ซึ่งตามค่าเริ่มต้นแล้ว ดีโปอาจจะได้รับการกำหนดค่าสำหรับแอปพลิเคชันของคุณเรียบร้อยแล้วก็เป็นได้
    1. คลิกที่ดีโปเริ่มต้นแล้วเปลี่ยนชื่อของดีโปให้เป็นชื่อที่หมาะสมและจดจำได้ง่าย (เช่น "เนื้อหาฐาน" หรือ "เนื้อหาสำหรับ Windows")
    2. ปล่อยการตั้งค่าภาษาให้เป็น [All language] เอาไว้ เว้นแต่ว่านี่จะเป็นดีโปที่มีการระบุภาษาเฉพาะ
    3. ปล่อยการตั้งค่า OS ให้เป็น [All OSes] เอาไว้ เว้นแต่ว่านี่จะเป็นดีโปที่มีการระบุ OS เฉพาะ (หากแอปเป็นประเภท all-in-one หรือใช้สำหรับ PC หรือ Mac อย่างเดียว ควรจะปล่อยไว้เป็น [All OSes] ให้ระบุเฉพาะกับดีโปเกมที่มีการระบุ OS เฉพาะเท่านั้น
    4. คลิก เพิ่มดีโปใหม่ เพื่อสร้างดีโปเพิ่มเติม
    5. คลิก บันทึกการเปลี่ยนแปลง เพื่อบันทึกการเปลี่ยนแปลงที่ได้ทำไป
  5. เมื่อคุณตั้งค่าดีโปของคุณเสร็จแล้ว ให้เผยแพร่การเปลี่ยนแปลงที่คุณได้ดำเนินการจากหน้า เผยแพร่
  6. ดีโปที่เพิ่งได้รับการกำหนดค่าใหม่ของคุณจะต้องถูกบรรจุไว้ในแพ็กเกจเพื่อมอบสิทธิ์การเป็นเจ้าของดีโปดังกล่าวแก่คุณได้ เกมแต่ละเกมบน Steam ควรจะมีแพ็กเกจ Developer Comp ที่จะถูกมอบให้กับบัญชีที่ได้ระบุรายการไว้ในกลุ่มผู้จัดจำหน่ายของคุณโดยอัตโนมัติ
    คุณสามารถเพิ่มดีโปใหม่เหล่านี้ไปยังแพ็กเกจดังกล่าวได้ (และ/หรือแพ็กเกจอื่น ๆ ที่ควรจะมีดีโปเหล่านี้) ได้ที่หน้า แพ็จเกจ & เนื้อหาดาวน์โหลดที่เกี่ยวข้อง
หมายเหตุ: หากตัวโปรแกรมที่สั่งใช้งานได้ของคุณอยู่ในโฟลเดอร์ย่อยของโฟลเดอร์การติดตั้งหลัก ให้เพิ่มชื่อโฟลเดอร์ย่อยในช่องข้อมูลตัวโปรแกรมที่สั่งใช้งานได้ อย่าใช้เครื่องหมายทับหรือจุดนำหน้า

การเริ่มตั้งค่า SDK สำหรับการอัปโหลด SteamPipe

ดาวน์โหลด และคลายซิป Steamworks SDK เวอร์ชันล่าสุดบนเครื่องที่คุณจะใช้อัปโหลดบิลด์

เครื่องมือ SteamPipe จะอยู่ภายใน SDK ในโฟลเดอร์ เครื่องมือ ซึ่งบรรจุ 2 ไดเรกทอรีย่อยที่เกี่ยวข้อง

ไดเรกทอรี ContentBuilder เป็นที่ที่บรรจุเนื้อหาและเครื่องมือบิลด์ SteamPipe ของเกมของคุณ ไดเรกทอรีนี้บรรจุไดเรกทอรีย่อยดังต่อไปนี้:
  • builder - ไดเรกทอรีนี้เริ่มแรกจะบรรจุเพียง steamcmd.exe ที่เป็น Steam เวอร์ชันคอมมานด์ไลน์อยู่เพียงเท่านั้น
  • builder_linux - steamcmd เวอร์ชัน Linux
  • builder_osx - steamcmd เวอร์ชัน macOS
  • content - ไดเรกทอรีนี้จะบรรจุไฟล์เกมทั้งหมดที่จะถูกบิลด์ลงไปในดีโป
  • output - ไดเรกทอรีนี้จะเป็นตำแหน่งที่ตั้งสำหรับเก็บบันทึกของบิลด์ กลุ่มแคช และเอาต์พุตระดับกลาง หมายเหตุ: สามารถลบหรือล้างโฟลเดอร์นี้ให้ว่างได้ตามต้องการ แต่หากลบไปแล้ว การอัปโหลดครั้งต่อไปจะใช้เวลานานขึ้น
  • scripts - ไดเรกทอรีนี้จะเป็นที่ที่คุณเอาไว้วางสคริปต์บิลด์ทั้งหมดสำหรับสร้างดีโปเกมของคุณ
steampipebuilddir.png

ขอแนะนำให้คุณเรียกใช้ steamcmd.exe โดยตรงในโฟลเดอร์ของตัวบิลด์สำหรับแพลตฟอร์มของคุณหนึ่งครึ่งเพื่อ bootstrap ระบบบิลด์ของคุณ ซึ่งจะช่วยจัดเตรียมไฟล์ทั้งหมดที่จำเป็นต้องใช้ในการสร้างดีโปลงในไดเรกทอรีตัวบิลด์ของคุณ

ไดเรกทอรี ContentServer บรรจุเครื่องมือสำหรับเรียกใช้ เซิร์ฟเวอร์เนื้อหาภายในเครื่อง SteamPipe ของคุณเอง หากคุณต้องการ

SteamCmd บน macOS

ในการเปิดการใช้งาน SteamCmd บน macOS คุณจะต้องดำเนินการตามขั้นตอนดังต่อไปนี้ให้เสร็จสมบูรณ์:
  1. จากเทอร์มินัล ให้ไปที่โฟลเดอร์ tools\\ContentBuilder\\\\osx32
  2. เรียกใช้ chmod +x steamcmd
  3. ไปที่โฟลเดอร์หลัก (tools\ContentBuilder\builder_osx)
  4. พิมพ์ bash ./steamcmd.sh
  5. SteamCmd จะทำงานและอัปเดตให้เป็นบิลด์ล่าสุด แล้วจะนำคุณไปอยู่ในพร้อมท์ SteamCmd
  6. พิมพ์ exit และกด return เพื่อออกจากพร้อมท์
จากนั้นคุณจะสามารถดำเนินการตามเอกสารประกอบการใช้งานฉบับนี้ทั้งหมด (เปลี่ยนเส้นทางตามที่จำเป็น) ในการสร้างไฟล์การกำหนดค่าของดีโปและแอปสำหรับการอัปโหลดเนื้อหาของคุณไปยัง Steam

การสร้างไฟล์การกำหนดค่าบิลด์ SteamPipe

ในการอัปโหลดแอปของคุณด้วย SteamPipe คุณจะต้องสร้างสคริปต์ที่อธิบายบิลด์ของคุณและแต่ละดีโปที่จะบรรจุรวมไว้ในนั้น มีสคริปต์ตัวอย่างแบบง่ายอยู่ในโฟลเดอร์ ContentBuilder\scripts สำหรับแอปที่มีหนึ่งดีโป

หมายเหตุ: คุณสามารถตั้งชื่อสคริปต์เหล่านี้ได้ตามต้องการ แต่ทางเราได้ใช้ชื่อ app_build_<AppID> และ depot_build_<AppID> เพื่อให้มีความสม่ำเสมอ หากคุณทราบว่าคุณจะสร้างแอปในเครื่องนี้ ถือว่าเป็นการดีที่จะสร้างไดเรกทอรีย่อยในไดเรกทอรีสคริปต์ของคุณสำหรับแต่ละแอปพลิเคชัน เพื่อช่วยจัดระเบียบให้กับสคริปต์บิลด์ของแต่ละแอปพลิเคชัน

เครื่องมือ SteamPipe GUI

หากคุณใช้งานระบบ Windows และต้องการจะใช้งานเครื่องมือ GUI เพื่อช่วยในการสร้างไฟล์การกำหนดค่าต่าง ๆ เหล่านี้แล้วอัปโหลดบิลด์ของคุณ คุณสามารถใช้ SteamPipeGUI ที่พร้อมใช้งานอยู่ในโฟลเดอร์เครื่องมือของ Steamworks SDK ได้ ซึ่งได้ให้คำแนะนำเพิ่มเติมในไฟล์ zip สำหรับเริ่มต้นใช้งาน

หากคุณเลือกที่จะใช้เครื่องมือ GUI ขอแนะนำให้อ่านหัวข้อดังต่อไปนี้เพื่อช่วยเหลือให้ตัวคุณเองมีความคุ้นเคยกับการทำงานของระบบ SteamPipe

สคริปต์สำหรับบิลด์ดีโป

เริ่มแรกให้สร้างสคริปต์สำหรับบิลด์ดีโปให้กับแต่ละดีโปที่คุณต้องการจะอัปโหลด เริ่มด้วยการทำสำเนาสคริปต์ depot_build_1001.vdf แล้วเปลี่ยนชื่อเป็นไอดีดีโปที่จะอัปโหลด

ตัวอย่างสคริปต์สำหรับบิลด์ดีโป:
"DepotBuildConfig" { // Set the depot ID that this script will upload. "DepotID" "1001" // Set a root for all content. // All relative paths specified below (LocalPath in FileMapping entries, and FileExclusion paths) // will be resolved relative to this root. // If you don't define ContentRoot, then it will be assumed to be // the location of this script file, which probably isn't what you want "ContentRoot" "D:\MyGame\rel\master\" // Include all files recursively "FileMapping" { // This can be a full path, or a path relative to ContentRoot "LocalPath" "*" // This is a path relative to the install folder of your game "DepotPath" "." // If LocalPath contains wildcards, setting this means that all // matching files within subdirectories of LocalPath will also // be included. "recursive" "1" } // Exclude all symbol files // This can be a full path, or a path relative to ContentRoot "FileExclusion" "*.pdb" }

หมายเหตุ: การตั้งค่า "ContentRoot" ในสคริปต์บิลด์ดีโปต์จะเข้าไปแทนที่ "ContentRoot" ที่อยู่ในสคริปต์สำหรับบิลด์แอป

สคริปต์สำหรับบิลด์แอป

หลังจากที่คุณตั้งค่าสคริปต์สำหรับบิลด์ดีโปเสร็จแล้ว คุณจำเป็นจะต้องใช้สคริปต์สำหรับบิลด์แอปที่อธิบายรายละเอียดของตัวบิลด์ เริ่มด้วยการทำสำเนาสคริปต์ depot_build_1000.vdf แล้วเปลี่ยนชื่อเป็นไอดีดีโปที่จะอัปโหลด

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

ตัวอย่างสคริปต์บิลด์แอป:
"appbuild" { // Set the app ID that this script will upload. "appid" "1000" // The description for this build. // The description is only visible to you in the 'Your Builds' section of the App Admin panel. // This can be changed at any time after uploading a build on the 'Your Builds' page. "desc" "Your build description here" // Enable/Disable whether this a preview build. // It's highly recommended that you use preview builds while doing the initially setting up SteamPipe to // ensure that the depot manifest contains the correct files. "preview" "1" // File path of the local content server if it's enabled. "local" "" // Branch name to automatically set live after successful build, none if empty. // Note that the 'default' branch can not be set live automatically. That must be done through the App Admin panel. "setlive" "" // The following paths can be absolute or relative to location of the script. // This directory will be the location for build logs, chunk cache, and intermediate output. // The cache stored within this causes future SteamPipe uploads to complete quicker by using diffing. "buildoutput" "..\output\" // The root of the content folder. "contentroot" "..\content\" // The list of depots included in this build. "depots" { "1001" "depot_build_1001.vdf" } }

การบิลด์ดีโป

ในการที่จะเริ่มเปิดใช้งานบิลด์ ให้แก้ไขไฟล์.bat เพื่อบรรจุบัญชีบิลด์ Steamworks และรหัสผ่านของคุณ (กรุณาดู ข้างต้น) และเส้นทางไปยังสคริปต์สำหรับบิลด์แอป:
builder\steamcmd.exe +login "account" "password" +run_app_build ..\scripts\[build_script_name].vdf +quit

หมายเหตุ: Steam Guard อาจจะทำให้การเริ่มใช้งานบิลด์ครั้งแรกล้มเหลวได้ หากเข้าระบบไม่ผ่านเนื่องจาก Steam Guard กรุณาตรวจสอบอีเมลของคุณเพื่อดูรหัส Steam Guard แล้วเรียกใช้ steamcmd เป็น: steamcmd.exe "set_steam_guard_code <code>" จากนั้นลองใหม่อีกครั้ง หลังจากที่เข้าสู่ระบบด้วย Steam Guard แล้วหนึ่งครั้ง ไฟล์รักษาความปลอดภัยที่ใช้ในการยืนยันการเข้าสู่ระบบก็จะมีความถูกต้องสมบูรณ์

หลังจากที่คุณเรียกใช้ run_build.bat แล้ว เอาต์พุตของบิลด์ของคุณควรจะอยู่ในไดเรกทอรีที่ได้ระบุไว้ในไฟล์สคริปต์สำหรับบิลด์ของคุณ หากบิลด์ตัวอย่างได้แสดงมานิเฟสต์ที่ไม่ได้คาดคิด ให้เรียกใช้บิลด์นั้นอีกครั้งด้วย "preview" "0" ในสคริปต์สำหรับบิลด์แอปของคุณ

ขั้นตอนดังต่อไปนี้จะเกิดขึ้นในระหว่างที่ทำการบิลด์ SteamPipe:
  1. Steamcmd.exe จะบันทึกล็อกเข้าไปยังระบบแบ็กเอนด์ของ Steam ด้วยการใช้บัญชีตัวบิลด์ของ Steam
  2. ตัวเริ่มบิลด์แอปจะได้รับการลงทะเบียนด้วย MDS (Master Depot Server) ซึ่งจะตรวจสอบให้มั่นใจว่าผู้ใช้มีระดับสิทธิ์อนุญาตที่ถูกต้องในการแก้ไขแอปนี้
  3. สำหรับแต่ละดีโปที่บรรจุในบิลด์แอปนั้น จะมีการสร้างรายการไฟล์ตามไฟล์ที่อยู่ในโฟลเดอร์เนื้อหาและกฎการกรองตามที่ได้กำหนดไว้ในไฟล์การกำหนดค่าบิลด์ดีโป
  4. แต่ละไฟล์จะถูกสแกนและถูกแบ่งออกเป็นชิ้นส่วนข้อมูลเล็ก ๆ ขนาดประมาณ 1 เมกะไบต์ หากเคยบิลด์ดีโปมาก่อนแล้ว การแบ่งชิ้นส่วนไฟล์นี้จะถูกเก็บไว้เป็นชิ้นส่วนที่ไม่ได้รับการเปลี่ยนแปลงมากที่สุดเท่าที่จะเป็นไปได้
  5. ชิ้นส่วนไฟล์ใหม่จะได้รับการบีบอัด เข้ารหัส และอัปโหลดไปยัง MDS
  6. มานิเฟสต์สุดท้ายจะได้รับการสร้างขึ้นมาให้แก่ดีโปเวอร์ชันนี้ มานิเฟสต์แต่ละชุดจะถูกระบุด้วยไอดีมานิเฟสต์แบบ 64 บิตที่ไม่ซ้ำกัน
  7. เมื่อดีโปทั้งหมดได้รับการประมวลผลแล้ว MDS จะสิ้นสุดการบิลด์แอปนี้ และจะกำหนดไอดีบิลด์ส่วนกลาง
  8. หลังจากทำการบิลด์เสร็จแล้ว อาจมีไฟล์ *.csm และ *.csd อยู่ในโฟลเดอร์บิลด์เอาต์พุต ไฟล์เหล่านี้เป็นไฟล์ชั่วคราวและสามารถลบทิ้งได้ แต่ไฟล์เหล่านี้สามารถช่วยทำให้การบิลด์ในครั้งถัด ๆ ไปมีความรวดเร็วขึ้น

การจัดการอัปเดต

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

กฎการแมปไฟล์ขั้นสูง

สามารถมีการแมปไฟล์ได้หลายชุดที่จะเพิ่มไฟล์ไปยังดีโป ซึ่งควรได้รับการระบุก่อน
สามารถละเว้นไฟล์หรือโฟลเดอร์ย่อยต่าง ๆ ได้ด้วยการใช้คำสั่งตัวกรอง
สคริปต์ติดตั้ง สามารถถูกทำเครื่องหมายในระหว่างกระบวนการบิลด์ได้ เพื่อให้ไคลเอนต์ Steam รู้ว่าจะต้องเรียกใช้สคริปต์ดังกล่าวสำหรับแอปพลิเคชันใดก็ตามที่อยู่ในดีโป
สามารถแมปไฟล์หรือโฟลเดอร์ใหม่ได้ เพื่อให้โฟลเดอร์ย่อยในโฟลเดอร์เนื้อหาสามารถถูกแมปไปยังที่ใดก็ได้ในดีโป
ไฟล์สามารถถูกแท็กด้วยแฟล็กพิเศษได้:
  • userconfig - ไฟล์นี้ถูกแก้ไขโดยผู้ใช้หรือเกม ซึ่งไม่สามารถถูกแทนที่ได้ด้วยการอัปเดต และจะไม่ทริกเกอร์ข้อผิดพลาดเกี่ยวกับการยืนยัน หากมีความแตกต่างจากไฟล์เวอร์ชันก่อนหน้า
  • readonly - ไฟล์นี้จะถูกทำเครื่องหมายเป็นอ่านได้อย่างเดียวในระบบไฟล์ของไคลเอนต์
  • hidden - ไฟล์นี้จะถูกทำเครื่องหมายไว้เป็นถูกซ่อนในระบบไฟล์ของไคลเอนต์
  • executable - ไฟล์นี้คือไฟล์ตัวโปรแกรมที่สั่งใช้งานได้ (สำหรับ OS X เท่านั้น)
    "DepotBuildConfig" { "DepotID" "202931" "FileMapping" { // override video files files in \\videos with German versions "LocalPath" "localization\\german\\videos\\*" "DepotPath" "videos\\" } "FileMapping" { // override audio files in \\audio with German versions "LocalPath" "localization\\german\\audio\\*" "DepotPath" "audio\\" } "FileMapping" { "LocalPath" "localization\\german\\german_installscript.vdf" "DepotPath" "." } "FileExclusion" "bin\\server.exe" // exclude this file "FileExclusion" "*.pdb" // exclude all .PDB files everywhere "FileExclusion" "maps\\testroom*" // exclude all files under maps/testroom/ "InstallScript" "localization\\german\\german_installscript.vdf" "FileProperties" { "LocalPath" "bin\\setup.cfg" "Attributes" "userconfig" // this file will be modified during runtime } }

การดีบักปัญหาในบิลด์

หากการบิลด์ของคุณไม่ประสบความสำเร็จ คุณควรดูในไดเรกทอรีเอาต์พุตของคุณเพื่อหาข้อมูลความผิดพลาด ไม่ใช่ในคอนโซลที่มีการเรียกใช้สคริปต์สำหรับบิลด์ของคุณ ข้อมูลความผิดพลาดส่วนมากจะสามารถพบในไฟล์ *.log
คุณสามารถใช้คำสั่งของไคลเอนต์ Steam และไฟล์ฝั่งไคลเอนต์ดังต่อไปนี้เพื่อดีบักปัญหาได้:
  • "app_status [appid]" - แสดงสถานะปัจจุบันของแอปที่อยู่บนไคลเอนต์นี้
  • "app_info_print [appid]" - แสดงการกำหนดค่า Steamworks ในปัจจุบันสำหรับเกมนี้ (ดีโป ตัวเลือกการเรียกเปิดใช้ ฯลฯ)
  • "app_config_print [appid]" - แสดงการกำหนดค่าของผู้ใช้ปัจจุบันสำหรับเกมนี้ (ภาษาที่ใช้งานอยู่ ไดเรกทอรีการติดตั้ง ฯลฯ)
  • file "logs\content_log.txt" - ระบุรายการปฏิบัติการและข้อผิดพลาดของ Oxcart ทั้งหมดที่ได้รับการบันทึกไว้
  • file "steamapps\appmanifest_[appid].acf" - แสดงสถานะการติดตั้งปัจจุบันของแอปนี้ (KeyValues)

การสร้างดีโปอย่างมีประสิทธิภาพสำหรับ SteamPipe

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

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

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

หากคุณปฏิบัติตามกฎเหล่านี้ คุณจะสามารถลดขนาดของแพตช์ลงได้ และจะมีการดาวน์โหลดเฉพาะเนื้อหาใหม่เท่านั้น ลูกค้าของคุณจะขอบคุณที่คุณได้ดำเนินการเช่นนั้น และคุณจะสามารถเพิ่มคุณภาพของผลิตภัณฑ์ของคุณด้วยการนำส่งอัปเดตเพิ่มขึ้นได้

การบิลด์ดิสก์การติดตั้งขายปลีก

ในการบิลด์ดิสก์การติดตั้งขายปลีกสำหรับเกม SteamPipe อันดับแรกคุณจะต้องตั้งค่าไฟล์โปรเจ็คสำหรับการบิลด์ก่อน
ในตัวอย่างนี้ จะเรียกไฟล์ SKU ว่า "sku_goldmaster.txt":
"sku" { "name" "Test Game Installer" "appid" "202930" "disk_size_mb" "640" "included_depots" { "1" "202931" "2" "202932" } }
คำแนะนำที่ควรพึงปฏิบัติตาม:
  • สร้างโฟลเดอร์ใหม่สำหรับการเขียนดิสก์อิมเมจขายปลีกลงไป เช่น "D:\retail_disks" จะเพิ่มเฉพาะดีโปในส่วน included_depots เข้าไปเท่านั้น จะไม่มีส่วนที่ถูกละเว้นอีกต่อไป
  • คุณสามารถใช้ Steam.exe (ที่มีพารามิเตอร์คอมมานด์ไลน์ -dev และ -console) หรือ steamcmd.exe เพื่อสร้างอิมเมจตัวติดตั้งได้ โดยในทั้งสองกรณี กรุณาใช้คำสั่ง "build_installer"
  • เข้าสู่ระบบด้วยบัญชี Steam ที่เป็นเจ้าของเกมดังกล่าวและดีโปทั้งหมดที่คุณต้องการจะใส่ลงไปในดิสก์ขายปลีก มิฉะนั้น บัญชีดังกล่าวจะไม่จำเป็นจะต้องใช้สิทธิ์พิเศษ ทำให้ทุกคนสามารถสร้างดิสก์ตัวติดตั้งได้
  • หากคุณใช้ Steam.exe ให้หยุดการดาวน์โหลดอื่น ๆ ทั้งหมด
  • ไปยังหน้าคอนโซล แล้วเรียกใช้คำสั่ง build_installer:
    build_installer sku_goldmaster.txt "D:\retail_disks"
    บิลด์จะต้องใช้เวลาสักครู่เพราะว่าดีโปทั้งหมดจะต้องถูกดาวน์โหลดซ้ำในครั้งแรก
  • หากคุณจะสร้าง GM (โกลด์มาสเตอร์) โดยการใช้เซิร์ฟเวอร์เนื้อหาภายในเครื่อง ให้เรียกใช้:
    @localcontentserver "webserver"
    build_installer sku_goldmaster.txt "D:\retail_disks" local
    ส่วนที่เกิน หมายถึง 'Backup' เนื่องจากส่วนสำรองของทั้ง 'ดิสก์การติดตั้งประเภทขายปลีก' และเกมภายในเครื่องโดยทั่วไปแล้วจะเหมือนกัน
  • เมื่อคุณเห็น "Backup AppID..." แสดงว่าอิมเมจดิสก์การติดตั้งพร้อมใช้งานแล้ว คุณสามารถอ่านรายละเอียดเพิ่มเติมเกี่ยวกับบิลด์สำรองได้ใน logs\backup_log.txt
  • มีโฟลเดอร์ใหม่ (Disk_1, Disk_2, และต่อไป) in "D:\retail_disks" ซึ่งแต่ละโฟลเดอร์จะมีขนาดไม่เกิน 640 เมกะไบต์ ตามที่ได้ระบุไว้ด้วย "disk_size_mb" โฟลเดอร์ของดิสก์แต่ละโฟลเดอร์จะบรรจุไฟล์ "sku.sis" และ .csd และ .csm สำหรับแต่ละดีโป ดีโปที่มีขนาดใหญ่จะต้องใช้หลายดิสก์ เนื้อหาดิสก์การติดตั้งขายปลีกทั้งหมดจะถูกเข้ารหัสเสมอ (ซึ่งไม่เหมือนกับไฟล์สำรองเกมภายในเครื่อง) ให้คัดลอกไฟล์การติดตั้ง SDK GM (setup.exe, setup.ini ฯลฯ) ลงไปในโฟลเดอร์ของดิสก์แรกของคุณ และตัวติดตั้งสำหรับดิสก์ประเภทขายปลีกก็จะเสร็จสมบูรณ์
  • ในเวลาที่สร้าง GM ให้กับ OSX กรุณาตรวจสอบให้มั่นใจว่าได้เปิดอิมเมจ goldmaster/disk_assets/SteamRetailInstaller.dmg image บนระบบ Mac จากนั้นให้หาแอปที่อยู่ในนั้นแล้วคัดลอกไปยังรากของสื่อของคุณ ขอแนะนำให้คุณเปลี่ยนชื่อของแอปการติดตั้ง ติดแบรนด์ของคุณให้กับไอคอน แล้วตกแต่งหน้าต่างให้แสดงเฉพาะตัวติดตั้งอย่างเดียว
  • เวลาที่สร้าง GM แบบหลายดิสก์ให้กับ OSX กรุณาตรวจสอบให้มั่นใจว่าชื่อไดรฟ์ข้อมูลของแต่ละดิสก์นั้นตรงกัน เนื่องจากชื่อไดรฟ์ข้อมูลจะกลายเป็นส่วนหนึ่งของเส้นทางการเชื่อมต่อ และหากชื่อไม่ตรงกัน ตัวติดตั้งจะไม่สามารถหาดิสก์ถัดไปได้

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

กระบวนการข้างต้นจะสร้างตัวติดตั้งประเภทขายปลีกตามแบรนช์เริ่มต้น หากคุณต้องการจะสร้างตัวติดตั้งตามแบรนช์เบต้า อันดับแรก คุณจะต้องสร้างแบรนช์เบต้าที่มีชื่อว่า "baseline" ขึ้นมาก่อน จากนั้นให้ใช้คำสั่งดังต่อไปนี้เพื่อสร้างจากแบรนช์ baseline:
build_installer <project file> <target folder> <beta key> <beta pwd> steamcmd ex: build_installer sku_goldmaster.txt "D:\retail_disks" baseline superSecret script ex: steamcmd.exe +login user_name password +build_installer "..\Build\GameDataSku.txt" c:\destination beta_key beta_password +exit

การติดตั้งเนื้อหาดาวน์โหลดจากตัวติดตั้งประเภทขายปลีก

ในบางสถานการณ์ คุณอาจต้องการจะสร้างตัวติดตั้งประเภทขายปลีกที่บรรจุแพ็กเกจเนื้อหาดาวน์โหลดของคุณเอาไว้ด้วย ในกรณีดังกล่าว กระบวนการสร้างตัวติดตั้งจำเป็นต้องมีการเปลี่ยนแปลงเล็กน้อยเท่านั้น
ใน "sku_goldmaster.txt" จะบรรจุไอดีแอปเนื้อหาดาวน์โหลดเอาไว้ในหมวด "included_depots" เมื่อคุณได้เรียกใช้กระบวนการ "build_installer" แล้ว ให้หาไฟล์ sku.sis ที่สร้างขึ้นมาสำหรับตัวติดตั้งนั้น แล้วเปิดไฟล์ดังกล่าวขึ้นมาด้วย text editor
เพิ่มไอดีแอปเนื้อหาดาวน์โหลดในหมวด "แอป" ตัวอย่างเช่น หากคุณมีเกมที่มีไอดีแอป 1000 และไอดีแอปเนื้อหาดาวน์โหลด 1010 คุณจะต้องแก้ไขหมวด "apps" ดังต่อไปนี้:
"apps" { "0" "1000" "1" "1010" }
ทั้งนี้ก็เพื่อให้แน่ใจว่า Steam ตรวจสอบการเป็นเจ้าของเนื้อหาดาวน์โหลด และแจ้งเตือนผู้ใช้ว่าให้ใส่รหัสใช้งานลงไป หากบัญชีที่กำลังเข้าสู่ระบบของ Steam นั้นไม่ได้เป็นเจ้าของเนื้อหาดาวน์โหลด

การสร้างตัวติดตั้งประเภทขายปลีกสำหรับหลายไอดีแอปบนดิสก์/แพ็กเกจตัวติดตั้งเดียว

ในการสร้าง GM ที่บรรจุแอป SteamPipe หลายแอป ให้สร้างตัวติดตั้งแอปแต่ละตัวแยกกัน แต่ให้ชี้ทุกตัวไปยังโฟลเดอร์เอาต์พุตเดียวกัน ซึ่งแต่ละบิลด์ก็จะประสานตัวเองลงไปยังอิมเมจการติดตั้งที่มีอยู่แล้ว

การปรับแต่งดิสก์การติดตั้งประเภทขายปลีก

สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับการปรับแต่งดิสก์การติดตั้งประเภทขายปลีกของคุณ กรุณาอ่าน การปรับแต่งโกลด์มาสเตอร์

การโหลดเกมล่วงหน้าก่อนการวางจำหน่าย

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

ขอแนะนำให้สลับเกมไปเป็นโหมดการโหลดล่วงหน้าในกรณีดังต่อไปนี้:
  • ในเวลาที่นำส่งดิสก์ประเภทขายปลีกพร้อมรหัสผลิตภัณฑ์ก่อนที่เกมจะพร้อมใช้งานจริง (ป้องกันการละเมิดลิขสิทธิ์ตั้งแต่วันที่ 0)
  • เกมเวอร์ชันสั่งซื้อล่วงหน้าและมีขนาดใหญ่กว่า 20 GB

กรุณาส่งตั๋วไปยังฝ่ายเผยแพร่ Steam หากคุณเชื่อว่าเกมของคุณจำเป็นต้องใช้การโหลดล่วงหน้า

การสร้างเนื้อหาดาวน์โหลด

เนื้อหาดาวน์โหลดจะถูกสร้างเป็นดีโปของเกมหลัก กรุณาอ่านเอกสาร เนื้อหาดาวน์โหลด (DLC) สำหรับข้อมูลเพิ่มเติม

การแก้ไปปัญหา SteamPipe

"การเข้าสู่ระบบล้มเหลว: การเข้าสู่ระบบบัญชีถูกปฏิเสธ" เมื่อเข้าสู่ระบบผ่านทาง steamcmd

สาเหตุ: เป็นไปได้ว่า SteamGuard ไม่ยอมให้เข้าสู่ระบบ วิธีการแก้ปัญหา:
  • ตรวจสอบอีเมลที่เชื่อมโยงกับบัญชีที่คุณพยายามจะใช้เข้าสู่ระบบ แล้วมองหาอีเมลที่ส่งมาจากฝ่ายสนับสนุน Steam คัดลอกรหัสจากอีเมลฉบับนั้น
  • เรียกใช้ steamcmd ต่อไปนี้: set_steam_guard_code <code>
  • ลองเข้าสู่ระบบใหม่อีกครั้งจาก steamcmd: Steam>logon <buildaccount> <password>

การแก้ปัญหาทั่วไปเกี่ยวกับการดาวน์โหลด

  • รีสตาร์ทเครื่องคอมพิวเตอร์ โมเด็ม เราเตอร์ ฯลฯ
  • ตรวจสอบการตั้งค่าไฟร์วอลล์ ระบบใหม่นี้จะจำเป็นต้องใช้พอร์ต 80 (HTTP) และพอร์ต Steam อื่น ๆ ทั้งหมดตามที่ระบุไว้ ที่นี่
  • ปิดการใช้งานโปรแกรมต่อต้านไวรัสและโปรแกรมบล็อกสแปมเป็นการชั่วคราว
  • Check the Steam download region under Settings->Downloads. ภูมิภาคดาวน์โหลดควรจะต้องมีค่าตรงกับตำแหน่งที่ตั้งของคุณ
  • หยุดการดาวน์โหลด ถอนการติดตั้ง แล้วติดตั้งเกมใหม่อีกครั้ง (เป็นการล้างแคชของมานิเฟสต์)
  • ออกจาก Steam ลบสองโฟลเดอร์ ได้แก่ appcache และ depotcache ในโฟลเดอร์การติดตั้ง Steam ของคุณ
  • ลองตั้งค่าภูมิภาคดาวน์โหลด Steam ของคุณให้เป็นภูมิภาคอื่นที่อยู่ไกลออกไป อาจจะช่วยแก้ปัญหาได้ หากเซิร์ฟเวอร์เนื้อหาที่อยู่ใกล้กับคุณนั้นมีการส่งข้อมูลไม่ดี

บิลด์ของ Mac และ/หรือ Linux ของฉันไม่ยอมติดตั้งไฟล์ใด ๆ เลย เกิดอะไรขึ้น?

หากคุณกำลังทดสอบการติดตั้งเกมหรือแอปพลิเคชันของคุณผ่านทาง Steam ข้ามหลาย ๆ แพลตฟอร์ม คุณอาจจะเจอสถานการณ์ที่บิลด์ติดตั้งไฟล์ลงไปใน Windows แต่ไม่ยอมติดตั้งไฟล์ลงไปใน Mac หรือ Linux เลย แม้ว่ากระบวนการของ SteamPipe ของคุณได้ถูกตั้งค่าเอาไว้ให้อัปโหลดดีโปสำหรับ Mac และ/หรือ Linux แล้วก็ตาม สาเหตุอาจจะมาจากการเตรียมการตามขั้นตอนต่าง ๆ ที่มีโอกาสผิดพลาดได้โดยง่ายซึ่งจะเกี่ยวข้องกับการเพิ่มดีโปทางเลือกให้กับแพ็กเกจที่จะติดตั้งด้วย คุณสามารถตรวจสอบได้ว่าได้บรรจุดีโปอะไรลงไปในแพ็กเกจแล้วบ้างด้วยการดำเนินการตามขั้นตอนดังต่อไปนี้:
  1. ไปที่หน้า ผู้ดูแลแอป
  2. จากหมวดดูรายการที่เกี่ยวข้อง ให้คลิกที่ ดูเดโม แพ็กเกจที่เกี่ยวข้องทั้งหมด วิดีโอ และเนื้อหาดาวน์โหลด
  3. คลิกที่ชื่อของแพ็กเกจที่คุณต้องการจะดาวน์โหลด
  4. ตรวจสอบหมวด ดีโปที่บรรจุอยู่
  5. ใช้ เพิ่ม/ถอนดีโป เพื่อตรวจสอบให้มั่นใจว่าได้บรรจุดีโปชุดที่ถูกต้องไปยังแพ็กเกจแล้ว
อย่างไรก็ตาม มีกระทู้สนทนาหลายกระทู้ที่อาจจะช่วยเหลือคุณในเรื่องนี้ได้:

การเรียกใช้ steamcmd.exe ทำให้เกิดข้อผิดพลาดดังต่อไปนี้: "SteamUpdater: ข้อผิดพลาด: Steam จะต้องออนไลน์จึงจะอัปเดตได้ กรุณายืนยันการเชื่อมต่อของเครือข่ายของคุณ แล้วลองใหม่อีกครั้ง"

วิธีการแก้ปัญหา: ไปที่ ตัวเลือกอินเทอร์เน็ต->การเชื่อมต่อ->การตั้งค่า Lan แล้วเลือก การตั้งค่าตรวจหาโดยอัตโนมัติ

การเรียกใช้บิลด์แอปทำให้เกิดข้อผิดพลาดต่อไปนี้:: "ข้อผิดพลาด! 'DepotBuild for scriptname.vdf' ล้มเหลว - สถานะ = 6."

สาเหตุที่อาจเป็นไปได้:
  • บัญชีไม่ได้มีสิทธิ์อนุญาตให้ใช้งานแอปนั้นได้
    • ตรวจสอบว่าไอดีแอปที่อยู่ใน app_build.vdf ถูกต้อง
    • ตรวจสอบว่าบัญชีบิลด์ดังกล่าวมี สิทธิ์ที่เหมาะสม ในการเข้าถึงไอดีแอปดังกล่าว
  • Steamcmd หาเนื้อหาดีโปไม่พบ
    • ตรวจสอบว่าค่า "contentroot" ที่อยู่ในสคริปต์ app_build มีเส้นทางที่ถูกต้องสัมพันธ์กับตำแหน่งของไฟล์สคริปต์
    • ตรวจสอบว่าค่า "LocalPath" ที่อยู่ในสคริปต์ depot_build มีเส้นทางที่ถูกต้องสัมพันธ์กับเส้นทางในสคริปต์ app_build ตรวจสอบว่าเส้นทางได้บรรจุเนื้อหาจริง ๆ

การเรียกใช้บิลด์แอปทำให้เกิดข้อผิดพลาดต่อไปนี้:: "ข้อผิดพลาด! ล้มเหลวในการรับข้อมูลแอปพลิเคชันสำหรับแอป NNNNN (ตรวจสอบการเข้าสู่ระบบและการสมัคร)"

ข้อผิดพลาดนี้หมายความว่า Steam ไม่สามารถเรียกรับข้อมูลเกี่ยวกับแอปได้ สาเหตุอาจจะเกิดจากไม่มีแอปดังกล่าวอยู่หรือผู้ใช้ไม่มีสิทธิ์เข้าถึงแอปดังกล่าวก็ได้
  • ตรวจสอบว่า NNNNN เป็นไอดีแอปสำหรับแอปที่กำหนดไว้ให้กับคุณ
  • ตรวจสอบว่าไอดีแอปที่อยู่ใน app_build.vdf ถูกต้อง
  • หากเป็นไอดีแอปใหม่ ให้ตรวจสอบว่าได้เผยแพร่การกำหนดค่าผู้ดูแลแอปของ Steamworks แล้ว แอปใหม่ควรจะมีไดเรกทอรีการติดตั้ง SteamPipe อยู่ในแท็บการกำหนค่า มีดีโปอยู่ในแท็บดีโป และเผยแพร่การเปลี่ยนแปลงทั้งหมดในแท็บเผยแพร่
  • หากทุกอย่างดูเป็นปกติไม่มีปัญหา กรุณาตรวจสอบให้มั่นใจว่าบัญชีของคุณเป็นเจ้าของไอดีแอปดังกล่าว

"เกิดข้อผิดพลาดขณะติดตั้ง [AppName] (การกำหนดค่าเนื้อหาไม่ถูกต้อง)" ขณะเปิดใช้งาน

สาเหตุที่อาจเป็นไปได้:
  • ไม่มีบิลด์ที่ถูกตั้งค่าเปิดใช้งานจริงอยู่ในแบรนช์ที่คุณพยายามจะใช้ติดตั้ง
    วิธีการแก้ปัญหา: ตั้งค่าบิลด์ของคุณให้เป็นเปิดใช้งานจริงในแบรนช์โดยการไปที่ https://partner.steamgames.com/apps/builds/<YourGameAppId> แล้วเลือกแบรนช์ในไคลเอนต์ Steam (ตามที่ได้อธิบายไว้ ที่นี่)
  • ตัวเลือกการเปิดใช้งานเกมไม่ถูกต้อง
    วิธีการแก้ปัญหา: ตรวจสอบตัวเลือกการเปิดใช้งานเกมในแท็บการกำหนดค่าในส่วนผู้ดูแลแอปของเกมของคุณ https://partner.steamgames.com/apps/config/<YourGameAppId>
  • คุณไม่ได้เป็นเจ้าของไอดีดีโปสำหรับเกมดังกล่าว
    วิธีการแก้ปัญหา: ตรวจสอบให้มั่นใจว่าได้เพิ่มดีโปที่จำเป็นไปยังการสมัครสมัครเพื่อการพัฒนาแล้ว (กรุณาดู การแก้ไขแพ็กเกจ สำหรับรายละเอียดเพิ่มเติม)

"รหัสข้อผิดพลาด 15" ขณะเปิดใช้งาน

ข้อผิดพลาดนี้คือการที่เซิร์ฟเวอร์ CEG ปฏิเสธคำร้องขอไปยัง exe ของ CEG ตรวจสอบสถานะการวางจำหน่ายที่หน้าเกม หากสถานะไม่ได้มีค่าเป็น 'พร้อมเล่น' คุณจำเป็นจะต้องร้องขอรหัส Steam ที่สามารถแทนที่สถานะการวางจำหน่ายได้

"เซิร์ฟเวอร์ Steam ไม่พร้อมที่จะจัดการคำร้องขอของคุณ... รหัสข้อผิดพลาด (2)" ขณะเปิดใช้งาน

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

ฉันจำไม่ได้ว่าคำสั่ง steamcmd คืออะไรหรือทำงานอย่างไร

ใช้คำสั่ง 'find' ใน steamcmd เพื่อค้นหาคำสั่ง steamcmd ที่ต้องการ คำสั่งดังกล่าวจะทำการเทียบชื่อของคำสั่งบางส่วนและจะระบุไวยากรณ์คำสั่งออกมา
Steam>find build_installer ConVars: Commands: build_installer : <project file> <target folder> <beta key> <beta pwd>