Steamworks 문서
향상된 고급 상태 표시

개요

최근 출시된 새로운 Steam 친구와 채팅 클라이언트를 통해, 현재 플레이하고 있는 게임에 대한 더 많은 정보를 보여줄 수 있도록 고급 상태 시스템의 기능이 향상되었습니다. 저희는 풍부한 정보를 포함하는 플레이어 상태 표시가 플레이어의 친구들의 활동 참여를 돕는 하나의 방법이라고 봅니다. 예를 들어, 특정 게임을 소유하는 친구들의 경우에는, 게임에 함께 참가할 적절한 시간에 대해 서로 알고 있거나 이야기함으로써 더욱 관심을 가지고 참여할 수 있습니다. 한편, 게임을 소유하지 않는 사람들은 고급 상태 표시를 통해 잘 몰랐던 게임에 대한 더 많은 정보를 얻고 관심을 가질 수 있습니다.

여러 상황에서 노출되는 고급 상태 표시

이 문서에는 플레이어의 친구 목록에 게임이 표시되는 방식을 제어할 수 있는 두 가지 설정 방법이 기술되어 있습니다.
  • 고급 상태 표시 문자열 – 친구가 궁금해하는 플레이어의 게임 내 상태에 대한 정보 표시
  • 친구 그룹화 – 게임 내에서 함께 플레이하는 친구들을 그룹으로 짜기

게임에서 제어하는 고급 상태 표시 문자열


친구들은 게임에 대한 간단한 정보를 볼 수 있습니다
적용된 시스템은 맞춤 설정이 가능하므로, 플레이어의 친구들이 가장 흥미를 가질 만한 정보가 무엇인지 직접 결정할 수 있습니다.
게임의 자체 데이터 중에서 고급 상태 표시에 표시하기에 적절한 정보가 있을 것입니다. 시작하기 전에 고려해야 할 사항이 몇 가지 있습니다.

멀티플레이어 게임

플레이어의 친구들에게 게임 참여 시점을 알려주는 데 도움이 되는 정보는 멀티플레이어 게임 종류에 따라 서로 다를 수 있습니다. 어떤 게임은 시간 또는 남아 있는 플레이어를 기준으로 하는 라운드 방식으로 운영되므로, 해당 정보를 표시하는 것이 가장 유용합니다. 목표 달성 시 종료되는 게임은, 목표 달성까지의 진행률을 표시하는 것이 유용할 수 있습니다. 플레이 중인 게임 모드 및 맵의 종류를 알려주는 것 또한, 친구들이 게임에 참가할지 안 할지 결정하는 데 도움을 줄 수 있습니다.

싱글플레이어 게임

싱글플레이어 게임은 친구들이 참여는 할 수 없지만 표시되는 정보는 플레이를 관전하거나, 게임에 대한 전략 또는 플레이의 하이라이트에 대해 이야기를 나누는 방식으로 게임에 대한 관심을 높일 수 있습니다. 플레이어가 속해 있는 영역, 챕터, 레벨 또는 플레이어가 현재 게임에서 수행하고 있는 활동을 보여 주는 정보는 이러한 목표를 달성하는 데 도움이 될 수 있습니다.

* Steam 친구 목록이나 채팅에 표시할 문자열을 정의하려면 SetRichPresence에서 steam_display 키 또는 값을 설정하세요. API 호출에 대한 더 많은 정보나 예시는 이 문서의 마지막 부분에 있습니다.

표시할 데이터의 예(해당하는 경우)
  • 남은 시간
  • 경과한 시간
  • 플레이어 생존 현황
  • 맵 또는 지역 이름
  • 플레이어 레벨
  • 플레이어 클래스
  • 게임 점수
  • 난이도
  • 게임 모드 유형
  • 서버의 빈 자리
  • 수행 중인 작업(덱 구성, 명단 수정, 주 메뉴 등)
참고: 고급 상태 표시 문자열은 한 줄에 들어가야 하며 친구 목록의 플레이어 이름 아래에 표시됩니다. 길이가 너무 길면 끝부분이 잘리거나 줄임표(...)로 표시됩니다.

친구 그룹화


새로운 친구 목록은 추가 정보를 담은 문자열을 통해, 게임을 함께 플레이하고 있는 친구들을 그룹으로 보여줍니다. 파티나 서버에 함께 속해 있는 친구들이나 같이 매치를 하고 있는 친구들은 게임 카테고리 아래에 하나로 연결되어 그룹으로 표시됩니다. 그룹화 방식은 게임이나 어떤 정보가 가장 표시할 의미가 있는지에 따라 달라집니다. 예를 들어, 도타 2의 경우 최대 5명으로 이루어진 파티가 게임을 진행하는데, 저희는 게임에서 매치된 5명 전체를 표시하는 대신, 함께 플레이하는 파티를 표시합니다. 카운터 스트라이크에서는 2명의 친구가 같은 서버에서 플레이하고 있을 수 있지만, 서버 전체를 파티로 표시하는 대신 함께 플레이하고 있는 공통의 친구만 같은 Steam 플레이어 그룹으로 표시합니다.

함께 플레이하고 있는 친구들은 그룹화되고, 다른 사용자들은 참가할 수 있는 자리가 있는지 여부를 알 수 있습니다

* Steam 친구 목록과 채팅을 재정의하려면, SetRichPresence에서 steam_player_groupsteam_player_group_size의 키 또는 값을 설정하세요.

Steam 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" } }