AI 시대, 시나리오 라이터를 지원하는 프롬프트와 툴 설계법
©Cygames

사이게임즈는 오늘(23일), 최근 화두인 AI의 게임 업계 활용, 특히 시나리오 분야와 관련해 CEDEC2026에서 강연을 진행했다. 강연을 맡은 타테후쿠 히로시(立福 寛) 엔지니어는 2018년부터 사이게임즈에 합류, 2019년 후반부터 AI의 가능성에 주목하고 사내 프로세스 도입을 위해 힘써왔던 전문가다. 이미 지난 CEDEC2024에서 'AI를 활용한 유연하고 효율적인 사내 리소스 검색 대처', CEDEC2025에서 '대규모 언어 모델을 활용한 게임 내 대화 파트의 스크립트 작성 지원'등 AI와 관련된 강연을 해왔던 그는 이번에는 시나리오 라이터의 집필, 감수 과정에 도움을 주는 AI 활용을 주제로 연단에 올랐다.


시나리오-캐릭터 설정 감수, 최대한 필요한 정보만 참고해야


AI 시대, 시나리오 라이터를 지원하는 프롬프트와 툴 설계법
©Cygames

수년 전 AI의 사내 도입을 시작했을 무렵, 그는 사내 어느 프로젝트에서 시나리오 작성을 AI로 지원해줬으면 좋겠다는 요청을 받았다고 회고했다. 이유는 간단했다. 게임이 오래도록 운영되면서 캐릭터 수가 늘어났고, 시나리오 라이터가 파악해야 하는 사항도 대폭 증가했기 때문이었다. 또한 작성해야 할 텍스트의 양도 방대해지면서 시나리오 라이터에게 가해지는 부담도 커졌다. 그러면서 개발 프로세스에 병목 현상이 발생하기 시작했고, 이를 개선하기 위해 워크플로우를 재확인하는 과정에 나섰다.

사이게임즈의 경우, 자체 시나리오 집필 툴인 '고에혼'을 거의 모든 프로젝트에 도입하고 있어 툴의 기능 개선에 AI를 추가해 대응할 수 있는 부분이 있었다. 이외에도 독립된 AI 툴로 커버할 수 있다고 판단했으며, 그 중 프로토타입 개발 및 운영에 'Dify'를 사용하고 있다고 설명했다. Dify는 AI 앱을 노코드/로우코드로 작성할 수 있는 오케스트레이션 플랫폼으로, 대형 LLM 및 데이터와 연결해 AI 에이전트와 RAG 파이프라인 설계도 가능하다. 현재 일본에서 상당히 인기를 끌고 있는 만큼, 접근성도 높았다.

AI 시대, 시나리오 라이터를 지원하는 프롬프트와 툴 설계법
©Cygames

타테후쿠 엔지니어는 시나리오 작업과 관련해 시나리오가 캐릭터 설정에 모순되지 않는지 조사하는 툴 / AI가 원하는 바를 정확히 짚고 체크할 수 있게 하는 테크닉 / 특수한 말투를 사용하는 캐릭터의 대사 작성을 돕는 툴 / 방언 감수 툴 / 시나리오 오탈자 검출 툴 크게 다섯 가지 과제를 언급했다. 그리고 마지막에는 Dify로 AI 앱을 개발할 때 직면할 수 있는 상황과, 이를 해결하거나 피하는 방안을 소개했다.

가장 먼저 시나리오 라이터가 집필한 시나리오를 캐릭터 설정과 모순되지 않게 AI로 조사하는 툴을 만든 이유는 간단했다. 가면 갈수록 기하급수적으로 체크해야 할 사항이 많아진 만큼, 인력으로 빠르게 처리하기가 힘들어진 부분이었기 때문이었다. 통상 이에 대처하기 위해 캐릭터 설정과 시나리오를 프롬프트에 넣어서 조사하는 방법을 생각하지만, 매번 AI에 붙여넣고 검수하고 그렇게 하는 작업도 번거롭고 관리하기도 까다로웠다.

