구조화되지 않은 바이너리 blob - 이 데이터는 개발자가 선택한 모든 항목을 나타낼 수 있으며 게임은 그 항목을 파싱하고 작성합니다.
구조화된 메타데이터 - 바이너리 데이터와 관련된 추가 속성입니다. 이 속성을 통해 Google Play 게임즈 서비스는 저장된 게임 목록의 기본 사용자 인터페이스(UI)에서 저장된 게임을 시각적으로 표시하고, Google Play 게임즈 앱에 유용한 정보(예: 마지막으로 업데이트된 타임스탬프)를 표시할 수 있게 됩니다.
게임은 사용자 할당량에 따라 단일 플레이어의 저장된 게임 수를 임의로 작성할 수 있으므로 플레이어를 단일 저장 파일로 제한하기 위한 엄격한 요구사항은 없습니다.
커버 이미지
저장된 게임 서비스는 지속성 기능 외에 시각적 사용자 환경을 제공합니다. 따라서 대표 이미지를 관련 저장 파일과 연결하는 것이 좋습니다. 게임에 Play 게임즈 SDK에서 제공되는 저장된 게임 목록의 기본 사용자 인터페이스(UI)를 사용하는 경우 UI에 커버 이미지가 표시됩니다. 커버 이미지는 Google Play 게임즈 앱에도 표시될 수 있습니다.
설명
저장된 특정 게임의 콘텐츠에 관해 간단하게 텍스트로 설명할 수 있습니다. 이 설명은 플레이어에게 직접 표시되며 저장된 게임이 나타내는 상태를 요약하는 내용이어야 합니다(예: '어둠의 숲에서 마귀와의 싸움').
할당량
개발자에게는 클라우드에 저장된 게임 데이터의 요금이 청구되지 않습니다.
대신 그러한 데이터는 플레이어의 Google Drive 저장용량에 포함되므로 걱정할 필요가 없습니다. 게임 개발자가 신경 써야 할 유일한 할당량은 Google Drive API 할당량입니다.
읽기 쓰기 보호
저장된 모든 게임은 플레이어의 Google Drive 애플리케이션 데이터 폴더에 저장됩니다. 데이터 손상을 방지하기 위한 추가 보호를 위해 이 폴더는 개발자 자신의 게임에서만 읽고 쓸 수 있습니다. 즉, 다른 개발자의 게임에서 보거나 수정할 수 없습니다. 또한 저장된 게임은 플레이어가 직접 조작하지 못하도록 보호되므로, 플레이어는 각 저장된 게임을 수정할 수 없습니다.
오프라인 작동
플레이어의 기기가 오프라인 상태이더라도 게임은 저장된 게임에 대한 읽기 및 쓰기 작업을 할 수 있습니다. 하지만 네트워크 연결이 설정될 때까지 Google Play 게임즈 서비스와는 동기화될 수 없습니다. 다시 연결되면 Google Play 게임즈 서비스가 Google 서버에 저장된 게임 데이터를 비동기식으로 업데이트합니다.
충돌 해결
저장된 게임 서비스를 사용할 때 데이터를 저장하려고 하면 게임에서 충돌이 발생할 수 있습니다. 이러한 충돌은 사용자가 여러 기기 또는 컴퓨터에서 애플리케이션의 인스턴스를 두 개 이상 실행하는 경우에 발생할 수 있습니다. 애플리케이션은 최상의 사용자 환경을 제공하는 방식으로 이러한 충돌을 해결할 수 있어야 합니다.
대개 데이터 로드나 저장을 시도할 때 애플리케이션의 인스턴스가 저장된 게임 서비스에 도달하지 못하는 경우 데이터 충돌이 발생합니다. 일반적으로 데이터 충돌을 피하는 가장 좋은 방법은 애플리케이션이 시작되거나 다시 시작될 때 항상 서비스에서 최신 데이터를 로드하고 합리적인 빈도로 서비스에 데이터를 저장하는 것입니다. 하지만 데이터 충돌을 항상 방지할 수 있는 것은 아닙니다. 사용자의 데이터를 보존하고 사용자에게 좋은 환경을 제공하기 위해 애플리케이션은 충돌을 처리하기 위해 최선을 다해야 합니다.
제한
Google Play 게임즈 서비스는 바이너리 데이터와 커버 이미지 크기에 각각 3MB와 800KB의 크기 제한을 적용합니다.
저장된 게임 메타데이터
저장된 게임의 구조화된 메타데이터에는 다음과 같은 속성이 포함됩니다.
속성
설명
ID
Google Play 게임즈 서비스에서 저장된 게임과 관련해 생성한 고유 문자열입니다. 게임 클라이언트에 저장된 게임을 참조하려면 이 ID를 사용합니다.
이름
저장된 게임과 관련해 개발자가 제공한 짧은 이름(예: '저장 슬롯 1' 또는 'PlayerName_Save1')입니다. 이는 플레이어에게 표시되지 않습니다.
설명
저장된 게임과 관련해 개발자가 제공한 설명입니다.
최종 수정 날짜
저장된 게임이 마지막으로 업데이트될 때 Google Play 게임즈 서비스에서 생성한 밀리초 단위의 타임스탬프입니다.
플레이 시간
저장된 게임에 표시할 개발자 제공 시간(밀리초)입니다. 이 값은 플레이어가 저장된 게임을 플레이한 시간을 나타내야 합니다.
예를 들어 Google Play 게임즈 서비스에서 3600000의 플레이 시간 값은 '1시간'으로 표시됩니다.
이 페이지에 나와 있는 콘텐츠와 코드 샘플에는 콘텐츠 라이선스에서 설명하는 라이선스가 적용됩니다. 자바 및 OpenJDK는 Oracle 및 Oracle 계열사의 상표 또는 등록 상표입니다.
최종 업데이트: 2025-09-01(UTC)
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["필요한 정보가 없음","missingTheInformationINeed","thumb-down"],["너무 복잡함/단계 수가 너무 많음","tooComplicatedTooManySteps","thumb-down"],["오래됨","outOfDate","thumb-down"],["번역 문제","translationIssue","thumb-down"],["샘플/코드 문제","samplesCodeIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-09-01(UTC)"],[],[],null,["Players play on multiple devices and install a game on same device multiple\ntimes. As a result, they always need to start their game from their last\nprogress state. To achieve this, you must implement a cloud save solution in\nyour game.\n\nTo meet the Game Developer Program [user experience guidelines](/games/guidelines), your game\nneeds to have implemented a cloud save solution which has two parts:\n\n1. **Cloud Save**\n\n Save your player's game state to the cloud. Retrieve it when they start the\n game. Play Games Services [Saved Games](#saved-games) provides a service for\n this, but you can use any cloud save solution of your choice.\n | **Note:** If your game supports guest mode, player progress is not saved or restored. This limitation occurs because guest mode is tied to a single device.\n2. **Conflict resolution for multiple game states**\n\n If a user has multiple accounts or if there's a conflict between saved game\n data on their device and in the cloud, you need a conflict\n resolution policy. Usually, the user decides how to resolve these\n conflicts.\n Your conflict resolution policy should address the following key\n scenarios:\n - **Multiple accounts per user:** Handle instances where a single user interacts with the application using different accounts.\n - **State conflicts:** Resolve discrepancies that arise between the local game state and the cloud-saved game state.\n\nSaved games\n\nThe Saved Games service gives you a convenient way to save\nyour players' game progression to Google's servers. Your game can retrieve the\nsaved game data to allow returning players to continue a game at their last\nsave point from any device. \n\nThis service offers several key advantages for both players and developers:\n\n- **Synchronize game data across multiple devices.** For example, a player can start a game on an Android phone and seamlessly continue playing on a tablet without losing progress.\n- **Ensure data persistence.** Players can resume their game even if their device is lost, destroyed, or traded in for a newer model.\n\n| **Note:** Before using the Saved Games service, you must first [enable it in Google Play Console](/games/pgs/console/enable-features#enabling-saved-games).\n\nTo learn how to implement saved games for your platform, see\n[Client implementations](#client-implementations).\n\nSaved Games basics\n\nA saved game consists of two parts:\n\n- An unstructured binary blob - this data can represent whatever you choose, and your game is responsible for parsing and writing to it.\n- Structured metadata - additional [properties](#saved-game-metadata) associated with the binary data that allow Google Play Games Services to visually present Saved Games in the default Saved Games list user interface (UI), and to present useful information in the [Google Play Games app](//play.google.com/store/apps/details?id=com.google.android.play.games) (for example, last updated timestamp).\n\nA game can write an arbitrary number of Saved Games for a single player,\nsubject to [user quota](#quota), so there is no hard requirement to restrict\nplayers to a single save file.\n\nCover images\n\nThe Saved Games service provides a visual user experience in addition to\npersistence features. You are strongly encouraged to associate representative\nimages with corresponding save files. If you are using the default Saved Games\nlist user interface (UI) provided by the Play Games SDK in your game,\nthe UI will display these cover images. The cover images may also appear in the\n[Google Play Games app](//play.google.com/store/apps/details?id=com.google.android.play.games).\n\nDescriptions\n\nYou can provide a short text description of the content of a particular saved\ngame. This description is directly displayed to players and should summarize\nthe state that the saved game represents; for example, \"Fighting the Goblins\nin the Dark Woods\".\n\nQuota\n\nDevelopers are not charged for any saved game data that's stored in the cloud.\nInstead, this data is counted against the player's Google Drive quota - you\nnever have to worry about it. The only quota that game developers need to care\nabout is their Google Drive API quota.\n\nRead Write isolation\n\nAll Saved Games are stored in your players' Google Drive Application Data\nFolder. This folder can only be read and written by your game - it cannot be\nviewed or modified by other developers' games, so there is additional protection\nagainst data corruption. In addition, Saved Games are insulated from direct\ntampering by players so they cannot modify individual Saved Games.\n\nOffline support\n\nYour game can still read and write to a saved game when the player's device is\noffline, but won't be able to sync with Google Play Games Services until\nnetwork connectivity is established. Once reconnected, Google Play Games Services\nasynchronously updates the saved game data on Google's servers.\n\nConflict resolution\n\nWhen using the Saved Games service, your game may encounter conflicts when\nattempting to save data. These conflicts can occur when a user is running more\nthan one instance of your application on different devices or computers. Your\napplication must be able to resolve these conflicts in a way that provides the\nbest user experience.\n\nTypically, data conflicts occur when an instance of your application is unable\nto reach the Saved Games service while attempting to load data or save it. In\ngeneral, the best way to avoid data conflicts is to always load the latest data\nfrom the service when your application starts up or resumes, and save data to\nthe service with reasonable frequency. However, it is not always possible to\navoid data conflicts. Your application should make every effort to handle\nconflicts such that your users' data is preserved and that they have a good\nexperience.\n\nLimits\n\nGoogle Play Games Services enforces size limits on binary data and cover\nimage sizes of 3 MB and 800 KB respectively.\n\nSaved game metadata\n\nThe structured metadata for a saved game contains these these properties:\n\n| Property | Description |\n|-------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| **ID** | A unique string generated by Google Play Games Services for this saved game. Use this ID to refer to the saved game in your game clients. |\n| **Name** | A developer-supplied short name for the saved game, for example \"Save slot 1\" or \"PlayerName_Save1\". This is not shown to players. |\n| **Description** | A developer-supplied description of the saved game. |\n| **Last modified** | Timestamp in milliseconds generated by Google Play Games Services for when the saved game was last updated. |\n| **Played time** | A developer-supplied time (in milliseconds) to display on the saved game. This value should represent how long the player has played the corresponding save game. For example, a played time value of 3600000 will be displayed by Google Play Games Services as \"1 hr\". |\n| **Cover image** | This is an optional, developer-supplied property that contains information about the [cover image](/games/pgs/savedgames#cover-images). |\n\nClient implementations\n\nTo learn how to implement saved game for your platform, see the following\nresources:\n\n- [Android](/games/pgs/android/saved-games)\n- [Checklist for implementing Cloud save](/games/pgs/quality#saved-games)"]]