숏컷 코드
text
Authoring Data
-> 디자이너가 만든 원본 설정
Runtime State
-> 플레이 중 변하는 값
원본과 상태를 같이 들고 다니면
-> 저장/리셋/복제가 꼬임문법과 예시
authoring data는 원본 정의를 담고 runtime state는 그 복사본이나 결과를 담는다
무기 공격력, 스킬 쿨다운, 적 기본 이동 속도처럼 에디터에서 정하는 값은 authoring data에 가깝습니다. 반대로 현재 HP, 남은 쿨다운, 버프 지속 시간처럼 플레이 중 변하는 값은 runtime state입니다.
text
WeaponDefinition
-> baseDamage, attackSpeed, icon
WeaponRuntime
-> currentDurability, currentAmmo, cooldownRemaining원본과 상태를 분리하면 리셋과 저장이 쉬워진다
원본 정의는 여러 인스턴스가 공유할 수 있고, runtime state만 분리해 두면 저장/복구도 명확해집니다. 새 전투를 시작할 때는 authoring data에서 runtime state를 다시 만들면 되고, 밸런스 수정도 원본만 고치면 됩니다.
가장 흔한 실패는 원본 에셋에 플레이 상태를 써 넣는 것이다
예를 들어 SkillData 같은 에셋에 남은 쿨다운이나 현재 레벨을 직접 기록하기 시작하면, 여러 캐릭터가 같은 원본을 공유할 때 상태가 섞입니다.
이 방식은 멀티 인스턴스, 저장, 리셋, 테스트에서 바로 문제를 만듭니다.
원본 데이터와 상태를 나눌 때 핵심
| 상황 | 더 자연스러운 선택 |
|---|---|
| 디자이너가 에디터에서 조정해야 할 값일 때 | authoring data |
| 플레이 중 프레임마다 변하거나 저장 대상일 때 | runtime state |
| 여러 인스턴스가 같은 정의를 공유해야 할 때 | 원본 공유 + 상태 분리 |
| 전투 시작마다 초기화가 쉬워야 할 때 | authoring에서 runtime 생성 |
| 원본 에셋이 플레이 결과에 따라 바뀌기 시작할 때 | 상태 분리부터 다시 설계 |
특이 케이스와 주의할 점
흔한 실패는 "간단하니까 데이터 에셋에 바로 적자"는 식으로 runtime 값을 원본에 섞는 것입니다. 처음엔 편하지만 인스턴스 복제, 저장, 리셋이 들어오는 순간 경계가 무너집니다.
text
실패 예시
- EnemyData.asset 안에 currentHp를 직접 저장
- SkillDefinition에 cooldownRemaining을 바로 기록
결과
- 같은 원본을 쓰는 여러 인스턴스 상태가 섞임
- 저장/리셋/디버깅 포인트가 모호해짐