MVP를 만들고 나면 뿌듯함이 찾아온다. “드디어 돌아간다!” 하지만 진짜 테스트는 그 다음이다. 직접 둔 기보를 올려보는 순간, 개발할 때는 보이지 않던 것들이 쏟아져 나온다.
오로바둑이랑 왜 다르게 생겼지?
첫 번째 위화감은 바둑판 방향이었다. 나는 오로바둑에서 주로 바둑을 둔다. 그런데 KaiGo Coach에서 내 기보를 열면 판이 180도 돌아가 있었다. 백을 잡았을 때 “백 시점”으로 보여주려고 회전시킨 건데, 오히려 혼란스러웠다.
복기할 때는 실제로 뒀던 그 화면 그대로 보고 싶다. 흑이든 백이든 상관없이. 결국 회전 기능을 꺼버렸다. 의도는 좋았지만 사용자(나)가 원하는 건 아니었다.
# Before: 백일 때 180도 회전
rotate_for_white=(my_color == "W")
# After: 항상 같은 방향
rotate_for_white=False
상대 수의 변화도 보고 싶어
“놓아보기” 기능은 AI가 추천하는 수순을 바둑판에서 직접 확인하는 기능이다. 처음에는 내가 둔 수에서만 활성화했다. “내 실수를 분석하는 앱”이니까.
그런데 막상 써보니 답답했다. 백2에서 시작된 정석 변화가 궁금한데, 백2는 상대 수라서 놓아보기가 안 된다. 백2가 왜 좋은 수인지 알려면 그 이후 변화를 봐야 하는데.
결국 모든 수에서 놓아보기를 활성화했다. 내 수든 상대 수든, 변화를 보고 싶을 때 볼 수 있어야 한다.
변화도가 너무 짧아
놓아보기를 열심히 쓰다 보니 또 다른 문제가 보였다. AI가 보여주는 예상 수순이 4-5수밖에 안 됐다. 포석 단계에서는 괜찮은데, 전투가 시작되면 5수로는 상황 파악이 안 된다.
KataGo는 원래 더 긴 수순(PV, Principal Variation)을 계산한다. 그냥 앞에서 잘라서 보여주고 있었을 뿐. 15수까지 늘렸더니 전투의 흐름이 훨씬 잘 보인다.
# Before
pv_moves = pv[:5] if pv else []
# After
pv_moves = pv[:15] if pv else []
그런데 KataGo가 틀렸다
여기까지는 UX 개선이었다. 진짜 충격은 그 다음이었다.
어느 날 한 판을 분석했는데, 승률 그래프가 이상했다. 중반부터 내 승률(백)이 쭉 올라가서 거의 100%를 찍고 있었다. “큰 전환점 없이 안정적인 게임이었습니다!”라는 피드백까지.
그런데 나는 그 게임에서 졌다. 상대가 돌을 던졌지만, 실제로는 내 백 대마가 죽어 있었다. 오로바둑 AI로 확인해보니 흑이 83집 차이로 이기고 있었다.
KataGo가 사활을 잘못 읽은 것이다.
maxVisits: 속도와 정확도의 트레이드오프
원인은 maxVisits 설정이었다. KataGo가 한 수를 분석할 때 몇 번이나 시뮬레이션을 돌릴지 결정하는 값이다. 50으로 설정해뒀는데, 복잡한 사활 판단에는 부족했다.
# Before: 빠르지만 부정확
"maxVisits": 50
# After: 느리지만 정확
"maxVisits": 200
분석 시간이 늘어나는 건 감수해야 한다. 틀린 분석을 빨리 보여주는 것보다, 맞는 분석을 조금 기다리는 게 낫다.
죽은 돌이 보여야 한다
사활 오판 문제를 겪고 나니, “형세 표시” 기능이 얼마나 중요한지 깨달았다. AI가 어떤 돌을 죽은 돌로 보고 있는지 시각적으로 확인할 수 있어야 한다.
죽은 돌 위에 반투명한 빨간 원을 표시하고, 집 계산 결과도 함께 보여주도록 수정했다.
📊 형세: ⚫ 125집 | ⚪ 42집 (사석: ⚫0 ⚪47)
이제 “백돌 47개가 죽었다”는 걸 한눈에 볼 수 있다. 승률 그래프만 믿지 않고, 형세 판단의 근거를 직접 확인할 수 있게 됐다.
배운 것
- 직접 써봐야 보인다 – 개발할 때 쓰는 테스트 데이터와 실제 내 기보는 다르다. 감정이 들어간 기보로 테스트해야 진짜 문제가 드러난다.
- AI도 틀린다 – KataGo는 강력하지만 완벽하지 않다. 특히 복잡한 사활에서. AI 분석 결과를 그대로 믿지 말고, 판단의 근거(죽은 돌, 집 계산)를 함께 보여줘야 한다.
- 의도와 필요는 다르다 – “백 시점 회전”은 좋은 의도였지만 실제로는 불필요했다. 사용자가 원하는 건 개발자의 의도가 아니라 익숙한 경험이다.
다음 목표는 훈련 모드 개선이다. 분석은 “어디서 틀렸나”를 보여주지만, 훈련은 “다음에 어떻게 둘까”를 연습하는 것이다. 실전 감각을 기르는 훈련 시스템을 만들어보려 한다.
KaiGo Coach 개발기는 계속됩니다.