그래서 그를 비롯한 개발 운영 지원 팀은 시나리오 라이터가 집필 툴에 시나리오 ID를 입력하면, 등장 인물의 캐릭터 설정과 시나리오 사이에 모순점이 없는지 바로 조사할 수 있는 방안을 설계했다. 기본적으로 시나리오와 등장 캐릭터의 설정을 프롬프트에 넣고 AI가 모순점을 찾게 하는 방식인 것은 같으나, 기존에 작업했던 리스트와 설정을 ID화해서 바로바로 호출하고 맥락을 볼 수 있기 때문에 사용 및 관리가 편했다.

AI 시대, 시나리오 라이터를 지원하는 프롬프트와 툴 설계법
©Cygames

그러나 기존 작업물이 AI에 대응할 것을 고려하지 않았기 때문에 개선이 필요했다. 그간 정리된 캐릭터 정보는 꼭 필요한 항목 외에도 사람이 보면서 참고할 수 있는 대량의 정보들이 포함되어 있었다. 서식도 HTML이라 그대로 입력하기엔 너무 커서 사용할 모델의 입력 사이즈를 초과했다. 그래서 필요한 정보만 텍스트 형식으로 풀었다.

현재 최신 모델은 프롬프트로 입력할 수 있는 문자 수가 70만 자 이상이 되는 것도 있지만, 프롬프트가 길어질수록 AI 처리 기간이 걸려 답변이 돌아올 때까지의 시간이 길어진다. 뿐만 아니라 AI 요금은 입력된 문자 수에 비례해서 늘어나기 때문에, 프롬프트가 길어질수록 비용도 증가한다. 또한 긴 프롬프트를 사용하면 노이즈가 늘어나서 AI의 답변이 부정확해지는 문제가 있었다. 그런 만큼 프롬프트의 길이는 최대한 짧고 명료하게, 불필요한 부분이 들어가지 않게끔 해야 했다.

AI 시대, 시나리오 라이터를 지원하는 프롬프트와 툴 설계법
매번 프롬프트로 설정과 시나리오를 넣고 감수하는 것이 아닌 ©Cygames

AI 시대, 시나리오 라이터를 지원하는 프롬프트와 툴 설계법
ID화해서 쉽게 감수가 이루어지게끔 하는 것이 목표였다 ©Cygames

이를 위해서 캐릭터 프로필 항목을 표 형식으로 정리하고, 너무 긴 항목을 우선 적절한 길이로 추출하는 과정을 거쳤다. 이 과정에서도 프로그램으로 바로 추출하지 않고, 컨플루언스 페이지를 HTML로 저장한 뒤 파이썬의 뷰티플소프(BeautifulSoup) 모듈로 제거했다. 그리고는 챗GPT에 입력해 필요한 항목만 추출했다. 타테후쿠 엔지니어는 필요한 항목만 찾아내는 태스크는 간단한 만큼, 프롬프트가 조금 길어져도 괜찮다고 조언했다.

사이게임즈의 캐릭터 설정 항목은 모든 캐릭터에서 고정되어 있던 만큼, 그 포맷을 확실하게 지정하고 JSON을 사용해 항목별로 나눠진 결과를 도출했다. 그리고 프롬프트에 사용할 때는 JSON에서 일반 텍스트로 변환, 필요한 정보만 추출해 모델의 성능을 최대한 활용할 수 있었다.

이렇게 새로 서식을 만든 뒤, Dify를 활용해 프로토타입을 구축했다. 앞서 언급한 것처럼 시나리오 집필 툴의 시나리오 ID를 입력하면 파이썬 코드로 시나리오 집필 툴의 API를 호출, 시나리오를 읽어들인다. 그리고 등장 캐릭터 리스트업과 설정까지 텍스트로 불러오고, 시나리오와 캐릭터 설정을 함께 프롬프트에 넣으면서 스스로 모순이 없는지 체크하는 과정이 진행된다. 해당 프로토타입은 시나리오 라이터들에게도 호응을 받았으나, 다소 엄격하게 지적해서 개연성과 재미가 떨어질 수 있다는 우려를 받았다. 다만 프로토타입은 감수가 완료된 시나리오를 대상으로 했던 만큼 엄격하게 지적하는 프롬프트로 설정했으며, 이후 표준 체크 등 조정을 거쳤다고 설명했다.

