เอกสาร Steamworks
แนวคิดโดยทั่วไป

Steam Input

&quotSteam Input" เป็นคำที่ครอบคลุมถึงกลุ่มซอฟต์แวร์ ฮาร์ดแวร์ และยูทิลิตี้การกําหนดค่าทั้งหมดที่ Steam ใช้เพื่อเป็นอินเตอร์เฟซกับเกม

เครื่องมือกำหนดค่า Steam Input

เครื่องมือกำหนดค่า Steam Input (SIC) นั้นสร้างไว้ในไคลเอนต์ Steam และทำหน้าที่เชื่อมประสานระหว่างผู้เล่นกับเกม/แอปพลิเคชันของตน SIC จะรับอินพุตจากอุปกรณ์อินพุตของคุณ แล้วแปลงข้อมูลนั้นให้อยู่ในรูปแบบที่เหมาะสม ทั้งนี้ขึ้นกับการตั้งค่าของผู้เล่น จากนั้นจึงส่งข้อมูลให้กับเกม

SIC สามารถใช้ได้ในสองทางหลัก: โหมดเลกาซี่และโหมดเนทิฟได้

โหมดเลกาซี่

โหมดเลกาซี่เป็นโหมดที่ออกแบบมาเพื่อรองรับเกมที่ยังไม่ได้ใช้งาน API ของ Steam Input ในกรณีนี้ SIC มีหน้าที่เป็นแค่ตัวแมปอินพุตที่มีคุณสมบัติมากมาย ซึ่งผู้เล่นทุกคนสามารถนำไปใช้ได้กับเกมทุกเกมบน Steam

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

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

โหมดเนทิฟ

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

API ของ Steam Input

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

คุณสามารถดูเอกสารฉบับเต็มได้ที่นี่: ISteamInput

การกำหนดค่าคอนโทรลเลอร์

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

ลำดับชั้นของอินพุต

อินพุตทางกายภาพ

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

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

แหล่งที่มาของอินพุต

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

เห็นไหม บอกแล้วว่าเราจะคุยเรื่องนามธรรมกัน!

เราจะยกตัวอย่างให้เข้าใจง่ายๆ: Dpad และปุ่มด้านหน้า 4 ปุ่มที่เรียงกันเป็นข้าวหลามตัดนั้นมีความแตกต่างกันอย่างไร?

input_dpad.pnginput_bpad.png

อินพุตทั้งสองชุดมี "ปุ่มกด" แบบดิจิทัลจำนวน 4 ปุ่มเหมือนกัน แต่ส่วนใหญ่ Dpad ได้รับการออกแบบทางกายภาพมาเพื่อป้องกันการกดปุ่ม ขึ้น+ลง หรือ ซ้าย+ขวา พร้อมกัน แต่สำหรับชุดปุ่มด้านหน้า คุณสามารถกดปุ่มใดก็ได้อย่างอิสระ อย่างไรก็ตาม Steam Input ช่วยให้คุณสามารถกำหนดข้อบังคับของดีแพดกับชุดปุ่มกดด้านหน้าได้

ดังนั้น แม้ว่ากลุ่มของ Dpad และปุ่มด้านหน้าจะประกอบด้วย "อินพุตทางกายภาพ" 4 ปุ่มแยกจากกัน แต่การพิจารณา "Dpad" และ "ปุ่มด้านหน้า" เป็นชุดอินพุตชุดหนึ่งจะให้ความสะดวกมากกว่า เพื่อที่เราจะได้เปลี่ยนพฤติกรรมของอินพุตดังกล่าวพร้อมกันทั้งชุด

รายการ "โหมดแหล่งที่มาของอินพุต" ทั้งหมดที่ใช้งานได้ ได้แก่:

  • แทร็กแพดซ้าย
  • แทร็กแพดขวา
  • แทร็กแพดกลาง
  • จอยสติกซ้าย
  • จอยสติกขวา
  • ปุ่ม ABXY
  • DPAD
  • ทริกเกอร์ซ้าย
  • ทริกเกอร์ขวา
  • ไจโร
  • สวิตช์
หมายเหตุ:แหล่งที่มาของอินพุต "สวิตช์" มีไว้สำหรับอินพุตทางกายภาพที่เหลือทั้งหมดที่ไม่ตรงกับกลุ่มอื่น เช่น ปุ่ม Back และปุ่ม Start ปุ่มที่สันด้านซ้ายและขวา และปุ่มตรงที่จับด้านหลัง

