{"id":"905cffce-2b42-4502-8bb0-b15c5d8b639a","shortId":"HrNdah","kind":"skill","title":"ue5-save-load-replication","tagline":"UE5.6/UE5.7 save/load and multiplayer replication workflow for gameplay systems. Use when requests involve SaveGame schema design, serialization, restore pipelines, RepNotify handling, RPC entry points, and server-authoritative validation.","description":"# Quick Start\n- Define what must persist and what must replicate.\n- Separate local save state from network runtime state.\n- Output data schema, save flow, load flow, and net flow.\n\n# UE5.7 API Anchors\n- Save pipeline anchors:\n  - `USaveGame`\n  - `UGameplayStatics::CreateSaveGameObject(...)`\n  - `UGameplayStatics::SaveGameToSlot(...)`, `LoadGameFromSlot(...)`\n  - `UGameplayStatics::AsyncSaveGameToSlot(...)`, `AsyncLoadGameFromSlot(...)`\n- Replication anchors:\n  - `GetLifetimeReplicatedProps(...)`\n  - `DOREPLIFETIME(...)`\n  - `ReplicatedUsing=OnRep_*`\n  - `UFUNCTION(Server/Client/NetMulticast, ...)`\n- Authority anchors:\n  - server-authoritative mutation path\n  - client requests routed through validated server RPC entry points\n\n# State Contract\n- Every state field must be classified as one of:\n  - Persistent-only (SaveGame, not replicated)\n  - Replicated-only (runtime sync, not persisted)\n  - Persistent + replicated (authoritative state with save restore)\n- Every persisted schema must include:\n  - explicit version integer\n  - stable identifiers/keys (avoid index-based implicit ordering)\n  - migration behavior for older versions\n- Every replicated field must define:\n  - replication condition or scope\n  - `OnRep_*` behavior on clients\n  - server write ownership\n\n# Workflow\n## 1) Partition State\n- Identify gameplay state by ownership: local player, world/shared, match/session.\n- Split ephemeral runtime values from persistent values.\n- Mark authoritative write path for each field.\n\n## 2) Save Schema\n- Define save structs/objects with explicit schema version.\n- Use stable keys/IDs for actors, components, and inventory-like entries.\n- Include optional migration metadata for backward compatibility.\n\n## 3) Save Pipeline\n- Gather runtime state into save schema in deterministic order.\n- Write through sync or async slot APIs based on latency sensitivity.\n- Return structured save result (success, failure reason, version used).\n\n## 4) Load and Restore Pipeline\n- Load save object, validate version, run migration if needed.\n- Apply restore in dependency-safe order (owners before dependents).\n- Resolve missing assets/entities with explicit fallback policy.\n\n## 5) Replication Pipeline\n- Replicate only client-visible runtime state.\n- Register replicated properties with `DOREPLIFETIME(...)`.\n- Use `OnRep_*` for client-side reconstruction/UI refresh, not authority writes.\n\n## 6) RPC Authority Pipeline\n- Use client->server RPC for requested actions.\n- Validate payloads on server before mutating replicated state.\n- Broadcast resulting state via replication/NetMulticast only when needed.\n\n# Constraints\n- Server is source of truth for replicated gameplay state.\n- Validate all client-requested actions before applying state changes.\n- Keep SaveGame schema versionable; avoid fragile implicit ordering.\n- Do not assume single-player behavior in multiplayer code paths.\n- Keep restore process idempotent where possible (safe to retry after partial failure).\n- Avoid persisting transient network-only caches.\n\n# Failure Handling\n- Symptom: load succeeds but gameplay state is inconsistent.\n  - Locate: restore ordering and missing dependency handling.\n  - Fix: apply owners/components/dependents in staged restore order with fallback defaults.\n- Symptom: old save files break after update.\n  - Locate: schema version checks and migration path.\n  - Fix: add explicit migration per version or gate unsupported versions cleanly.\n- Symptom: replicated value differs from saved value after reconnect.\n  - Locate: authority write path and restore timing vs replication timing.\n  - Fix: restore on authority first, then let replication propagate to clients.\n- Symptom: `OnRep_*` spam causes frame spikes.\n  - Locate: frequent property churn and large payload replication.\n  - Fix: batch updates, replicate coarse state, derive fine state client-side.\n- Symptom: client can trigger unauthorized state changes.\n  - Locate: RPC validation and authority checks.\n  - Fix: enforce server validation and reject invalid client payloads.\n- Symptom: async save/load callbacks race with gameplay transitions.\n  - Locate: callback lifecycle and stale object references.\n  - Fix: guard callbacks with state tokens and world validity checks.\n- Symptom: partial restore leaves orphaned actors/components.\n  - Locate: failure rollback path.\n  - Fix: stage restore transactions and cleanup created artifacts on failure.\n\n# Replication Ops\n- Use `ReplicatedUsing` when client-side side effects are required.\n- Use RPC only for intent transfer, not as persistent state storage.\n- Use replication for authoritative state fan-out; use SaveGame for disk persistence.\n- Never trust client-local save data as authoritative multiplayer input.\n\n# UE5.6 / UE5.7 Compatibility Notes\n- SaveGame and replication APIs listed above are stable across UE5.6 and UE5.7.\n- Prefer stable Engine runtime APIs over project-specific serialization shortcuts.\n\n# Escalation\n- Escalate when changes break existing save compatibility policy.\n- Escalate when replication design impacts anti-cheat or authoritative architecture decisions.","tags":["ue5","save","load","replication","unrealengine5","skills","teixasalone","aec","agent-skills","animations","blender","camera"],"capabilities":["skill","source-teixasalone","skill-ue5-save-load-replication","topic-aec","topic-agent-skills","topic-animations","topic-blender","topic-camera","topic-collisions","topic-computer-vision","topic-dotnet","topic-embodied-ai","topic-game-framework","topic-gaussian-splatting","topic-graphics"],"categories":["UnrealEngine5-Skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/teixasalone/UnrealEngine5-Skills/ue5-save-load-replication","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add teixasalone/UnrealEngine5-Skills","source_repo":"https://github.com/teixasalone/UnrealEngine5-Skills","install_from":"skills.sh"}},"qualityScore":"0.456","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 12 github stars · SKILL.md body (5,103 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:07:26.096Z","embedding":null,"createdAt":"2026-05-10T01:06:37.757Z","updatedAt":"2026-05-18T19:07:26.096Z","lastSeenAt":"2026-05-18T19:07:26.096Z","tsv":"'1':171 '2':197 '3':225 '4':257 '5':288 '6':314 'across':633 'action':324,356 'actor':211 'actors/components':559 'add':441 'anchor':65,68,79,87 'anti':663 'anti-cheat':662 'api':64,243,628,641 'appli':271,358,417 'architectur':667 'artifact':571 'assets/entities':283 'assum':371 'async':241,530 'asyncloadgamefromslot':77 'asyncsavegametoslot':76 'author':86,312,316,461,473,518 'authorit':33,90,128,191,600,618,666 'avoid':143,365,392 'backward':223 'base':146,244 'batch':496 'behavior':150,164,375 'break':430,652 'broadcast':333 'cach':398 'callback':532,538,546 'caus':484 'chang':360,513,651 'cheat':664 'check':436,519,553 'churn':490 'classifi':109 'clean':450 'cleanup':569 'client':93,166,294,307,319,354,480,505,508,527,580,613 'client-loc':612 'client-request':353 'client-sid':306,504,579 'client-vis':293 'coars':499 'code':378 'compat':224,623,655 'compon':212 'condit':160 'constraint':341 'contract':103 'creat':570 'createsavegameobject':71 'data':54,616 'decis':668 'default':425 'defin':37,158,200 'depend':275,280,414 'dependency-saf':274 'deriv':501 'design':21,660 'determinist':235 'differ':454 'disk':608 'doreplifetim':81,302 'effect':583 'enforc':521 'engin':639 'entri':28,100,217 'ephemer':184 'escal':648,649,657 'everi':104,133,154 'exist':653 'explicit':138,204,285,442 'failur':253,391,399,561,573 'fallback':286,424 'fan':603 'fan-out':602 'field':106,156,196 'file':429 'fine':502 'first':474 'fix':416,440,470,495,520,544,564 'flow':57,59,62 'fragil':366 'frame':485 'frequent':488 'gameplay':13,175,349,405,535 'gate':447 'gather':228 'getlifetimereplicatedprop':80 'guard':545 'handl':26,400,415 'idempot':383 'identifi':174 'identifiers/keys':142 'impact':661 'implicit':147,367 'includ':137,218 'inconsist':408 'index':145 'index-bas':144 'input':620 'integ':140 'intent':590 'invalid':526 'inventori':215 'inventory-lik':214 'involv':18 'keep':361,380 'keys/ids':209 'larg':492 'latenc':246 'leav':557 'let':476 'lifecycl':539 'like':216 'list':629 'load':4,58,258,262,402 'loadgamefromslot':74 'local':46,179,614 'locat':409,433,460,487,514,537,560 'mark':190 'match/session':182 'metadata':221 'migrat':149,220,268,438,443 'miss':282,413 'multiplay':9,377,619 'must':39,43,107,136,157 'mutat':91,330 'need':270,340 'net':61 'network':50,396 'network-on':395 'never':610 'note':624 'object':264,542 'old':427 'older':152 'one':111 'onrep':83,163,304,482 'op':575 'option':219 'order':148,236,277,368,411,422 'orphan':558 'output':53 'owner':278 'owners/components/dependents':418 'ownership':169,178 'partial':390,555 'partit':172 'path':92,193,379,439,463,563 'payload':326,493,528 'per':444 'persist':40,114,125,126,134,188,393,594,609 'persistent-on':113 'pipelin':24,67,227,261,290,317 'player':180,374 'point':29,101 'polici':287,656 'possibl':385 'prefer':637 'process':382 'project':644 'project-specif':643 'propag':478 'properti':300,489 'quick':35 'race':533 'reason':254 'reconnect':459 'reconstruction/ui':309 'refer':543 'refresh':310 'regist':298 'reject':525 'replic':5,10,44,78,118,120,127,155,159,289,291,299,331,348,452,468,477,494,498,574,598,627,659 'replicated-on':119 'replicatedus':82,577 'replication/netmulticast':337 'repnotifi':25 'request':17,94,323,355 'requir':585 'resolv':281 'restor':23,132,260,272,381,410,421,465,471,556,566 'result':251,334 'retri':388 'return':248 'rollback':562 'rout':95 'rpc':27,99,315,321,515,587 'run':267 'runtim':51,122,185,229,296,640 'safe':276,386 'save':3,47,56,66,131,198,201,226,232,250,263,428,456,615,654 'save/load':7,531 'savegam':19,116,362,606,625 'savegametoslot':73 'schema':20,55,135,199,205,233,363,434 'scope':162 'sensit':247 'separ':45 'serial':22,646 'server':32,89,98,167,320,328,342,522 'server-authorit':31,88 'server/client/netmulticast':85 'shortcut':647 'side':308,506,581,582 'singl':373 'single-play':372 'skill' 'skill-ue5-save-load-replication' 'slot':242 'sourc':344 'source-teixasalone' 'spam':483 'specif':645 'spike':486 'split':183 'stabl':141,208,632,638 'stage':420,565 'stale':541 'start':36 'state':48,52,102,105,129,173,176,230,297,332,335,350,359,406,500,503,512,548,595,601 'storag':596 'structs/objects':202 'structur':249 'succeed':403 'success':252 'symptom':401,426,451,481,507,529,554 'sync':123,239 'system':14 'time':466,469 'token':549 'topic-aec' 'topic-agent-skills' 'topic-animations' 'topic-blender' 'topic-camera' 'topic-collisions' 'topic-computer-vision' 'topic-dotnet' 'topic-embodied-ai' 'topic-game-framework' 'topic-gaussian-splatting' 'topic-graphics' 'transact':567 'transfer':591 'transient':394 'transit':536 'trigger':510 'trust':611 'truth':346 'ue5':2 'ue5-save-load-replication':1 'ue5.6':621,634 'ue5.6/ue5.7':6 'ue5.7':63,622,636 'ufunct':84 'ugameplaystat':70,72,75 'unauthor':511 'unsupport':448 'updat':432,497 'usavegam':69 'use':15,207,256,303,318,576,586,597,605 'valid':34,97,265,325,351,516,523,552 'valu':186,189,453,457 'version':139,153,206,255,266,364,435,445,449 'via':336 'visibl':295 'vs':467 'workflow':11,170 'world':551 'world/shared':181 'write':168,192,237,313,462","prices":[{"id":"0b271e87-c3ad-4982-9c4e-f753d3a7112b","listingId":"905cffce-2b42-4502-8bb0-b15c5d8b639a","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"teixasalone","category":"UnrealEngine5-Skills","install_from":"skills.sh"},"createdAt":"2026-05-10T01:06:37.757Z"}],"sources":[{"listingId":"905cffce-2b42-4502-8bb0-b15c5d8b639a","source":"github","sourceId":"teixasalone/UnrealEngine5-Skills/ue5-save-load-replication","sourceUrl":"https://github.com/teixasalone/UnrealEngine5-Skills/tree/main/skills/ue5-save-load-replication","isPrimary":false,"firstSeenAt":"2026-05-10T01:06:37.757Z","lastSeenAt":"2026-05-18T19:07:26.096Z"}],"details":{"listingId":"905cffce-2b42-4502-8bb0-b15c5d8b639a","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"teixasalone","slug":"ue5-save-load-replication","github":{"repo":"teixasalone/UnrealEngine5-Skills","stars":12,"topics":["2d","aec","agent-skills","animations","blender","camera","collisions","computer-vision","dotnet","embodied-ai","game-framework","gaussian-splatting","graphics","machine-learning","ue4-program","unreal-engine","virtual-worlds","webgl","webgl2","webxr"],"license":"mit","html_url":"https://github.com/teixasalone/UnrealEngine5-Skills","pushed_at":"2026-05-18T15:42:31Z","description":"Provide reusable workflows for Unreal Engine 5.6/5.7 to simplify Blueprint, C++, UI, PCG, replication, debugging, and performance tasks.","skill_md_sha":"9c77843a6fb4becaadcfab0a8b5b00e667f4c45d","skill_md_path":"skills/ue5-save-load-replication/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/teixasalone/UnrealEngine5-Skills/tree/main/skills/ue5-save-load-replication"},"layout":"multi","source":"github","category":"UnrealEngine5-Skills","frontmatter":{"name":"ue5-save-load-replication","description":"UE5.6/UE5.7 save/load and multiplayer replication workflow for gameplay systems. Use when requests involve SaveGame schema design, serialization, restore pipelines, RepNotify handling, RPC entry points, and server-authoritative validation."},"skills_sh_url":"https://skills.sh/teixasalone/UnrealEngine5-Skills/ue5-save-load-replication"},"updatedAt":"2026-05-18T19:07:26.096Z"}}