AGENT SKILL

game-message-storage

Use this skill when implementing or refactoring GameMessageStorage and SaveData JSON codec flow for message.stats in MobilePackage.

License 许可
MIT
所属仓库
devwinsoft/devian
最近更新
2026-04-12
Stars
★ 0
Forks
0

01 前言 Front Matter

name
game-message-storage
description
Use this skill when implementing or refactoring GameMessageStorage and SaveData JSON codec flow for message.stats in MobilePackage.

02 资源文件 1

03 SKILL.md 正文

14-game-message-storage

Status: ACTIVE AppliesTo: v10 Type: Design / SSOT

Purpose

GameMessageStorage의 저장 모델과 payload 규약 정본이다.


Implementation Location (3-path mirror)

  • UPM (정본): framework-cs/upm/com.devian.foundation/Samples~/MobilePackage/Runtime/GameMessage/GameMessageStorage.cs
  • UPM Codec: framework-cs/upm/com.devian.foundation/Samples~/MobilePackage/Runtime/SaveData/JsonCodec/SaveDataJsonCodecMessage.cs
  • Packages (sync): framework-cs/apps/UnityExample/Packages/com.devian.foundation/Samples~/MobilePackage/Runtime/GameMessage/GameMessageStorage.cs
  • Packages Codec (sync): framework-cs/apps/UnityExample/Packages/com.devian.foundation/Samples~/MobilePackage/Runtime/SaveData/JsonCodec/SaveDataJsonCodecMessage.cs
  • Assets/Samples (import): framework-cs/apps/UnityExample/Assets/Samples/Devian Samples/{version}/MobilePackage/Runtime/GameMessage/GameMessageStorage.cs
  • Assets Codec (import): framework-cs/apps/UnityExample/Assets/Samples/Devian Samples/{version}/MobilePackage/Runtime/SaveData/JsonCodec/SaveDataJsonCodecMessage.cs

Ownership

  • GameMessageManager가 GameMessageStorage를 소유한다.
  • stat 저장 접근 정본: GameMessageManager.Storage

Storage Model

GameMessageStorage 필드:

  • schemaVersion
  • stats: Dictionary<string, CBigInt>

규칙:

  • key는 반드시 message_id string
  • value는 MESSAGE.saveType 규약에 따라 누적된 값
  • Clear()는 schema 기본값 복원 + 컬렉션 초기화

SaveData Payload

루트 payload에서 message 섹션은 message 키를 사용한다.

{
  "version": 13,
  "message": {
    "schemaVersion": 1,
    "stats": { "<message_id>": { "base": 0, "pow": 0 } }
  }
}

핵심 규칙:

  • mission.stats는 더 이상 write하지 않는다.
  • mission/achieve runtime은 message_id 필드를 사용한다.

Migration Rules

  • v12 이하 payload load 시:
    • legacy mission.stats를 message.stats로 이동한다.
    • runtime의 legacy 필드 missionStatId는 message_id fallback으로 읽는다.
  • v13 write 시:
    • message.stats만 기록한다.

Related

04 同仓库更多 Skills