대화를 자동으로 맨 아래까지 스크롤하면 읽고 있는 플레이어를 방해할까?
새 대화가 도착하면 먼저 플레이어가 읽던 위치를 유지하세요. 되읽기, 이어 읽기, 자동 따라가기의 세 가지 상태로 읽지 않은 내용의 표시 시점, 이동할 위치, 이후 새 대화에 맞춰 화면을 움직여도 되는 조건을 정합니다.

먼저 눈앞의 문장을 지키고, 그다음 새 내용을 알리기
그렇습니다. 이전 내용을 되읽는 중에 새 대화가 화면을 맨 아래로 끌어내리면, 확인하던 이름과 단서, 앞뒤 맥락이 시야에서 사라집니다. 다음과 같은 규칙을 권합니다. 되읽는 동안에는 현재 위치를 유지하고 새 내용 표시만 갱신합니다. 플레이어가 직접 자동 따라가기를 선택한 뒤에만 이후 대화에 맞춰 화면을 움직입니다.
여기서는 대화 수신, 화면 표시, 플레이어의 이해라는 세 가지를 구분해야 합니다. 시스템이 기록할 수 있는 것은 앞의 두 가지뿐이며, 스크롤 위치만으로 세 번째를 단정할 수는 없습니다. 아래에서 말하는 ‘읽지 않음’은 아직 읽는 위치를 지나가지 않은 내용에 붙이는 표시일 뿐, 이해도를 판단하는 기준이 아닙니다.
이 글은 가상의 교육용 사례인 ‘비 오는 밤의 역’을 사용합니다. 플레이어가 역무원의 짐 보관 시간 안내를 되읽는 동안 동료에게서 새 메시지가 도착하는 상황입니다. 인물, 대화, 조작 과정은 모두 직접 만든 시연용 예시입니다. 실제 사용자 사례나 실측 결과가 아니며, DramaFork가 관련 기능을 이미 제공한다는 뜻도 아닙니다.
이번에 만들 결과물은 재사용할 수 있는 읽기 상태 카드입니다. 대화가 계속 도착할 때 누가 화면 표시 영역의 이동을 결정할지를 다룹니다. 첫 클릭을 가르치는 방법이나, 등장인물에게 거절당한 뒤에도 이야기를 이어 갈 길을 만드는 방법은 다루지 않습니다.
세 가지 상태로 화면 이동의 허용 범위 정하기
읽기 상태 카드에는 먼저 현재 모드, 위치 기준점, 읽지 않은 첫 대화의 식별자, 최신 대화 식별자, 따라가기 의사라는 다섯 항목을 기록합니다. 위치 기준점에는 ‘읽고 있는 문단의 식별자’와 ‘표시 영역 안에서 그 문단의 상대적 위치’를 담습니다. 페이지 전체의 스크롤 거리만 기록하면 앞부분의 높이가 바뀐 뒤 다른 문장으로 이동할 수 있습니다.
모드는 되읽기, 이어 읽기, 자동 따라가기의 세 가지입니다. 되읽기는 이전 내용에 머무르는 모드이고, 이어 읽기는 읽지 않은 첫 대화부터 순서대로 읽는 모드입니다. 자동 따라가기는 새 내용이 표시 영역을 맨 끝으로 움직이도록 허용하는 모드입니다. 앞의 두 모드에서는 메시지가 도착했다는 이유로 표시 영역을 자동 이동해서는 안 됩니다.
| 현재 모드와 상황 | 표시 영역의 이동 방식 | 안내 표시 및 이후 모드 |
|---|---|---|
| 되읽는 중 새 대화 도착 | 기준점 유지 | 읽지 않은 내용 누적, 되읽기 유지 |
| ‘안 읽은 곳부터 계속’을 누름 | 읽지 않은 첫 대화를 위쪽에 배치하고 앞부분을 조금 남김 | 이어 읽기로 전환, 자동 따라가기는 켜지 않음 |
| 이어 읽는 중에도 대화 도착 | 읽고 있는 위치 유지 | 읽지 않은 내용의 범위 확장 |
| ‘최신으로 이동하고 자동 따라가기’를 누름 | 최신 대화로 이동 | 자동 따라가기 시작 |
| 자동 따라가기 중 직접 위로 탐색 | 플레이어가 멈춘 곳에 기준점 설정 | 즉시 되읽기로 전환 |
| 직접 맨 끝까지 스크롤 | 플레이어가 도달한 곳에 멈춤 | 기존 모드 유지, 자동 따라가기는 여전히 선택 가능 |
마지막 행이 중요합니다. 맨 끝에 도달했다는 것은 위치만 나타낼 뿐, 이후에도 계속 화면이 움직이는 데 동의했다는 뜻은 아닙니다. 대안으로 ‘맨 아래에 도달하면 자동 따라가기 재개’ 규칙을 쓴다면 그 동작을 미리 설명해야 합니다. 이 글은 위치와 의사를 구분하기 쉽도록 명시적으로 켜는 방식을 선택합니다.
플레이어가 드래그하거나, 글자를 선택하거나, 현재 대화와 관련된 조작을 하고 있다면 그 조작이 끝난 뒤 위치 이동 요청을 처리해야 합니다. 늦게 도착한 스크롤 명령이 플레이어가 방금 한 이동을 덮어써서는 안 됩니다.
비 오는 밤의 역을 처음부터 따라가 보기
대화 A는 ‘짐 보관소는 아홉 시에 닫아요’, 대화 B는 ‘파란 여행 가방은 아직 카운터 뒤에 있어’라고 가정해 봅시다. 플레이어는 시간을 확인하려고 B에서 위쪽의 A로 돌아갑니다. 이때 A의 식별자와 화면 위치를 기록하고 되읽기 모드로 바꿉니다.
이어서 C ‘당직실을 찾았어’와 D ‘열쇠는 문 옆에 걸려 있어’가 도착합니다. A는 원래 자리를 유지해야 하며, 하단의 별도 영역에 ‘새 대화 2개 · 안 읽은 곳부터 계속’을 표시합니다. 표시는 본문을 가리지 않고 C와 D의 이야기 내용도 드러내지 않습니다. 그렇지 않으면 플레이어가 되읽기를 그만두기로 결정하기도 전에 새 단서로 주의가 분산됩니다.
플레이어가 표시를 누르면 C의 시작 부분에서 화면이 멈춥니다. 흐름을 연결할 수 있도록 위쪽에는 B의 마지막 문장을 남기고 이어 읽기로 전환합니다. 이때 E ‘아직 문 열지 마. 안에서 누가 이야기하고 있어’가 도착해도 화면은 C에 그대로 머뭅니다. 플레이어는 자기 속도에 맞춰 D와 E까지 읽을 수 있습니다.
개수도 이 흐름을 따라야 합니다. 표시를 누르는 동작은 위치만 이동할 뿐, 읽지 않은 내용의 표시를 모두 즉시 지우지 않습니다. 이 사례의 구현 규칙에서는 짧은 대화 한 개가 온전히 읽기 영역을 지나간 뒤에만 표시를 없앱니다. 긴 대화는 구분이 일정하게 유지되는 문단으로 나눠, 한 화면에 담기지 않는다는 이유로 표시가 영원히 사라지지 않는 일을 막습니다. 이 역시 위치에 관한 규칙일 뿐입니다.
다른 선택은 ‘최신으로 이동하고 자동 따라가기’를 누르는 것입니다. 곧바로 E로 이동하고 이후 대화가 표시 영역을 움직이도록 허용합니다. 그렇다고 C와 D를 읽음으로 처리해서는 안 됩니다. ‘건너뛴 내용 있음’이라는 이동 기능을 남겨, 아직 읽는 위치를 지나가지 않은 가장 앞쪽 내용으로 돌아갈 수 있게 해야 합니다. 최신으로 이동하면 진행 상황을 따라잡기 쉽지만, 중간에 읽지 않은 부분을 몰래 지워서는 안 됩니다.
읽지 않은 내용의 표시가 또 다른 방해가 되지 않게 하기
표시는 본문 바깥의 고정 영역에 두고, 어떤 동작인지 글로 설명할 수 있습니다. 아래쪽 화살표만으로는 한 화면만큼 이동하는지, 맨 끝으로 가는지, 계속 자동으로 따라가기 시작하는지 알 수 없습니다. 공간이 부족하면 ‘안 읽은 곳부터 계속’을 우선 표시하고, 자동 따라가기는 별도의 명확한 동작으로 둡니다.
내용이 연달아 도착해도 같은 표시만 갱신합니다. 화면 위에 뜨는 안내를 겹겹이 쌓거나, 반복해서 깜박이거나, 키보드 초점을 빼앗지 않습니다. 스크린 리더를 사용할 때는 ‘새 대화가 있습니다’로 알림을 묶어, 내용이 추가될 때마다 표시나 과거 내용 전체를 다시 읽지 않도록 할 수 있습니다. 화면상의 위치 변화와 스크린 리더 초점을 어떻게 연결할지는 따로 정해야 합니다.
대화가 한 글자씩 생성될 때는 완성된 대화나 미리 정한 문단을 단위로 세고, 각각의 글자 조각을 메시지 한 개로 세지 않습니다. 그렇지 않으면 숫자만 계속 변하고, 얼마나 더 읽어야 하는지 판단하는 데 도움이 되지 않습니다. 길이 차이가 크다면 ‘새 내용 있음’만 표시해도 됩니다.
플레이어가 누를 때마다 이야기가 한 문장씩 공개되는 방식이라면 ‘계속’ 버튼만 사용해도 되며, 지속적인 자동 따라가기를 도입할 필요는 없습니다. 새 대화를 본문에 바로 넣지 않고 플레이어가 직접 펼칠 때까지 기다리는 방법도 있습니다. 위치는 유지하기 쉽지만 내용이 보이는 시점은 늦어집니다. 작가는 이야기에 대화가 연속해서 도착하는 호흡이 필요한지에 따라 선택하면 됩니다. 모든 프로젝트가 같은 방식을 쓸 필요는 없습니다.
변화와 복원으로 상태 카드의 한계 확인하기
새 내용을 맨 끝에 추가한다고 이전 위치가 저절로 안정되는 것은 아닙니다. 글자 크기 변경, 가로·세로 화면 전환, 위쪽 내용 펼치기는 모두 배치를 바꿀 수 있습니다. 이때는 먼저 원래 문단을 찾고 상대적 위치를 최대한 복원합니다. 정확하게 되돌릴 수 없다면 문단의 시작이 보이게 하고, 위치가 조정되었다고 알립니다.
이전 내용이 삭제되거나 수정되어 기준점이 무효가 되면, 앞뒤에 남아 있는 인접 문단 중 원래 문단과 가장 가까운 곳으로 이동합니다. 아무 설명 없이 최신 대화로 건너뛰거나, 다른 문단을 보여 주면서 복원에 성공했다고 처리해서는 안 됩니다. 페이지를 떠났다가 돌아올 때도 모드와 기준점을 복원해야 합니다. 이전에 자동 따라가기를 켰더라도 먼저 떠났던 위치에 멈춘 다음, 다시 따라갈지는 플레이어가 선택하게 할 수 있습니다.
제작할 때는 다음 네 가지를 그대로 검수 기록에 넣을 수 있습니다.
- A를 되읽는 동안 여러 대화를 연속으로 추가해도 A가 원래 읽던 위치에 남아 있는가.
- ‘안 읽은 곳부터 계속’을 누른 뒤 내용이 더 추가되어도 읽지 않은 첫 대화부터 순서대로 이어 읽을 수 있는가.
- 최신으로 이동한 뒤에도 건너뛴 내용으로 돌아갈 수 있는가.
- 글자 크기를 바꾸거나 기준점 문단을 삭제한 뒤, 설명 가능한 위치로 복원되는가.
실제 화면과 정해 둔 동작의 차이를 기록하고, 이 확인 항목들을 이미 검증된 효과처럼 쓰지 마세요. 이야기에 카운트다운도 있다면 위치를 유지한다고 시간이 멈추지는 않습니다. 시간을 멈출지, 어떻게 알릴지는 별도 규칙으로 정해야 하며, 자동으로 맨 아래까지 스크롤하는 것으로 플레이어 대신 처리해서는 안 됩니다. 먼저 대화가 연속되는 장면 하나에서 상태 카드를 완성해야 어떤 이동이 플레이어의 행동에서 나왔고, 어떤 이동이 설계에서 허용된 것인지 명확해집니다.


