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
- 最近更新
- 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
- 参考文档agents/openai.yaml111 B
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 필드:
schemaVersionstats: Dictionary<string, CBigInt>
규칙:
- key는 반드시
message_idstring - 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_idfallback으로 읽는다.
- legacy
- v13 write 시:
message.stats만 기록한다.