AI 시대, 시나리오 라이터를 지원하는 프롬프트와 툴 설계법
프롬프트가 짧고 명확해야 답변도 빠르고 정확한 만큼 ©Cygames

AI 시대, 시나리오 라이터를 지원하는 프롬프트와 툴 설계법
기존에 있던 캐릭터 설정 항목도 한 차례 정리하고 ©Cygames

AI 시대, 시나리오 라이터를 지원하는 프롬프트와 툴 설계법
ID화한 시나리오와 캐릭터 리스트업, 설정을 불러와서 바로 프롬프트에 대입해 감수가 진행되게끔 했다 ©Cygames


캐릭터 설정 및 단어 리스트, 과거 이력 참조로 특이한 말투도 OK


AI 시대, 시나리오 라이터를 지원하는 프롬프트와 툴 설계법
서브컬처하면 비가 온다는 평범한 말도 천공의 눈물 어쩌고 하는 중2병 캐릭터가 있기 마련이다 ©INVEN

그 다음으로는 특수한 말투를 사용하는 캐릭터의 대사 작성을 지원하는 AI 툴이었다. 특히 일본 서브컬처계에서는 캐릭터성을 표현하기 위해 특수한 말투는 물론 상당히 특이한 어휘를 구사하는 케이스도 많았다. 그런 만큼 신규 시나리오 라이터 혹은 그 캐릭터가 나온 스토리가 아닌 다른 스토리를 맡던 시나리오 라이터가 갑자기 동원될 때 곤란을 겪곤 했다.

타테후쿠 엔지니어는 처음엔 대사를 그 말투대로 변환하는 툴을 생각했으나, 시나리오 라이터들은 그보다는 그 캐릭터가 사용할 독특한 단어 선택을 AI가 지원해달라고 요청했다. 실제로 일본 서브컬처계에서는 특수한 말투를 쓰는 캐릭터들은 독자적인 어휘 리스트가 있으며, 이를 시나리오 라이터들도 단어와 의미를 한 세트로 묶어서 컨플루언스에 정리는 해둔 상태였다. 다만 그 리스트는 캐릭터당 1,000개 정도였던 만큼, 컨플루언스에서 일일이 검색해서 찾는 게 어려웠다.

AI 시대, 시나리오 라이터를 지원하는 프롬프트와 툴 설계법
그런 캐릭터를 구현할 때 단어의 용례는 따로 정리했지만, 상당히 방대해서 일일이 검색하기 번거로웠다 ©Cygames

그래서 시나리오 라이터가 작성하고 싶은 대사를 입력하면, 어절마다 사용할 수 있는 적절한 단어 후보를 내주는 툴을 만들었다. 대사를 통째로 변환한 결과를 내는 것이 아닌, 활용할 수 있는 단어 후보를 5개 제시하는 방향으로 고안한 것이다.이를 위해 대량의 과거 대사와 단어 리스트를 프롬프트에 포함하고, 데이터를 대조에 캐릭터가 어떤 식으로 단어를 사용하는지 이해하도록 했다. 그리고는 대사 작성 때 쓸 수 있는 단어 후보를 리스트에서 찾고, 입력된 대사를 어절 단위로 나눠서 후보군을 5개씩 출력하게끔 했다.

타테후쿠 엔지니어는 이러한 규칙을 담아 툴을 Dify로 작성했으며, 반드시 단어 리스트에서 인용하도록 엄격하게 프롬프트를 설정했다. 그래야 임의로 단어를 창작하지 않고 원하는 대로 답을 도출할 수 있었기 때문이다. 프로토타입 제작 후에는 시나리오 라이터들이 직접 사용했으며, 단어가 정말 리스트에 존재하는 것인지 알 수 있게끔 출처를 적어달라는 피드백을 전했다. 또한 대사를 한 줄 한 줄 복사하는 것이 어려우니 시나리오 집필 툴에서 바로 불러올 수 있게끔 해달라는 요구도 있었다. 그래서 단어 리스트의 내용을 통째로 내보내서 출처가 확인되게끔 했으며, 시나리오 집필 툴에서 불러오게 해달라는 피드백은 Dify가 시나리오 집필 툴 API를 불러올 수 있어 가능한 만큼 버전 업그레이드로 대응할 예정이라고 설명했다.

