제보는 짧았습니다. "소리가 나다 말다 해."
순서대로 돌려쓰고 있었습니다
동시에 소리를 낼 수 있는 자리가 정해져 있고, 새 소리가 나면 그 자리를 하나 씁니다. 이걸 순서대로 돌려쓰고 있었습니다. 1번, 2번, 3번… 끝나면 다시 1번.
문제는 옆자리가 비어 있어도 순서가 된 자리를 뺏는다는 것이었습니다. 그 자리에서 아직 총성이 울리고 있어도 그냥 덮어씁니다. 조용한 자리가 열 개 남아 있는데도요.
숫자를 세어 보니 모자랐습니다
여덟 명이 붙으면 분당 600발짜리 총성과 발소리가 겹쳐서 초당 100개 가까이 납니다. 총성 꼬리가 0.3초쯤 남으니, 어느 순간에 동시에 울려야 하는 소리가 30개를 넘습니다.
자리는 20개였습니다.
0.2초면 한 바퀴를 다 돌고 다시 1번으로 돌아옵니다. 그때부터는 계속 남의 소리를 자르는 겁니다. "나다 말다"가 정확히 그 주기였습니다.
두 가지를 고쳤습니다
자리를 20개에서 32개로 늘렸습니다. 위에서 센 30개를 넘기는 값입니다.
노는 자리부터 씁니다. 전부 울리는 중일 때만 뺏습니다. 그때는 순서 커서가 가리키는 자리가 제일 오래 울린 자리라, 뺏어도 가장 덜 아깝습니다. 결국 원래 방식은 "전부 찼을 때"의 처리였는데, 그걸 늘 하고 있었던 것입니다.
안 끊긴 것만 보면 알 수 없습니다
검사에 숫자를 두 개 같이 찍게 했습니다. 실제로 끊은 횟수와, 예전 방식이었다면 끊겼을 횟수입니다.
[smoke] 소리: 3D 목소리 32개 · 실제로 끊은 횟수 0 · 예전 방식이면 끊겼을 횟수 6
앞 숫자만 보면 "0이니까 됐다"로 끝납니다. 그런데 그 0은 고쳐서 0인지, 원래 안 끊기는 상황이라 0인지 구분이 안 됩니다. 뒤 숫자가 있어야 이 검사가 실제로 무언가를 잡고 있다는 걸 알 수 있습니다.
다만 이 6은 바닥값입니다. 헤드리스 20초는 실제 교전보다 소리가 훨씬 적습니다. 사람이 여덟 붙는 판에서는 이보다 큽니다.