Steamworks 문서
Steam Economy 컨텍스트 ID
Steam Economy의 각 에셋은 앱 ID, 컨텍스트 ID, 에셋 Id의 세 가지 고유한 숫자로 식별됩니다. 해당 에셋에 64비트 컨텍스트 ID가 가지는 의미를 결정하는 것은 각 게임의 몫입니다. 게임 스타일에 따라 몇 가지 형태 중 하나를 가지게 될 것입니다. 어떤 경우든, Steam은 각 컨텍스트 ID의 실제 의미와는 무관합니다. 유일한 필요 조건은 동일한 논리적 컨텍스트(서버, 캐릭터, 컨테이너 및 기타)에서 동일한 ID를 유지하어 감사기록이 정확성을 유지하고 GetAssetDetails가 지속적으로 작동하도록 하는 것입니다.

각 컨텍스트 ID 상단의 2비트는 Steam이 사용하는 예비 공간입니다. 상단 2비트에서 에셋 서버가 반환한 컨텍스트 ID는 0이어야 합니다.

에셋 서버가 정의한 모든 컨텍스트는 또한 0이 아닌 컨텍스트 ID를 보유해야 합니다. 컨텍스트 ID를 반환하는 API는 0의 값을 지정할 수 없습니다.

게임 전체 보관함

일부 게임은 사용자당 한 개의 보관함만을 보유하며 사용자의 계정과 구분되는 고정 캐릭터에 대한 개념이 없습니다. 이러한 게임은 계정이 보유한 모든 아이템을 대표하는, 계정 당 하나의 컨텍스트만 보유할 수도 있습니다. 또한 지원 도구에서 내부 데이터 중 일부만 노출하기 위해, 다른 종류의 에셋이 포함된 컨텍스트나 사용자가 볼 수 없는 컨텍스트를 선언할 수도 있습니다.

economy_simple_contexts.png

캐릭터 당 보관함

일부 게임은 각 계정에 여러 캐릭터를 보유하고 각 캐릭터에 여러 보관함을 지정할 수 있습니다. 이러한 게임에서 사용할 수 있는 컨텍스트 아이템 체계 중 하나는 컨텍스트 Id를 32비트(2개 예비) 캐릭터 ID 및 캐릭터 내부의 32비트 컨테이너로 분해하는 것입니다. 게임 안에 고유한 32비트 캐릭터 ID를 보유하고 있다면 이를 컨텍스트 ID에 그대로 사용할 수 있습니다.

economy_simple_contexts.png

조각 문자열

어떤 게임의 서버별 캐릭터를 통해 캐릭터 당 다수의 보관함을 지원합니다. 이 패턴은 MMO에서 일반적입니다. 이러한 종류의 환경에서 컨텍스트 ID를 분할하는 방법은 서버 ID에 하이 16비트(2개 예비), 캐릭터 ID에 32비트, 컨테이너 ID에 16비트를 사용하는 것입니다. (간결함을 유지하기 위해 도식에서 0이 제거되었습니다.)

economy_shard_contexts.png