되돌리기 전에 무엇이 사라질지 보여주기

되돌릴 수 있어도 결과는 알아야 합니다
2024년 5월 24일의 Factorio 개발 기록 #412는 되돌리기와 다시 실행하기를 개선하는 과정을 다룹니다. 공장을 크게 편집하다 보면 직전에 한 작업이 무엇인지, 다른 행성에서 내린 명령이 섞였는지 기억하기 어렵습니다. 되돌리기 단축키가 있다는 것만으로는 이런 불확실성이 해결되지 않습니다.
개선안은 작업 결과를 확인할 단서를 늘립니다. 단축키를 누를 때 알림을 보여주고, 오래된 작업을 되돌릴 때에는 어떤 건물에 철거 또는 건설 지시가 생기는지 미리 보여주는 방식입니다. 도구 설명에서도 어떤 작업을 어느 위치와 행성·플랫폼에서 되돌리는지 파악하도록 했습니다.
다시 실행은 시간을 역행시키지 않습니다
원문이 설명하는 다시 실행은 취소했던 작업 지시를 다시 적용하는 기능입니다. 시뮬레이션 전체를 과거 시각으로 돌리는 저장 상태 복원과는 다릅니다. 그 사이 움직인 물류나 진행한 생산까지 모두 되감는 것으로 이해하면 안 됩니다.
또한 무엇이 이력에 들어가는지도 중요합니다. 원문은 전선 연결과 설정 붙여넣기, 청사진의 강제 배치에 따른 회전 같은 사례를 설명하지만 수동 R 키 회전은 되돌리기 이력에 넣지 않았다고 밝힙니다. 모든 조작이 동일하게 취소된다고 약속하는 글로 바꾸지 않았습니다.
작업 한 건 안에도 여러 행동이 있습니다
현재 공식 LuaUndoRedoStack은 플레이어의 되돌리기 큐를 공개합니다. item_index는 큐의 작업 항목을, action_index는 그 항목에 포함된 개별 행동을 가리킵니다. get_undo_item은 행동 배열을 반환하고, 항목은 최신 것부터 오래된 것 순으로 조회합니다.
따라서 화면에서 한 번 실행한 편집과 내부의 단일 개체 변경을 반드시 같은 단위로 볼 필요는 없습니다. 여러 건물을 한꺼번에 배치했다면 사용자에게는 하나의 작업으로 설명하면서 내부에는 여러 행동을 보관할 수 있습니다. 이 설명은 공개 API의 구조를 읽은 것이며 실제 저장 형식이나 전체 엔진 코드를 확인한 것은 아닙니다.
실패하기 쉬운 순서를 만들어 봅니다
다음은 아직 수행하지 않은 검증 제안입니다. 가까운 곳에 건물을 배치한 뒤 먼 곳에서 전선을 연결하고 설정을 붙여넣습니다. 그런 다음 되돌리기 전에 UI가 보여주는 위치와 대상이 자신이 예상한 작업과 일치하는지 확인합니다. 같은 모양의 건물이 여러 곳에 있을수록 위치 정보가 중요해집니다.
다시 실행했을 때에는 지시가 재생성됐는지와 실제 건설이 완료됐는지를 나누어 기록합니다. 작업 대상이 이미 사라졌거나 다른 상태로 바뀐 경우도 추가해 보세요. 사용자 입장에서 성공인지 일부 적용인지 구별되지 않으면, 기능은 작동해도 신뢰하기 어렵습니다.
자체 편집 도구라면 이력 항목마다 짧은 이름, 대상 수, 위치를 붙이고 미리보기와 실제 적용이 같은 대상을 참조하는지 테스트할 수 있습니다. 되돌리기는 실수를 복구하는 기능이면서 다음 클릭의 결과를 예측하게 하는 UI이기도 합니다. 확인 창을 무조건 늘리기보다 위험한 작업을 알아볼 정보를 제공하는 편이 핵심에 가깝습니다.
미로


댓글
이 글에 대한 생각을 남겨 주세요.