รับข้อมูลเพิ่มเติมได้ที่:

โหมดแหล่งที่มาของอินพุต

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

รายการ "โหมดแหล่งที่มาของอินพุต" ทั้งหมดที่ใช้งานได้ ได้แก่:

  • Dpad
  • ปุ่มกด 4 ปุ่ม
  • เมาส์แบบสัมบูรณ์
  • เมาส์แบบสัมพัทธ์
  • การเลื่อนจอยสติก
  • เมาส์จอยสติก
  • กล้องจอยสติก
  • ล้อเลื่อน
  • ทริกเกอร์
  • เมนูแบบสัมผัส
  • จอยสติกเมาส์
  • บริเวณการควบคุมเมาส์
  • เมนูแฉกรัศมี
  • สวิตช์

รับข้อมูลเพิ่มเติมได้ที่:

สรุปเนื้อหาโดยย่อ:

อินพุตทางกายภาพ:
ส่วนประกอบทางกายภาพบนอุปกรณ์ที่คุณใช้งานจริง ๆ เช่น: ปุ่ม A, อินพุต "ขึ้น" บน Dpad และอื่น ๆ

แหล่งที่มาของอินพุต:
กลุ่มอินพุตทางกายภาพที่ใหญ่ขึ้น ซึ่งสามารถรวมเป็นหน่วยโมดูลได้ Dpad ทั้งชุด, ปุ่มด้านหน้า 4 ปุ่ม, ชุดจอยสติกซ้ายทั้งชุด เป็นต้น

โหมดแหล่งที่มาของอินพุต:
พฤติกรรมเฉพาะที่คุณกำหนดให้กับแหล่งที่มาของอินพุต เช่น "กำหนดให้ปุ่มด้านหน้าทำหน้าที่เหมือน Dpad", "ทำให้จอยสติกซ้ายทำหน้าที่เหมือนปุ่มด้านหน้า 4 ปุ่ม" เป็นต้น

แอ็กชัน

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

แอ็กชันแบบดิจิทัล

แอ็กชันแบบดิจิทัลคือแอ็กชันที่ง่ายและนิยมใช้มากที่สุด สถานะของแอ็กชันมีเพียงเปิดกับปิดเท่านั้น ดังนั้นเกมจึงมีหน้าที่แค่โพลซ้ำไปเรื่อย ๆ และรอสถานะของแอ็กชันเหล่านี้

แอ็กชันแบบแอนะล็อก

แอ็กชันแบบแอนะล็อกจะมีแกนข้อมูลมากกว่า 1 แกน เพื่อการทำสิ่งต่าง ๆ เช่น การขยับตัวละครอย่างราบรื่น การเลี้ยวรถยนต์ หรือการควบคุมกล้อง เป็นต้น โดยทั่วไปแล้ว แอ็กชันที่เกิดจากจอยสติกและเมาส์มาตรฐานจะมี 2 แกน ได้แก่ X และ Y แต่ก็สามารถรับแอ็กชันแอนะล็อกแบบแกนเดียวได้เช่นกัน (เช่น แอ็กชันที่มักเชื่อมโยงกับทริกเกอร์แอนะล็อก) ในกรณีนี้ คุณจะยังได้รับรายงานข้อมูลแอ็กชัน 2 แกน แต่แกน Y จะมีค่าเป็นศูนย์เสมอ

ชื่อของแอ็กชัน

แอ็กชันทั้งหมดจำเป็นต้องมีชื่อไว้ระบุความหมาย เช่น "กระโดด" หรือ "ต่อย" ค่าสตริงเหล่านี้จะแยกจากข้อความที่ผู้เล่นเห็น (ข้อความเหล่านั้นเรียกว่า "ป้ายกำกับของแอ็กชัน" ซึ่งสามารถแปลเป็นภาษาอื่นได้)

ตัวจัดการการดำเนินการ

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

ต้นกำเนิดของแอ็กชัน

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

ชุดแอ็กชัน

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

เลเยอร์ชุดคำสั่ง

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

สำหรับข้อมูลเพิ่มเติม กรุณาอ่าน เลเยอร์ชุดคำสั่ง

ข้อเสนอแนะทางกายภาพ

นอกเหนือจากสิ่งที่เกิดขึ้นบนหน้าจอ อุปกรณ์อินพุตบางรุ่นอาจส่งข้อเสนอแนะให้กับผู้เล่นผ่านการสั่นและแสง

แฮปติก

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

รัมเบิล

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

LED

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