ภาพรวม
ด้วยระบบเพื่อนบน Steam และไคลเอนต์แช็ตใหม่ที่มีการเผยแพร่ล่าสุด เราได้เพิ่มความสามารถของระบบการนำเสนอแบบ Rich Presence ของเรา เพื่อแสดงข้อมูลเพิ่มเติมเกี่ยวกับเกมที่กำลังมีการเล่นอยู่ เราเห็นว่าการนำเสนอแบบ Rich Presence ของผู้เล่นเป็นวิธีการในการเชิญชวนเพื่อนของผู้เล่นคนนั้นเข้าร่วมในกิจกรรมของตน ตัวอย่างเช่น เพื่อนที่เป็นเจ้าของเกมสามารถเข้าร่วมกิจกรรมได้หากทราบเวลาที่เหมาะสมในการเข้าร่วมเกม หรือหากได้พูดคุยกับผู้เล่นนั้น และผู้ที่ไม่ได้เป็นเจ้าของเกมอาจได้รับการกระตุ้นเร้าความสนใจจากข้อความการนำเสนอแบบ Rich Presence ต่าง ๆ ที่บอกเล่าเกี่ยวกับเกมที่พวกเขาไม่รู้จักมากได้
ในเอกสารประกอบการใช้งานนี้ เราจะครอบคลุมการตั้งค่าสองอย่างที่คุณสามารถกำหนด เพื่อควบคุมการปรากฏของเกมของคุณในรายชื่อเพื่อนของผู้เล่น:
- สตริงการนำเสนอแบบ Rich Presence - ใช้สำหรับแสดงข้อมูลเกี่ยวกับสถานะผู้เล่นในเกมของคุณที่เพื่อนของพวกเขาอาจจะต้องการทราบ
- การจัดกลุ่มเพื่อน - ใช้สำหรับจัดกลุ่มเพื่อนที่กำลังเล่นกันในเกมเข้าด้วยกัน
สตริงการนำเสนอแบบ Rich Presence ที่ควบคุมโดยเกม
ระบบที่มีอยู่สามารถปรับแต่งเพื่อให้ทีมของคุณสามารถประเมินหาได้ว่าข้อมูลใดเป็นข้อมูลที่เพื่อนของผู้เล่นมีความสนใจมากที่สุด
เกมของคุณจะมีข้อมูลแบบเฉพาะของตัวเองซึ่งจะเป็นข้อมูลที่เหมาะสมที่จะแสดงด้วยการนำเสนอแบบ Rich Presence ขั้นสูง ในการเริ่มดำเนินการ ต่อไปนี้คือแนวคิดบางประการที่ควรพิจาณา:
เกมแบบผู้เล่นหลายคน
ข้อมูลที่ช่วยให้เพื่อนของผู้เล่นทราบเวลาที่จะเข้าร่วมอาจแตกต่างกันไป ทั้งนี้ขึ้นอยู่เกมแบบผู้เล่นหลายคนแต่ละประเภท บางเกมจะเล่นเป็นรอบ ๆ ที่มีการกำหนดตามเวลา หรือตามผู้เล่นที่เหลืออยู่ ดั้งนั้นข้อมูลดังกล่าวจึงเป็นประโยชน์มากที่สุดที่ควรจะแสดง เกมแบบผู้เล่นหลายคนอื่น ๆ จะเสร็จสิ้นเมื่อภารกิจสำเร็จลุล่วง และการแสดงความคืบหน้าตามเป้าหมายดังกล่าวจะมีประโยชน์ การรู้ว่าโหมดเกมหรือแผนที่ใดที่ผู้เล่นของคุณกำลังใช้งานอยู่ยังสามารถเป็นประโยชน์ในการช่วยให้เพื่อนของผู้เล่นสามารถตัดสินใจเกี่ยวกับวิธีการเข้าร่วมกับผู้เล่นได้
เกมแบบผู้เล่นคนเดียว
แม้ว่าเพื่อนของผู้เล่นไม่ได้เข้าร่วมเกมแบบผู้เล่นคนเดียว แต่การเข้าร่วมของเพื่อนยังสามารถเกิดขึ้นได้ หากข้อมูลที่แสดงทำให้เพื่อนเข้าชมการเล่นของผู้เล่น พูดคุยเกี่ยวกับกลยุทธ์ และสนทนาเกี่ยวกับไฮไลต์ในการเล่น ข้อมูลที่แสดงโซน บท หรือระดับของผู้เล่น หรือสิ่งที่ผู้เล่นกำลังดำเนินการอยู่ในเกม สามารถช่วยให้บรรลุเป้าหมายเหล่านี้ได้
*
ในการกำหนดสตริงที่ต้องการให้แสดงในรายชื่อเพื่อน Steam และแช็ต ให้ตั้งค่าปุ่ม/ค่า
steam_display
ใน
SetRichPresence ข้อมูลและตัวอย่างเพิ่มเติมเกี่ยวกับการเรียก API อยู่ที่ตอนท้ายของเอกสารฉบับนี้
ตัวอย่างของข้อมูลที่ต้องการแสดงหากเกี่ยวข้อง- เวลาคงเหลือ
- เวลาที่ผ่านไป
- ผู้เล่นที่ยังมีชีวิตอยู่
- ชื่อแผนที่หรือโซน
- ระดับผู้เล่น
- คลาสผู้เล่น
- คะแนนเกม
- ความยาก
- ประเภทโหมดเกม
- ตำแหน่งที่เปิดบนเซิร์ฟเวอร์
- การดำเนินการที่กระทำ (การสร้างเด็ค การเปลี่ยนบัญชีรายชื่อบนเมนูหลัก ฯลฯ)
หมายเหตุ: โปรดทราบว่าสตริงการนำเสนอแบบ Rich Presence จำเป็นจะต้องพอดีในหนึ่งบรรทัด และแสดงใต้ชื่อผู้เล่นในรายชื่อเพื่อน หากยาวเกินไป ตอนท้ายของบรรทัดจะถูกตัดทอนหรือละไว้
การจัดกลุ่มเพื่อน
รายชื่อเพื่อนใหม่จะสามารถแสดงกลุ่มเพื่อนที่กำลังเล่นเกมด้วยกัน พร้อมกับบรรทัดข้อมูลเพิ่มเติมได้ เพื่อนที่อยู่ในปาร์ตี้ เซิร์ฟเวอร์ หรือแมทช์ด้วยกันจะถูกจัดกลุ่มภายใต้หมวดหมู่เกมพร้อมกับเส้นที่เชื่อมต่อพวกเขาด้วยกัน แนวทางในการจัดกลุ่มจะขึ้นอยู่กับเกมของคุณและสิ่งที่เหมาะสมที่สุดที่ควรแสดง ตัวอย่างเช่น ใน Dota 2 มีปาร์ตี้ละไม่เกิน 5 คน ดังนั้นเราจะแสดงปาร์ตี้ที่กำลังเล่นด้วยกันไม่ใช่สมาชิกทีมทั้ง 5 ที่มีการค้นหาแมตช์โดยเกม ในเกม Counter-Strike แม้ว่าเพื่อน 2 คนอาจจะกำลังเล่นบนเซิร์ฟเวอร์ด้วยกัน แต่แทนที่จะแสดงทั้งเซิร์ฟเวอร์เป็นส่วนหนึ่งของปาร์ตี้ เฉพาะเพื่อนร่วมที่กำลังเล่นกันเท่านั้นที่จะถูกจัดไว้ในกลุ่มผู้เล่น Steam เดียวกัน
*
ในการกำหนดการจัดกลุ่มผู้เล่นในรายชื่อเพื่อน Steam และแช็ต ให้ตั้งค่าปุ่ม/ค่า
steam_player_group
and
steam_player_group_size
ใน
SetRichPresenceSteam API & การแปลภาษา
ด้านล่างนี้คือตัวอย่างโค้ดที่แสดงให้เห็นว่าสามารถดำเนินการได้ง่าย
ส่วนย่อยโค้ด/*--------------------------- SAMPLE -------------------*/
const char *pchStatus;
if ( bWinning && cWinners > 1 )
{
pchStatus = "Tied";
}
else if ( bWinning )
{
pchStatus = "Winning";
}
else
{
pchStatus = "Losing";
}
SteamFriends()->SetRichPresence( "gamestatus", pchStatus );
bool bDisplayScoreInRichPresence = true;
if ( bDisplayScoreInRichPresence )
{
char rgchBuffer[32];
sprintf_safe( rgchBuffer, "%2u", uMyScore );
SteamFriends()->SetRichPresence( "score", rgchBuffer );
}
SteamFriends()->SetRichPresence( "steam_display", bDisplayScoreInRichPresence ? "#StatusWithScore" : "#StatusWithoutScore" );
// ตัวอย่างการรวมกลุ่มเพื่อนตอนเล่นด้วยกัน
if ( nPartyMemberCount > 1 && strPartyID )
{
// หากเราอยู่ในปาร์ตี้ที่มีผู้ใช้มากกว่าหนึ่งคน และเรามี PartyID ที่ถูกต้อง
// แจ้งระบบการนำเสนอแบบหรูหราของ Steam
steamapicontext->SteamFriends()->SetRichPresence( "steam_player_group", strPartyID );
steamapicontext->SteamFriends()->SetRichPresence( "steam_player_group_size", CNumStr( nPartyMemberCount ) );
}
else
{
// มิฉะนั้นให้ล้างข้อมูลใดก็ตามที่เรามีก่อนหน้าที่เราไม่อยู่ในปาร์ตี้
steamapicontext->SteamFriends()->SetRichPresence( "steam_player_group", nullptr );
steamapicontext->SteamFriends()->SetRichPresence( "steam_player_group_size", nullptr );
}
โค้ดข้างต้นนี้ใช้การแปลภาษาที่รวมโทเค็นภาษาอังกฤษอย่างเช่นดังต่อไปนี้:
"lang"
{
"Language" "english"
"Tokens"
{
"#StatusWithoutScore" "{#Status_%gamestatus%}"
"#StatusWithScore" "{#Status_%gamestatus%}: %SCORE%"
"#Status_AtMainMenu" "At the main menu"
"#Status_WaitingForMatch" "Waiting for match"
"#Status_Winning" "Winning"
"#Status_Losing" "Losing"
"#Status_Tied" "Tied"
}
}