세션과 크래시 복구¶
Harmony가 뻗어도 staging 트리를 잃지 않습니다.
Assemble이 실행되기 전까지 그 트리는 세상 어디에도 존재하지 않습니다. 그것을 위한 프로젝트 형식도 없고, vacuum은 씬 을 읽는데 씬은 아직 아무것도 받지 않았습니다. 그래서 OSA는 그것을 스스로, 계속해서 저장합니다.
무엇이 저장되는가¶
staging 트리, 선택 상태, 그리고 UI 상태 — 어떤 패널이 접혀 있는지, 어떤 표시 토글이 켜져 있는지, 분할선이 어디 있는지.
트리는 하루치 작업입니다. UI 상태는 편의입니다. 그것을 수집하는 데 실패하더라도 트리는 어쨌든 기록됩니다. 분할선 위치를 잃는 것은 성가심이지만 트리를 잃는 것은 하루이기 때문입니다.
언제 저장되는가¶
타이머는 하나가 아니라 둘입니다:
| 타이머 | 발동 시점 |
|---|---|
| 비활동 | 변경을 멈춘 뒤 몇 초 — 편집할 때마다 다시 걸립니다 |
| 상한 | 무엇을 하고 있든 고정된 최대 간격 |
상한이 첫 타이머 안의 카운터가 아니라 두 번째 타이머인 이유는, 비활동 타이머가 모든 변경마다 다시 걸리기 때문입니다. 그 안에 저장된 기한은 바쁜 세션에서 영원히 뒤로 밀릴 것입니다.
어디에 저장되는가¶
%APPDATA%/Toon Boom Animation/Toon Boom Harmony Premium/
octo_scene_assembler/sessions/
씬당 파일 하나 이며, 씬 이름에 해시를 붙여 이름 짓습니다. 씬 폴더가 아닌 이유는, 씬이 한 번도 저장된 적이 없을 수 있고, Harmony Server에서는 경로가 매핑이 필요한 논리 경로라 쓰기가 보장되지 않기 때문입니다.
어떻게 기록되는가¶
tmp → 현재 파일이 .bak 이 됨 → 원자적 교체.
어떤 순간에도 대상이 반쯤 쓰인 채로 남지 않습니다. 크래시가 나면 새 파일이 온전히 있거나, 이전 파일이 있습니다. 백업 세대는 하나 이고, 이력이 아닙니다.
복원하기¶
열 때 이 씬에 대한 세션이 있으면 바가 그것을 제안합니다:
| 버튼 | 하는 일 |
|---|---|
| Restore | 저장된 세션에서 staging 트리를 다시 만듭니다 |
| Dismiss | 저장된 세션을 삭제합니다 |
Dismiss는 정말로 삭제합니다. 바만 숨기는 "dismiss"는 열 때마다 영원히 같은 제안이 되돌아온다는 뜻입니다.
Auto-restore Session (Preferences → Settings) 이 켜져 있으면 트리는 묻지 않고 돌아옵니다.
바가 말해 주는 것¶
| 메시지 | 뜻 |
|---|---|
| Session restored — N nodes. | 완료 |
| …(X could not be restored.) | 트리는 돌아왔지만 "내가 있던 자리"의 일부는 돌아오지 않았습니다 |
| The most recent session was corrupt; this is the previous one. | .bak 이 사용되었습니다 |
| The saved session is unreadable. | 두 사본 모두 파싱에 실패했습니다 |
| This session was written by a newer version of OSA… | 일부러 거부했습니다 — 미래 형식을 어중간하게 적용하면 여러분의 것처럼 보이지만 아닌 트리가 생깁니다 |
손상된 세션은 결코 조용히 버려지지 않습니다. 아무 말도 듣지 못하는 것이야말로 사용자가 자동 저장이 애초에 동작한 적 없다고 결론짓는 방식입니다.
크래시와 정상 종료¶
정상적으로 닫으면 OSA는 "실행 중" 표시를 제거합니다. 다음에 열 때 그 표시가 없다는 것 만이 크래시와 정상 종료를 구분하는 유일한 근거이며, 그 구분이 복원 바가 참인 말을 할 수 있게 해 줍니다.
정리¶
세션 폴더는 스스로 가지치기합니다: 20개 파일, 30일, 현재 씬의 세션은 언제나 보호됩니다. 그렇지 않으면 폴더가 씬마다 파일 하나씩 영원히 불어나고, 아무도 거기 가서 청소하지 않습니다.
자동 저장이 쓸 수 없을 때¶
저장이 실패하면 노란 메시지가 나타납니다 — 매 틱마다가 아니라 실패가 이어지는 구간마다 한 번 이고, 몇 초 뒤 스스로 사라집니다.
이유는 세션과 같은 폴더의 osa.log 로 가며, 원인을 지목합니다. 실패가 직렬화할 수 없는 값 때문이었다면 로그는 정확한 키 를 지목합니다. "실패했다"는 누구도 손쓸 수 있는 정보가 아니기 때문입니다.
뭔가 잘못됐을 때 볼 곳
%APPDATA%/Toon Boom Animation/Toon Boom Harmony Premium/octo_scene_assembler/osa.log
그 파일은 지원팀이 여러분의 씬 없이도 여러분의 Harmony가 무엇을 했는지 읽는 방법이기도 합니다.