AI 시대, 시나리오 라이터를 지원하는 프롬프트와 툴 설계법
시나리오 라이터가 정상적인 문장을 쓰면, 그 캐릭터가 쓸 단어 후보군을 출력하는 형태로 구현했다 ©Cygames


AI의 방언 및 오탈자 감수는 상당한 수준, 요는 문맥과 태스크 분류


AI 시대, 시나리오 라이터를 지원하는 프롬프트와 툴 설계법
기존에는 방언을 일일이 그 지역 출신 시나리오 라이터가 감수하는 방식이었다 ©Cygames

그 다음 요구 사항은 방언 감수 툴이었다. 특히 방언의 경우, 이전에는 해당 지역 출신인 시나리오 라이터가 슬랙을 통해서 검수 요청을 받고 처리하는 식이라 일주일에 1~2회 정도 진행하는 정도였고, 병목 현상이 잦았다. 그래서 각종 논문을 조사한 뒤, 챗GPT-4o 기준으로 방언을 얼마나 커버할 수 있는지 조사했다. 간사이 방언 외에 일본 내의 대부분 지역 방언을 커버하고 있지만, 그것만으로는 불충분했다. 캐릭터성을 고려한 방언 감수가 필요했기 때문이다.

이론상 캐릭터별 방언 정보를 프롬프트에 넣으면 캐릭터에 맞춘 방언 감수는 진행할 수 있었다. 그렇다면 여기에 어떤 데이터를 활용해야 할지가 관건이었다. 그래서 개발 운영 지원 팀은 캐릭터 설정 외에도 이미 출시된 시나리오에 있는 캐릭터들의 과거 대사를 수집, 프롬프트에 포함했다. 그렇게 해서 왜 그런 표현 방식을 선택했는지 설명할 수 있고, 맥락 이해도 쉬웠다.

AI 시대, 시나리오 라이터를 지원하는 프롬프트와 툴 설계법
같은 지역 방언도 화자 즉 캐릭터의 성격에 따라 달라지는 만큼 ©Cygames

AI 시대, 시나리오 라이터를 지원하는 프롬프트와 툴 설계법
그 특징을 반영한 변환이 필요했다 ©Cygames

그리고 방언 감수 프롬프트는 총 4개 부분으로 구성했다. 먼저 출력할 내용과 형식을 넣고, 작성하고 싶은 대사, 과거 대사 200행, 마지막으로 캐릭터 설정을 넣는 방식이었다. 이를 Dify로 만든 툴에 입력하면 감수 결과가 출력되며, 같은 방언이라도 캐릭터의 성격에 따라 다른 결과가 나오고 그런 표현을 사용한 이유가 각각 제시된다. 그렇게 테스트를 거친 뒤에는 컨플루언스에서 바로 캐릭터 이름과 감수하고 싶은 대사를 따오게 한 뒤, 전부 프롬프트에 넣고 GPT-4o를 호출해 최종 감수 결과를 출력하게끔 했다.

AI 시대, 시나리오 라이터를 지원하는 프롬프트와 툴 설계법
이미 출시된 시나리오와 해 ©Cygames

AI 시대, 시나리오 라이터를 지원하는 프롬프트와 툴 설계법
©Cygames

AI 시대, 시나리오 라이터를 지원하는 프롬프트와 툴 설계법
©Cygames

최종적으로 요구된 사항이 오탈자 검출 툴이었다. 사이게임즈는 이전에 BERT라는 모델을 사용했으나, 검출 정밀도 면에서 점차 문제가 생겼다. 그래서 2025년 새로운 AI를 활용해 다시 제작에 나섰다. 특히 일반적인 오탈자 외에 '라' 누락(ら抜き), '이' 누락(い抜き), '사' 과다(さ入れ) 표현, 보조동사의 한자 표기, 상용한자표에 없는 읽기 방식(표외독) 검출이 핵심이었다.

