영웅 상성표
영웅 상성표 : 상성표 화면과 “누구부터 노려?” 답변 만들기
오버워치 코칭 챗봇에 영웅 상성표 화면을 새로 만들었다.
영웅 하나를 고르면 그 영웅에게 강한 영웅과 약한 영웅을 한눈에 볼 수 있다.
상성표를 만든 김에 상대 조합을 보고 누구부터 잡아야 하는지 알려주는 답변도 만들었다.
그 밖에 새 영웅 디몬을 추가하고, 조합 추천에서 엉뚱한 이유가 나오던 문제를 고쳤다.
1. 영웅 상성표 화면
화면 위쪽의 ⚔️ 상성표 버튼을 누르면 창이 열린다.
1
상성표 버튼 → 역할 고르기(탱커/딜러/힐러) → 영웅 고르기 → 강한 영웅 / 약한 영웅 확인
목록의 각 줄에는 공략법 버튼이 있다.
누르면 “겐지로 플레이하는데 상대 윈스턴을 어떻게 상대해야 할까?” 같은 질문이 챗봇에 바로 보내진다.
궁금한 상대를 골라 누르기만 하면 되도록 했다.
상성표 내용은 문서에 적힌 것만 사용
상성표 내용은 문서에 없는 말이 섞이면 안되므로 AI에게 물어보지 않고 오버워치 정리 문서에 있는 상성 표만 읽어서 만들었다.
문서에는 영웅마다 “이 영웅이 다른 영웅을 만나면 유리한지 불리한지”를 정리한 표가 있다.
그런데 표가 있는 영웅은 53명 중 26명뿐이었다.
그래서 다른 영웅의 표를 뒤집어서 채웠다.
1
2
디바 표 : 겐지 — 매우 불리
→ 겐지 화면 : 디바 — 매우 유리
디바가 겐지에게 매우 불리하다면, 거꾸로 겐지는 디바에게 매우 유리하다는 뜻이다.
이렇게 하니 53명 모두 상성표가 생겼다.
유리/불리 표현을 점수로 바꾸기
“불리 / 유리” 같은 표현으로 보여주면 “그래서 얼마나 불리/유리하다는 거지?” 하고 생각 할 수도 있을 것 같았다.
그래서 얼마나 유리하고 불리한지를 5점 만점 점수로 작성했다.
| 문서 표현 | 점수 |
|---|---|
| 약간 유리 / 약간 불리 | 3 |
| 유리 / 불리 | 4 |
| 매우 유리 / 매우 불리 | 5 |
목록은 탱커 → 딜러 → 힐러 순서로 묶어서 보여준다.
내 역할 영웅만 빠르게 찾아볼 수 있게 하기 위해서다.
설명 문장 다듬기
“~하지 않나? 싶음”, “~됨” 같은 말투에 줄표(—)가 섞여 있었고, 한 줄이 200자까지 가는 것도 있었다.
게임 중에 읽기에는 너무 길다.
그래서 AI로 설명을 “~다”로 끝나는 짧은 문장으로 다듬었다.
1
2
원문 (156자) : 근접에서 싸우게 되면 디몬을 이길수가 없어보임. 하지만 …
다듬은 문장 (45자) : 디몬은 리퍼의 근접 화력을 감당할 수 없다. 거리를 벌리고 원거리에서만 상대한다.
다만 사용자가 상성표를 열 때마다 AI에게 다듬어 달라고 하면 느리고 비용도 든다.
그래서 미리 한 번에 다듬어서 파일에 저장해두고, 화면은 그 파일을 읽게 했다.
여기서 문제가 하나 있었다.
문서를 고치고 다시 만들어도 이미 파일에 있는 줄은 건너뛰어서 옛날 설명이 계속 나왔다.
그래서 다듬은 문장 옆에 그 문장을 만들 때 본 원문도 같이 저장했다.
다시 만들 때 저장된 원문과 지금 문서를 비교해서 바뀐 줄만 새로 다듬는다.
바뀐 게 없으면 AI를 한 번도 부르지 않는다.
화면 다듬기
1. 역할마다 영웅 수가 달라서 딜러 탭에서만 창이 커졌다. → 창 높이를 고정하고 안쪽만 스크롤되게 했다.
2. 휴대폰에서 상성표 버튼 글씨가 두 줄로 꺾였다. → 한 줄로 나오게 고쳤다.
2. “누구부터 노려?” 답변
상대 조합을 말한 뒤 “누구부터 노려?”라고 물으면 잡을 순서를 알려주는 답변을 만들었다.
순서는 AI가 아니라 상성표가 정한다
처음에는 순서까지 AI에게 맡길 수도 있었다.
하지만 AI는 물어볼 때마다 순서를 다르게 말할 수 있다.
그래서 순서는 앞에서 만든 상성표 점수로 먼저 정하고, AI에게는 “이 순서 그대로 쓰라”고 했다.
AI는 각 상대를 어떻게 잡는지만 채운다.
1
상성표 점수로 순서 정하기 → AI는 각 상대를 잡는 방법만 작성
상대 영웅 정보는 문서에서 직접 꺼낸다
잡는 방법을 잘 쓰려면 상대 영웅이 보통 어디에 서 있는지, 언제 약한지, 팀에서 무슨 일을 하는지 알아야 한다.
그런데 문서에서 비슷한 내용을 찾아오는 방식으로는 상대 5명 정보가 다 찾아지지 않았다.
그래서 상대 영웅마다 그 정보가 적힌 부분을 문서에서 직접 꺼내서 AI에게 먼저 보여준다.
답변 정리
1. 답변 끝에 정리 문단이 세 개나 붙어서 같은 말이 반복됐다. → 겹치는 문단을 뺐다.
2. 문서에 상성이 없는 상대에게 “정보가 없음” 이라는 말이 그대로 보였다.
→ 사용자에게 필요 없는 말이라 빼고, 그 상대는 목록 끝에 잡는 방법만 적게 했다.
3. 새 영웅 디몬(D.Mon) 추가
새 영웅 디몬을 추가했다.
1. TAB 스탯창 사진에서 디몬을 알아볼 수 있게 디몬 아이콘을 넣었다.
2. 사용자가 “D.Mon”, “디먼”이라고 써도 디몬으로 알아듣게 했다.
괄호 때문에 디몬 정보를 못 찾던 문제
문서에는 디몬 제목이 디몬 (D.Mon)처럼 괄호와 함께 적혀 있다.
프로그램은 이 제목 전체를 영웅 이름으로 읽어서 “디몬”으로 찾으면 아무것도 나오지 않았다.
제목에서 괄호 부분을 떼고 등록된 영웅인지 확인한 뒤 찾도록 고쳤다.
숫자로 끝나는 이름 뒤에 붙는 말
상성표 공략법 질문에 “상대 솔저76를 어떻게 상대해야 할까?”라고 나왔다.
이름 마지막 글자에 받침이 있는지 보고 “을/를”을 고르는데, 숫자 6에는 받침이 없다고 본 것이다.
6은 “육”이라고 읽으니 받침이 있으므로 숫자는 읽는 소리로 받침을 확인하게 고쳐서 이제 “솔저76을”로 나온다.
같은 이유로 “윈스턴가 강한 영웅”처럼 나올 뻔한 제목도 “윈스턴이 강한 영웅”으로 나온다.
4. 조합 추천 수정
“우리팀이 둠피, 모이라, 주노, 시온인데 난 뭘 하는 게 좋아?”라는 질문 하나에서 문제가 세 개 나왔다.
문제 1. 5대5인데 탱커를 추천함
오버워치는 패치에 따라 한 팀이 5명일 때도 있고 6명일 때도 있다.
챗봇은 숫자 하나로 지금이 5대5인지 6대6인지 정해두는데, 이 값이 6으로 되어 있었다.
6대6에서는 탱커가 2명까지 가능해서 탱커도 추천한 것이다.
지금은 5대5라서 이 값을 다시 5로 바꿨다.
문제 2. 말하지도 않은 상대 이름이 나옴
상대 조합을 한 번도 말하지 않았는데 추천 이유에 “파라 대응에 유리”가 붙었다.
AI에게 주는 지시에 “상대팀에서 가장 위협적인 영웅을 찾아라”가 남아 있어서, 참고 문서에 나온 영웅을 진짜 상대처럼 적은 것이다.
상대를 모를 때는 그 지시를 빼고, 상대 영웅 이름을 쓰지 말라고 바꿨다.
문제 3. 내가 말한 조건을 무시함
“우리팀 힐러가 힐을 안 해주니 힐이 가능한 영웅으로 추천해줘”라고 했는데 솔저76, 리퍼는 맞게 나왔다.
그런데 캐서디는 “측면 견제”, 솜브라는 “해킹으로 방해하기” 처럼 조건과 상관없는 이유로 같이 추천됐다.
추천 이유는 반드시 내가 말한 조건이나 아군 영웅과 잘 맞는 점 중 하나와 연결되게 했다.
조건에 맞지 않는 영웅은 억지로 넣지 않고, 맞는 영웅이 모자라면 3명만 추천한다.