콘텐츠로 이동

세션과 크래시 복구

비디오 튜토리얼 — 준비 중

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가 무엇을 했는지 읽는 방법이기도 합니다.