오탈자 검출 툴은 시나리오 집필 툴에서 오탈자 검출 실행 버튼을 누르면 시나리오를 분석하여 검출 결과 목록을 별도 화면으로 표시하게끔 했으며, 검출 정밀도를 높이기 위해 대상별로 나누어 AI를 호출하고 개별적으로 실행하는 구성으로 제작했다. 특히 상용한자표에 없는 읽기 방식 검출은 여러 번 실행할 필요가 있었다. 그렇게 검출한 이후, 결과를 취합하여 출력하게끔 했다.

AI 시대, 시나리오 라이터를 지원하는 프롬프트와 툴 설계법
기존에 쓰던 오탈자 검출 툴이 예전 모델이라 새로운 AI 모델을 적용해서 제작했다 ©Cygames

한편, 오탈자 검출할 때 단순히 기계적인 검출이 아닌 캐릭터성을 고려한 검출도 필요했다. 그래서 과거 대사를 10행 정도 포함하고, 엑스트라나 대사가 과거 대사가 없던 캐릭터의 대사는 포함되지 않게끔 정리했다. 일본에서는 보통 '쓰고 있다(書いている)'에서 '이(い)'를 생략한 '쓰고 있다(書いてる)'로 쓰는 경우가 많은데, 이렇게 사용된 부분들이 틀린 것은 아니지만 시나리오 라이터들이 확인해서 상황에 맞게 쓰고 싶다는 요구가 있었다. 그래서 세 가지 케이스를 AI가 검출하도록 하되, 절차를 세세하게 지정하기 위해서 프롬프트를 반복해서 수정한 뒤에 활용하고 있다.

그 다음은 보조 동사가 종종 한자로 쓰인 경우, 그 부분을 검출하는 기능이었다. 예시로 나온 단어 중 "먹어 보다(食べてみる)"에서 '보다(みる)' 부분이 보조동사로, 일본어 타이핑 특성상 알파벳으로 음을 입력하고 변환하는 과정에서 종종 기계적으로 한자가 들어가는 일이 있다. 혹은 문맥에 따라 다른 동사를 보조동사 취급하는 경우도 있다. 이러한 부분은 현재 여러 테스트 케이스를 확인하면서 조정 중이다.

AI 시대, 시나리오 라이터를 지원하는 프롬프트와 툴 설계법
보조동사의 한자 표기 등 세밀한 부분은 현재도 피드백을 받으면서 분석, 조정 중이다 ©Cygames

이외에도 특이하게 한자를 읽는 경우를 체크하는 것이었다. 먼저 한자에 읽는 방법을 표기하는 후리가나를 붙이고, 그 읽기 방식이 상용한자표에 잆는지 조사해서 없으면 검출하는 식이다. 여기에 최신 AI를 사용해 모든 한자에 후리가나를 붙였으며, 교정 담당자에게 의뢰해 테스트 예문을 여럿 준비했다. 그리고 한자별 모든 읽기 방식을 열거한 뒤, 문맥에 적절한 읽기 방식을 선택하게 한 후 AI가 어디까지 할 수 있는지 체크했다. 그리고 읽기가 어려운 문장을 올바로 읽을 수 있는지 따로 체크, 한자 읽기 방식에 대한 지식과 문맥 이해 태스크를 분해해 모델별 성능을 파악했다. 어느 정도 가능하다고 판단됐을 때 Dify로 테스트를 했으나, 내용이 복잡해 Dify 워크플로우 대신 엑셀로 출력해 전달하는 방식으로 진행했다.

AI 시대, 시나리오 라이터를 지원하는 프롬프트와 툴 설계법
특이하게 읽는 한자에 대응하기 위해 우선 모든 한자 읽기를 AI가 체크하게 하고 ©Cygames

AI 시대, 시나리오 라이터를 지원하는 프롬프트와 툴 설계법
지식과 활용을 분리, 모델 성능을 우선 파악한 뒤에 Dify로 툴을 구축했다 ©Cygames

