- 호출할 간단한 API를 만듭니다.
- 백그라운드에서 real time activity 서비스를 사용하여 최신 정보를 만듭니다.
- 개발자는 서비스에 추가 부담을 주지 않고 Achievements Manager API를 동기적으로 호출할 수 있습니다.
기능
Achievements Manager는 다음과 같은 기능을 제공합니다.- 단순화된 Achievements API
- 각 사용자에 대한 최신 업적 상태 및 진행 상황
- XBOX services에 대한 호출 수 감소
- 이는 데이터 획득의 전반적인 지연 시간 감소와 직접적인 관련이 있음
- 스레드 안전
- 효율적으로 데이터를 최신 상태로 유지
핵심 개념
업적: 업적에는 게이머스코어와 디지털 아트워크, 새 맵, 캐릭터, 스탯 부스트와 같은 기타 보상뿐만 아니라 완료를 향한 현재 진행 상황이 포함됩니다. 사용자의 업적 상태를 최신 상태로 유지하려면 매 프레임마다 XblAchievementsManagerDoWork 함수를 호출해야 합니다.Windows에서는 로컬 사용자가 하나만 있을 수 있습니다
API 개요
다음의 주요 API를 가장 자주 사용하게 됩니다. Achievements Manager API에 대한 완전한 설명은 XBOX Live API 참조에서 찾을 수 있습니다. API는 XblAchievementsManager 접두사 문서에서도 찾을 수 있습니다.Achievements Manager에 로컬 사용자 추가
- C API 함수: XblAchievementsManagerAddLocalUser
사용자에 대한 업적 상태 가져오기
- C API 함수: XblAchievementsManagerGetAchievements
사용법
Achievements Manager 이벤트 사용
Achievements Manager는 이벤트 형태로 발생한 일을 알려줍니다. 이러한 이벤트를 사용하여 UI를 업데이트하거나 다른 로직을 수행할 수 있습니다. C API반환되는 이벤트
Local User Initial State Synced: achievements manager가 사용자에 대한 현재 타이틀의 모든 업적 상태를 가져오는 것을 완료했을 때 트리거됩니다.- C API: XblAchievementsManagerEventType::LocalUserInitialStateSynced
- C API: XblAchievementsManagerEventType::AchievementProgressUpdated
- C API: XblAchievementsManagerEventType::AchievementUnlocked
추가 세부 정보
게임 루프 동안 서비스에서 업적 상태를 자주 가져오는 대신, Achievements Manager는 사용자가 Achievements Manager에 등록될 때 사용자의 모든 업적 상태를 가져옵니다. 그런 다음 Achievements Manager는 사용자의 업적 업데이트를 자세히 설명하는 이벤트를 서비스에서 수신하고, 이는 XblAchievementsManagerDoWork 함수에서 반환되는 events로 타이틀에 전달됩니다. events는 XblAchievementsManagerEvent의 목록이며, 각 XblAchievementsManagerEvent에는 마지막 프레임 동안 발생한 업적에 대한 변경 사항이 포함됩니다. 자세한 내용은 XblAchievementsManagerEvent API 문서에서 찾을 수 있습니다.업적을 추적할 사용자 등록
이 시나리오에서는 사용자를 achievements manager에 등록하여 해당 사용자의 업적 업데이트 추적을 시작하고 해당 사용자의 모든 업적 상태를 로컬에 캐시하려고 합니다. C API반환되는 이벤트
Local User Initial State Synced: achievements manager가 사용자에 대한 현재 타이틀의 모든 업적 상태를 가져오는 것을 완료했을 때 트리거됩니다.- C API: XblAchievementsManagerEventType::LocalUserInitialStateSynced
추가 세부 정보
위의 예시는 사용자에 대한 Achievements Manager를 초기화하고 최신 상태로 유지하는 방법을 보여줍니다. 게임 루프에서 XblAchievementsManagerDoWork 함수는 사용자의 업적에 대한 업데이트를 처리하고 적용합니다.사용자에 대한 단일 업적 검색
이 시나리오에서는 사용자에 대한 단일 업적의 상태를 얻으려고 합니다. C API- XblAchievement
- XblAchievementsManagerAddLocalUser
- XblAchievementsManagerIsUserInitialized
- XblAchievementsManagerGetAchievement
- XblAchievementsManagerResultGetAchievements
- XblAchievementsManagerResultCloseHandle
반환되는 이벤트
Local User Initial State Synced: achievements manager가 사용자에 대한 현재 타이틀의 모든 업적 상태를 가져오는 것을 완료했을 때 트리거됩니다.- C API: XblAchievementsManagerEventType::LocalUserInitialStateSynced
사용자에 대한 모든 업적 검색
이 시나리오에서는 사용자에 대한 모든 업적 상태를 얻으려고 합니다. C API- XblAchievement
- XblAchievementOrderBy
- XblAchievementsManagerSortOrder
- XblAchievementsManagerAddLocalUser
- XblAchievementsManagerIsUserInitialized
- XblAchievementsManagerGetAchievements
- XblAchievementsManagerResultGetAchievements
- XblAchievementsManagerResultCloseHandle
반환되는 이벤트
Local User Initial State Synced: achievements manager가 사용자에 대한 현재 타이틀의 모든 업적 상태를 가져오는 것을 완료했을 때 트리거됩니다.- C API: XblAchievementsManagerEventType::LocalUserInitialStateSynced
사용자에 대한 업적 하위 집합 검색
이 시나리오에서는 사용자에 대한 업적 하위 집합의 상태를 얻으려고 합니다. C API- XblAchievement
- XblAchievementOrderBy
- XblAchievementsManagerSortOrder
- XblAchievementsManagerAddLocalUser
- XblAchievementsManagerIsUserInitialized
- XblAchievementsManagerGetAchievements
- XblAchievementsManagerResultGetAchievements
- XblAchievementsManagerResultCloseHandle
반환되는 이벤트
Local User Initial State Synced: achievements manager가 사용자에 대한 현재 타이틀의 모든 업적 상태를 가져오는 것을 완료했을 때 트리거됩니다.- C API: XblAchievementsManagerEventType::LocalUserInitialStateSynced
사용자에 대한 특정 상태의 업적 하위 집합 검색
이 시나리오에서는 사용자에 대한 특정 진행 상태의 업적 하위 집합의 상태를 얻으려고 합니다. C API- XblAchievement
- XblAchievementOrderBy
- XblAchievementProgressState
- XblAchievementsManagerSortOrder
- XblAchievementsManagerAddLocalUser
- XblAchievementsManagerIsUserInitialized
- XblAchievementsManagerGetAchievementsByState
- XblAchievementsManagerResultGetAchievements
- XblAchievementsManagerResultCloseHandle
반환되는 이벤트
Local User Initial State Synced: achievements manager가 사용자에 대한 현재 타이틀의 모든 업적 상태를 가져오는 것을 완료했을 때 트리거됩니다.- C API: XblAchievementsManagerEventType::LocalUserInitialStateSynced
사용자에 대한 업적 업데이트
사용자에 대한 업적 진행 상황을 업데이트합니다. C API- XblAchievementsManagerAddLocalUser
- XblAchievementsManagerIsUserInitialized
- XblAchievementsManagerUpdateAchievement
반환되는 이벤트
Local User Initial State Synced: achievements manager가 사용자에 대한 현재 타이틀의 모든 업적 상태를 가져오는 것을 완료했을 때 트리거됩니다.- C API: XblAchievementsManagerEventType::LocalUserInitialStateSynced
