자모 단위 채점: 조합 중인 글자를 오타로 보지 않는 타자 엔진의 원리
영어 타자 연습기는 글자 하나하나를 정답과 비교하면 됩니다. 한글은 그렇지 않습니다. "가나"를 치는 도중에는 화면에 "간"이 잠깐 나타납니다. 이 순간을 오타로 처리하면 연습하는 사람은 억울합니다. 이 글은 한글 입력의 특성과, STARROAD의 타자 엔진이 이 문제를 자모 단위로 푸는 방식을 설명합니다.
도깨비불 현상
두벌식에서 ㄱ ㅏ ㄴ을 누르면 화면에는 "간"이 보입니다. 이어서 ㅏ를 누르면 ㄴ이 앞 글자에서 떨어져 나가 다음 글자의 첫소리가 되고, 화면은 "가나"로 바뀝니다. 마지막에 누른 자음이 받침인지 다음 글자의 첫소리인지는 그다음 글쇠를 봐야 정해지기 때문입니다. 이렇게 받침이 뒤 글자로 옮겨 가는 현상을 흔히 도깨비불 현상이라고 부릅니다.
그래서 글자 단위로 비교하면 "간"은 정답 "가"와 다르니 오타처럼 보입니다. 하지만 실제로 사용자는 정답을 향해 정확히 입력하고 있습니다.
자모로 풀어서 비교하기
해결책은 입력과 정답을 모두 자모로 풀어 비교하는 것입니다.
정답 가나 → ㄱ ㅏ ㄴ ㅏ
입력 간 → ㄱ ㅏ ㄴ
앞에서부터 3개 일치 → 아직 틀린 것 없음
STARROAD 엔진은 입력과 정답을 hangul-js로 자모 배열로 바꾼 뒤, 앞에서부터 몇 개가 연속으로 같은지를 셉니다. 처음으로 다른 자모가 나오면 그 뒤는 모두 틀린 것으로 봅니다. 이 방식이면 조합 중인 글자는 자연스럽게 정답으로 인정되고, 진짜 오타는 바로 드러납니다.
정확도 계산
정확도는 "맞게 입력한 자모 수 ÷ 입력한 전체 자모 수 × 100"입니다. STARROAD는 이미 끝낸 줄의 결과를 누적하고, 지금 치고 있는 줄의 결과를 실시간으로 더해 보여 줍니다. 화면의 정확도 숫자는 95% 이상이면 초록, 85% 이상이면 노랑, 그 아래면 빨강으로 표시됩니다.
한 줄이 끝나는 순간(정답과 똑같이 입력했거나 Enter로 다음 줄로 넘길 때) STARROAD는 그 줄에서 맞은 자모 수와, 입력과 정답 중 더 긴 쪽의 자모 수를 누적합니다. 그래서 줄이 끝나기 전에 지우고 고친 오타는 정확도에 남지 않습니다. 대신 틀리는 순간 아래에서 설명할 콤보가 끊기고, 지우고 다시 치는 시간만큼 속도가 떨어집니다. 틀린 채로 Enter를 눌러 넘기면, 처음 틀린 자모부터 줄 끝까지가 모두 틀린 것으로 계산됩니다.
콤보: 연속으로 맞힌 자모
STARROAD에는 연속으로 맞힌 자모 수를 세는 콤보도 있습니다. 새로 친 자모가 모두 맞으면 콤보가 늘고, 6과 12의 배수마다 화면에 판정 효과가 나옵니다. 하나라도 틀리면 콤보는 0으로 돌아갑니다. 콤보는 점수보다 리듬을 보여 주는 지표입니다. 긴 콤보가 자주 끊긴다면 특정 글쇠에서 손이 머뭇거린다는 뜻이니, 그 글쇠를 자리 연습으로 따로 연습해 보세요.
자모 단위 채점의 한계
- 앞부분 일치 방식은 중간에 하나가 틀리면 그 뒤를 모두 틀린 것으로 봅니다. 오타를 고치지 않고 계속 치면 뒤에 맞게 친 자모도 인정받지 못합니다. 틀린 곳에서 바로 고치도록 유도하는 설계입니다.
- 겹모음과 겹받침은 두 자모로 세므로, "과"를 "가"로 쳤다면 한 자모가 빠진 것으로 처리됩니다.
- 띄어쓰기와 문장 부호도 비교 대상이 됩니다. 정답 문장의 공백을 그대로 따라 치세요.
정리
한글 타자 엔진은 "글자"가 아니라 "자모"를 세야 공정합니다. 속도를 세는 단위에 대해서는 타수와 WPM 글을 함께 읽어 보세요.