이러한 과정을 거쳐 만들어진 오탈자 검수 툴은 시나리오 집필 툴과 같이 AWS 위에 구축하고, 시나리오 집필 툴에서 버튼을 누르면 바로 실행하고 결과를 확인할 수 있게끔 했다. 처음에는 세세한 정보를 다 보여줬으나, 노이즈가 많다는 지적 때문에 각 맥락에 맞춰 검출된 사항과 수정 예시 정도만 드러났다. 그리고 지적과 관련해서는 라이터가 일부러 수식적, 수사적 표현을 위해 넣었을 가능성이 있는지 또 한자 읽기에 예외적인 사례를 적용했을 가능성이 있는지 등 체크도 필요하다는 피드백이 있었다. 이 부분에 대해서도 개선안을 현재 궁리 중에 있다고 설명했다.

AI 시대, 시나리오 라이터를 지원하는 프롬프트와 툴 설계법
시나리오 라이터들이 시나리오 툴에서 불러올 수 있게 해달라고 피드백했고, 그에 맞춰 AWS 위에 구현했다 ©Cygames


프롬프트 단축, 데이터, Dify 활용법이 키포인트


AI 시대, 시나리오 라이터를 지원하는 프롬프트와 툴 설계법
©Cygames

마지막으로 그는 그간 예시로 언급된 Dify와 관련한 조언을 남겼다. Dify는 텍스트를 참조할 때 지식 기능, 즉 여러 문장을 등록하고 워크플로우 실행 시 검색어로 문서를 검색하는 메커니즘을 사용한다. 그렇지만 종종 API 오류로 인해 API를 통한 키워드 등록이 어렵고, 구축한 지식을 다른 Dify 환경으로 이관이 불가능했다. 그렇다고 Dify 이외의 소프트웨어를 사용하자니 앱을 배포할 때 수고가 늘어났다.

이를 해결하기 위해 참조하고 싶은 문장을 파이썬 코드 안에 하드코딩하는 방법을 사용했다. 함수의 인자로 캐릭터 이름을 전달받은 뒤, 해당하는 문장을 반환하는 식이었다. 그렇게 하면 처음 작성할 때는 번거롭지만 한 번 구축하면 Dify 내에서 처리할 수 있고, 툴 배포도 쉬워서 편리했다.

AI 시대, 시나리오 라이터를 지원하는 프롬프트와 툴 설계법
Dify 자체의 문제를 해결하기 위해 파이썬 코드 안에 하드코딩하는 방법을 사용하고 ©Cygames

AI 시대, 시나리오 라이터를 지원하는 프롬프트와 툴 설계법
보안을 위해 마이크로소프트 엔트라 ID의 애플리케이션 프록시를 활용했다 ©Cygames

한편, 보안을 위해 Dify 앱에 접근 제한을 거는 조치도 필요했다. 클라우드 버전 Dify에서는 이런 조치가 편했지만, 사내 전용 API를 호출하고 있는 만큼 클라우드 버전 사용 시에는 외부 공개가 될 여지가 있었다. AWS에 호스팅하자니 관리가 번거로웠다. 그래서 인프라 단에서 접근할 수 있는 사용자를 한정했으며, 이때 마이크로소프트 엔트라 ID라는 접근 관리 서비스의 애플리케이션 프록시를 활용했다.

그를 비롯한 사이게임즈의 개발 운영 지원 팀은 이러한 과정을 통해 시나리오 라이터를 위한 AI 툴과 프롬프트 설정을 진행했지만, 좀 더 완성도 높은 단계를 위해서 현재도 고군분투하는 중이다. 그는 가장 중요한 사항으로 프롬프트에 가장 필요한 정보만 넣고 짧게 만들어서 시간과 비용을 절약하고 품질을 개선하는 것 / AI가 맡을 역할을 분석해 최적의 데이터를 모으는 것 / Dify 워크플로우에서 테스트를 참조하는 법과 제한을 거는 법을 강조하면서 "AI로 시나리오 라이터를 잘 지원해 최고의 시나리오를 만드는 것에 도움이 되기를 바란다"고 전했다.

AI 시대, 시나리오 라이터를 지원하는 프롬프트와 툴 설계법
©Cygames