"민트망고"의 두 판 사이의 차이
(→지도교수) |
(→상세설계 내용) |
||
(같은 사용자의 중간 판 69개는 보이지 않습니다) | |||
16번째 줄: | 16번째 줄: | ||
===구성원 소개=== | ===구성원 소개=== | ||
− | 서울시립대학교 | + | 서울시립대학교 컴퓨터과학부 2018920061 홍석기(팀장) |
− | 서울시립대학교 | + | 서울시립대학교 컴퓨터과학부 2019920035 이석준 |
− | 서울시립대학교 | + | 서울시립대학교 컴퓨터과학부 2019920007 김동욱 |
− | 서울시립대학교 | + | 서울시립대학교 컴퓨터과학부 2019920030 송승우 |
− | |||
− | |||
==서론== | ==서론== | ||
===개발 과제의 개요=== | ===개발 과제의 개요=== | ||
====개발 과제 요약==== | ====개발 과제 요약==== | ||
− | + | ||
+ | ◇ ChatGPT와의 대화를 통해 진행하는 추리게임의 개발을 목표로 한다. | ||
+ | |||
+ | ◇ 플레이어는 게임속에서 직접 이동하며 증거를 수집하여 범인을 찾는다. | ||
+ | |||
+ | ◇ 증거물 뿐 아니라 ChatGPT가 탑재된 등장인물들과의 대화를 통해 증언을 얻을 수 있다. | ||
+ | |||
+ | ◇ 기존의 선택지 형 대화에서 벗어나 플레이어가 직접 만들어가는 대화를 통해 능동적으로 진행하도록 한다. | ||
+ | |||
====개발 과제의 배경==== | ====개발 과제의 배경==== | ||
− | + | ◇ 기존의 추리게임은 선형적인 진행을 따라가는 것이 강제되는 면이 많다. | |
+ | |||
+ | ◇ ChatGPT는 현재 논문 작성, 광고 카피 등 다양한 분야에서 활용되고 있는 생성형 AI이다. | ||
+ | |||
+ | ◇ 따라서 생성형 AI 응답으로 NPC 상호작용을 자연스럽게 구현한다면, 기존의 선형적이고 형식적인 게임 흐름에서 벗어나 플레이어가 직접 게임 속의 인물들과 대화하고 이야기를 풀어나가는 체험을 할 수 있을 것이다. | ||
+ | |||
====개발 과제의 목표 및 내용==== | ====개발 과제의 목표 및 내용==== | ||
− | + | ◇ 플레이어가 특정 군중에 섞여있는 범인(ex.마피아)을 찾아내는 것을 목표로 하는 게임을 제작한다. | |
+ | |||
+ | ◇ 플레이어와 대화할수 있는 NPC를 만들고, 대화를 통해 플레이어에게 단서를 제공하도록 구현한다. | ||
+ | |||
+ | ◇ 7~8인의 군중을 프롬프트로 NPC설정을 부여하며, 설정에 따라 각각 고유의 행동을 하도록 제작한다. | ||
+ | |||
+ | ◇ 플레이어가 돌아다닐 수 있는 공간을 제작하고, 증거품을 배치한다. | ||
===관련 기술의 현황=== | ===관련 기술의 현황=== | ||
====관련 기술의 현황 및 분석(State of art)==== | ====관련 기술의 현황 및 분석(State of art)==== | ||
*전 세계적인 기술현황 | *전 세계적인 기술현황 | ||
− | + | ||
+ | ◇ 유니티 | ||
+ | c# 을 지원하는 게임엔진으로, 게임을 만드는데 필요한 대부분의 기능을 무료로 지원해준다. | ||
+ | |||
+ | ◇ gpt 3.5 | ||
+ | GPT(Generative Pre-trained Transformer)는 OpenAI에서 개발한 자연어 생성 모델로 주어진 텍스트의 다음 단어를 예측하는 태스크를 학습하며, 이를 통해 사람이 쓴 것처럼 의미 있는 텍스트를 생성 가능하다. | ||
+ | ChatGPT는 이를 기반으로 하는 챗봇으로서 사용자로부터 입력받은 문장을 이해하고, 관련있는 답변을 생성할 수 있으며 실제 대화처럼 일상적인 언어를 사용하여 사용자와 의사소통이 가능하다. | ||
+ | 최근 ChatGPT가 공저자로 등록된 논문이 공개되기도 했으며, 배우 라이언 레이놀즈의 "민트모바일" 광고의 대본을 작성하는 데에도 사용되거나 ChatGPT를 활용한 게임이 등장하는 등 그 활용 범위가 넓어지는 추세이다. | ||
+ | |||
+ | 이와 같은 거대언어모델(LLM, Large Language Model)을 활용할 때에는 프롬프트가 활용된다. | ||
+ | 이는 모델에게 지시나 질문과 같은 맥락, 입력이나 예시와 같은 여러가지 세부사항을 포함한다. | ||
+ | 이러한 요소들을 통해서 모델에게 더 적절하게, 정확하게 지시하고 그로부터 얻는 결과의 퀄리티를 향상시킨다. | ||
+ | |||
*특허조사 및 특허 전략 분석 | *특허조사 및 특허 전략 분석 | ||
− | + | -없음- | |
+ | |||
*기술 로드맵 | *기술 로드맵 | ||
− | + | ◇ 유니티 : 사용자가 활동하는 장소 및 증거품, 등장인물 등의 3D 모델링 | |
+ | |||
+ | ◇ ChatGPT : 게임 상에 등장하는 인물들과의 대화 구현 | ||
====시장상황에 대한 분석==== | ====시장상황에 대한 분석==== | ||
*경쟁제품 조사 비교 | *경쟁제품 조사 비교 | ||
− | + | ◇ The Shapeshifting Detective | |
+ | |||
+ | 얼굴을 바꾸는 능력이 있는 형사가 얼굴을 바꾸고 용의자들을 심문하여 형사에게 말하지않는 정보를 얻고 이를 통해 사건을 해결한다. | ||
+ | |||
+ | 매 회차 범인이 달라지며, 선택에 따라 결말이 바뀐다. 하지만 직접 움직이지 않고 심문만을 하는 플레이를 통해 자유도가 떨어지며, 얼굴을 바꾸며 조사를 할 때 걸리는 시간 때문에 재미가 반감된다. | ||
+ | |||
+ | ◇ The Painscreek Killings | ||
+ | 마을에서 벌어진 살인사건을 해결하기 위해 파견된 기자로서 마을을 돌아다니며 얻는 증거를 통해 살인사건을 해결하는 추리게임. | ||
+ | |||
+ | 단서와 단서 사이의 짜임새가 있고, 비밀번호와 연상되는 힌트를 알아내는 난이도가 꽤 높아 호불호가 갈린다. | ||
+ | |||
+ | 하지만 정해진 스토리, 단서를 따라가야 결말이 나오기때문에 하나의 단서를 찾지 못하거나 해결하지 못하여 막히는 등 추리에 대한 자유도가 떨어질 수 있다. | ||
+ | |||
+ | ◇ Uncover the Smoking gun | ||
+ | CHATGPT 를 이용한 NPC(로봇)를 심문하여 살인사건의 범인을 찾는 추리게임. | ||
+ | |||
+ | 기존의 추리게임에 비해 자유도가 높고, 사건과 다른 질문에도 재미있게 반응을 해준다. 중간중간 CHATGPT 의 답변이 엉뚱할 때가 있는데 이에대하여 시스템과부화 라는 컨셉을 이용하여 해결을 하였다. 최후에 몇 가지의 질문에 대한 답변을 통해 수사의 평가가 진행된다. | ||
+ | |||
+ | 하지만 CHATGPT 의 대화를 할때의 딜레이가 존재하고, 가끔 중요한 단서가 엮인 질문에 엉뚱한 답변으로 게임 진행에 지장을 주는 경우가 있다. | ||
+ | |||
*마케팅 전략 제시 | *마케팅 전략 제시 | ||
− | + | ◇ 온라인 스토어 유료 판매 | |
+ | |||
+ | PC게임을 즐기는 유저층의 대다수가 온라인스토어(STEAM , 에픽스토어 등)에서 구매한 경험이 있다. PC 온라인 스토어중 STEAM이 압도적인 유저층을 보유함 따라서 STEAM에 제품을 유료로 업로드 할 예정이다. | ||
+ | |||
+ | 타겟층은 20~30대이며 생성형 AI에도 익숙한 세대인 만큼 거부감도 덜할 것으로 판단되어진다. | ||
===개발과제의 기대효과=== | ===개발과제의 기대효과=== | ||
====기술적 기대효과==== | ====기술적 기대효과==== | ||
− | + | ◇ 사용자들이 CHATGPT 와의 대화를 통해 CHATGPT에 대한 접근성을 높이고, 프롬프트의 질을 향상시킨다. | |
+ | |||
====경제적, 사회적 기대 및 파급효과==== | ====경제적, 사회적 기대 및 파급효과==== | ||
− | + | ◇ 사용자들이 게임을 통해 즐거움을 얻는다. | |
+ | ◇ 사용자들이 게임을 클리어 하기위한 논리적인 사고를 통해 문제해결 능력을 향상시킨다. | ||
===기술개발 일정 및 추진체계=== | ===기술개발 일정 및 추진체계=== | ||
====개발 일정==== | ====개발 일정==== | ||
− | + | ||
+ | [[파일:민트망고_개발일정.png]] | ||
+ | |||
====구성원 및 추진체계==== | ====구성원 및 추진체계==== | ||
− | + | [[파일:조직원도.png]] | |
+ | |||
+ | ChatGPT 프롬프트 엔지니어링: 김동욱 | ||
+ | |||
+ | Unity 게임 개발 : 홍석기, 송승우 | ||
+ | |||
+ | 기획 : 이석준 | ||
==설계== | ==설계== | ||
===설계사양=== | ===설계사양=== | ||
====제품의 요구사항==== | ====제품의 요구사항==== | ||
− | + | ◇ ChatGPT와의 대화를 통해 진행하는 추리게임의 개발을 목표로 한다. | |
+ | |||
+ | ◇ 플레이어는 게임속에서 직접 이동하며 증거와 증언을 수집한다. | ||
+ | |||
+ | ◇ 기존의 선택지 형 대화가 아닌 능동적인 질문으로 게임을 진행한다. | ||
+ | |||
====설계 사양==== | ====설계 사양==== | ||
− | + | [[파일:민트망고_설계사양.png]] | |
===개념설계안=== | ===개념설계안=== | ||
− | + | 가. 벤치마킹 | |
+ | |||
+ | ◇ Uncover the Smoking Gun | ||
+ | |||
+ | - chatgpt를 추리게임에 접목한 게임이다. | ||
+ | |||
+ | - 아직 데모버전으로 정식 출시가 아니다. | ||
+ | |||
+ | - 게임 구조 | ||
+ | |||
+ | ●맵을 돌아다니며 증거물과 텍스트를 읽어 사건을 전말을 파악한다. | ||
+ | |||
+ | ●파악한 증거로 NPC와의 대화를 통해 사건의 힌트를 얻는다. | ||
+ | |||
+ | ●마지막에 사건의 전말에 대한 질문에 올바른 답을 입력할 경우 게임을 클리어하게 된다. | ||
+ | |||
+ | - 문제 해결 방식 | ||
+ | |||
+ | 1. GPT의 불완정성 | ||
+ | |||
+ | CHATGPT는 매번 다른 답변, 가끔은 엉뚱한 답변이 나오기 때문에 이 때 게임 진행이 막혀버리면 사용자에게 불쾌감을 줄 수 있다. | ||
+ | |||
+ | 1-1. 해결방안 | ||
+ | |||
+ | - CHATGPT의 역할을 사용자의 시간의 단축 혹은 사건의 구체화 정도로 설정하여, 만약 GPT에게 아무런 유용한 정보를 얻지 못하더라도 증거 수집을 통해 우회하여 사건을 해결할 수 있다. | ||
+ | |||
+ | - NPC를 로봇으로 설정하고, '과부하'라는 컨셉을 부여해 사용자에게 GPT가 엉뚱한 소리를 해도 납득할 만한 게임적 장치를 설정한다. | ||
+ | |||
+ | 2. GPT의 일관성 | ||
+ | |||
+ | - CHATGPT가 사용자에게 대답하는 어투와 방식이 항상 비슷하기 때문에 NPC가 아무리 많아도 지루하다는 느낌을 줄 수 있다. | ||
+ | |||
+ | 2-1. 해결방안 | ||
+ | |||
+ | - 프롬프트를 적절하게 조절하여 각 NPC마다 다른 말투가 나오도록 설정한다. | ||
+ | |||
+ | - NPC마다 알고있는 정보를 다르게 하여 말을 거는 대상에 따라 적절한 정보를 얻을 수 있도록 유도한다. | ||
+ | |||
+ | ◇ The Painscreek Killings | ||
+ | |||
+ | - 마을을 돌아다니며 증거를 수집하고 사건을 해결한다. | ||
+ | |||
+ | - 게임 구조 | ||
+ | |||
+ | ●맵을 돌아다니며 증거를 수집하여 사건을 해결한다. | ||
+ | |||
+ | ●얻은 증거를 통해 퍼즐을 해결하는 빈도가 많다. | ||
+ | |||
+ | ●증거를 얻지 못한다면 진행이 막히게 된다. | ||
+ | |||
+ | - 문제 해결 방식 | ||
+ | |||
+ | 1. 퍼즐의 일관성 | ||
+ | |||
+ | 숫자를 입력하는 자물쇠, 열쇠를 이용하는 자물쇠 두가지가 대부분의 퍼즐이다. 숫자를 입력하는 자물쇠의 경우 날짜에 관련한 숫자를 입력한다면 외국게임 이기 때문에 월/일/년 순으로 입력해야 하며 증거가 2000년 1월 2일 이라면 010200 이 답이어야 하지만, 122000, 1200 등 답의 일관성이 없어 답을 알아도 자물쇠를 풀지 못하는 경우가 발생한다. | ||
+ | |||
+ | 1-1. 해결방안 | ||
+ | |||
+ | - 이러한 증거품에 대한 일관성을 지키며, 튜토리얼 을 통해 답을 알아도 퍼즐을 풀지 못하는 경우를 줄인다. | ||
+ | |||
+ | - 메모장 기능을 이용하여 언제, 어떻게 얻은 증거인지 메모할 수 있도록 한다. | ||
+ | |||
+ | 2. 진행 방식 | ||
+ | |||
+ | 퀘스트, 가이드가 없으며, 일기장, 편지, 신문기사 등 자신이 찾은 증거를 이용하여 직접 스토리를 알아가도록 유도한다. 엔딩 후에 놓친 증거. 스토리 설명이 없기 때문에 궁금증이 남는다. 또한 가이드가 없기 때문에 하나의 증거에 막히거나, 잘 찾지 못해 진행이 막히는 일이 발생한다. | ||
+ | |||
+ | 2-1. 해결 | ||
+ | |||
+ | - GPT API 를 이용한 NPC 와의 대화를 통해 스토리의 진행에 대한 가이드가 가능하다. | ||
+ | |||
+ | - 플레이어가 직접 증거품을 통해 스토리를 알아가도록 하고, 엔딩 후에 스토리 설명을 보여주도록 한다. | ||
+ | |||
+ | 나. 기능 설계 | ||
+ | |||
+ | ◇ 증거품 상호작용 : 증거품을 클릭했을 때 앞으로 가져오고 증거품을 돌려볼 수 있다. | ||
+ | |||
+ | 1. 현재 오브젝트의 위치를 저장하고, 카메라 앞의 위치로 물체의 위치를 변경시킨다. | ||
+ | |||
+ | 2. 마우스의 좌클릭입력을 받고 드래그하여 물체의 회전에 변화를 준다. | ||
+ | |||
+ | 3. 마우스 휠 입력에 따라 물체를 확대, 축소 시킨다. | ||
+ | |||
+ | 4. Q를 눌러 인벤토리로 증거품을 가져온다. | ||
+ | |||
+ | ◇ NPC 상호작용 : NPC를 클릭했을 때 대화창을 열고 NPC 와 대화를 한다. | ||
+ | |||
+ | 물체를 클릭했을 때 NPC태그를 가진 물체면 대화창을 활성화 시킨다. | ||
+ | |||
+ | InputField를 통해 질문을 입력받는다. | ||
+ | |||
+ | 입력받은 질문을 ChatGPT API를 통해 답변을 받는다. | ||
+ | |||
+ | 받은 답변을 Text를 통해 UI에 보여준다 | ||
+ | |||
+ | ◇ 인벤토리 상호작용 : 인벤토리를 열고 가지고있는 정보를 확인한다. | ||
+ | |||
+ | I를 눌렀을 때 인벤토리를 활성화 시킨다. | ||
+ | |||
+ | 인벤토리에 가지고있는 증거를 클릭하여 증거품이 가지고있는 정보를 확인한다. | ||
+ | |||
+ | ◇ 설정 상호작용 : 설정창을 열고 설정을 조절한다. | ||
+ | |||
+ | ESC를 눌러 설정창을 띄운다. | ||
+ | |||
+ | 볼륨, 마우스 감도, 해상도와 같은 기능을 제어한다. | ||
+ | |||
+ | ◇ 결과 제출 : 결과를 제출하는 창을 띄우고 결과를 제출한다. | ||
+ | |||
+ | Z를 눌러 결과를 제출하는 창을 띄운다. | ||
+ | |||
+ | 가지고있는 아이템들을 클릭하여 제출한다. | ||
+ | |||
+ | 제출하기 버튼을 클릭하여 결과를 제출한다. | ||
+ | |||
+ | 다. UI 별 상세 설명 | ||
+ | |||
+ | 1. 시작 화면 | ||
+ | |||
+ | 게임 시작과 종료, 설정 화면, 크레딧 화면에 진입할 수 있다. | ||
+ | |||
+ | |||
+ | 2-a. 게임 진행 : 메인 화면 | ||
+ | |||
+ | ①게임은 1인칭 시점으로 진행. | ||
+ | |||
+ | ②wasd로 이동하고 마우스로 시점 변경이 가능하다. | ||
+ | |||
+ | ③가운데에 조준점이 있고 그 위에 대상(NPC, 증거품 등)을 올린 뒤 E를 눌러 상호작용 할 수 있다. | ||
+ | |||
+ | ④좌측 하단에는 게임상의 시간과 날짜가 표시된다. | ||
+ | |||
+ | ⑤우측 상단에는 미니맵이 존재하여 현재 위치를 보여준다. | ||
+ | |||
+ | ⑥I를 눌러 증거 확인으로 진입한다. | ||
+ | |||
+ | |||
+ | 2-b. 게임 진행 : 증거 확인 | ||
+ | |||
+ | ①좌측에는 증거품의 사진과 상세 설명 등이 적혀있다. | ||
+ | |||
+ | ②우측에는 증거품의 목록이 아이콘으로 표시된다. | ||
+ | |||
+ | ③우측 상단의 탭을 통해 증거와 인물 정보를 구분하여 볼 수 있다. | ||
+ | |||
+ | ④각 증거나 인물을 클릭 시 내용을 확인할 수 있다. | ||
+ | |||
+ | |||
+ | 2-c. 게임 진행 : NPC 대화 | ||
+ | |||
+ | ①시점이 NPC와 마주보는 형태로 변경된다. | ||
+ | |||
+ | ②하단에 대화창이 나온다. | ||
+ | |||
+ | ③좌측 상단에 대화 종료와 증거 확인 버튼이 있다. | ||
+ | |||
+ | |||
+ | 3. 일시정지 | ||
+ | |||
+ | ①게임이 중지된다. | ||
+ | |||
+ | ②재개, 도움말, 설정, 게임종료 버튼이 있다. | ||
+ | |||
+ | |||
+ | 4. 설정 | ||
+ | |||
+ | ①바 형태의 UI를 통해 감마와 사운드 조절을 할 수 있다. | ||
+ | |||
+ | ②마우스 조작 반전, 키설정 등을 변경할 수 있다. | ||
+ | |||
+ | |||
+ | 5. 도움말 | ||
+ | |||
+ | ①캐릭터의 조작법을 알려준다. | ||
+ | |||
+ | ②각 기능마다 최초 사용 시 그 사용법을 알려주기 위한 팝업이 뜨고, 게임이 일시정지 된다. 여기서는 그 팝업을 모아 볼 수 있다. | ||
+ | |||
+ | |||
+ | 6. 지도 | ||
+ | |||
+ | ①메인 화면에서 M으로 진입한다. | ||
+ | |||
+ | ②화면 전체를 가리지 않는 수준에서 플레이 공간 전체를 볼 수 있다. | ||
+ | |||
+ | |||
+ | 7-a. 결과 제출 : 증거와 인물 제시 | ||
+ | |||
+ | ①2-b 증거 확인과 유사한 화면이 등장한다. | ||
+ | |||
+ | ②우측 상단의 인물/증거 탭은 비활성화된다. | ||
+ | |||
+ | ③좌측에는 결과를 판정하는 인물이 등장한다. | ||
+ | |||
+ | ④우측의 증거품 아이콘을 클릭하여 보여줄 증거품을 선정한다. | ||
+ | |||
+ | ⑤증거품 제출 시 탭이 인물 탭으로 변경되고 범인을 제시하도록 한다. | ||
+ | |||
+ | |||
+ | 7-b. 결과 제출 : 결과 확인 | ||
+ | |||
+ | ①제시한 결과가 맞는지의 여부를 알려준다. | ||
+ | |||
+ | ②이후 시작화면, 크레딧, 게임종료로 진입할 수 있다. | ||
===이론적 계산 및 시뮬레이션=== | ===이론적 계산 및 시뮬레이션=== | ||
− | + | ◇ 기존 ChatGPT API를 활용한 몇 개의 게임을 찾아본 결과 프롬프트의 설정에 따라 비교적 상황, 배경에 따른 적절한 대답을 하는 것을 볼 수 있었고, 심지어는 게임과는 관련없는 주제에 대해 질문을 해도 자연스러운 대답을 출력했다. | |
+ | |||
+ | ◇ 무료로 제공되는 ChatGPT 3.5에게 배경과 상황, 인물의 성격 등을 설정하고 대화했을 때, 플레이어의 태도에 따른 어조의 변화 등이 반영되는 것을 볼 수 있었다. | ||
+ | |||
+ | ◇ 하지만 가끔 모르는 내용에 대해 이상한 대답이 나온다거나, 설정한 것과 다른 양상의 대답이 나오기도 했다. | ||
+ | |||
+ | ◇ 따라서 실제 API를 이용하여 프롬프트를 전달할 때에는 여러 상황에 대해 대처할 수 있도록 자세하게 묘사하는 것이 중요할 것이라고 예상한다. | ||
===상세설계 내용=== | ===상세설계 내용=== | ||
− | + | ◇ 유즈케이스 다이어그램 | |
+ | |||
+ | [[파일:민트망고_유즈케이스1.png]] | ||
+ | |||
+ | ◇ 시퀀스 다이어그램 | ||
+ | |||
+ | [[파일:Untitled_(3).png]] | ||
+ | |||
+ | [[파일:민트망고_시퀀스2.png]] | ||
+ | |||
+ | [[파일:민트망고_시퀀스3.png]] | ||
+ | |||
+ | [[파일:민트망고_시퀀스4.png]] | ||
+ | |||
+ | [[파일:민트망고_시퀀스5.png]] | ||
+ | |||
+ | |||
+ | ◇ 클래스 다이어그램 | ||
+ | |||
+ | [[파일:민트망고_클래스.png]] | ||
+ | |||
+ | PlayerController 클래스 | ||
+ | |||
+ | 플레이어가 상호작용하는 모든 부분을 컨트롤 하여 PanelManager, DialogManager, EvidenceManager 에게 동작을 요청한다. | ||
+ | |||
+ | PanelManager 클래스 | ||
+ | |||
+ | 플레이어의 상호작용에 따라 필요한 Panel 을 통제한다. | ||
+ | |||
+ | DialogManager 클래스 | ||
+ | |||
+ | InputField 를 통해 플레이어가 질문을 하면 ChatGPT클래스에 질문을 전달하여 답변을 받아와 응답을 전달한다. | ||
+ | |||
+ | EvidenceManager 클래스 | ||
+ | |||
+ | 플레이어가 증거품을 클릭하면 증거품을 돌려보고, 확대하고, 습득하는 기능을 한다. | ||
+ | |||
+ | ItemGetter 클래스 | ||
+ | |||
+ | 증거품을 갖고 정보를 보여주는 기능을 가지고있다. | ||
+ | |||
+ | InventoryController 클래스 | ||
+ | |||
+ | 인벤토리를 열거나 닫으며, 인벤토리에 있는 아이템들을 컨트롤한다. | ||
+ | |||
+ | InvantoryData클래스 | ||
+ | |||
+ | Item 클래스를 가지고있어 현재 인벤토리에 있는 아이템들을 저장한다. | ||
+ | |||
+ | InventoryUI 클래스 | ||
+ | |||
+ | 현제 소유한 아이템들을 보여주기위해 Inventory 를 열고, Slot 들을 조작한다. | ||
+ | |||
+ | Slot 클래스 | ||
+ | |||
+ | 아이템들을 가지고있는 Slot 으로 아이템의 이미지를 가지고있어 이미지를 표현해준다. | ||
+ | |||
+ | SubmitController클래스 | ||
+ | |||
+ | SubmitUI 클래스를 통해 UI를 통제하고 SubmitSlot 클래스를 통해 아이템을 제출한다. | ||
+ | |||
+ | UIManager클래스 | ||
+ | |||
+ | 마우스 커서, toast pop up 의 동작을 관리한다. | ||
==결과 및 평가== | ==결과 및 평가== | ||
===완료 작품의 소개=== | ===완료 작품의 소개=== | ||
====프로토타입 사진 혹은 작동 장면==== | ====프로토타입 사진 혹은 작동 장면==== | ||
− | + | [[파일:민트망고_사진1.png]] | |
+ | |||
+ | [[파일:민트망고_사진2.png]] | ||
+ | |||
+ | [[파일:민트망고_사진3.png]] | ||
+ | |||
+ | [[파일:민트망고_사진4.png]] | ||
+ | |||
+ | [[파일:민트망고_사진5.png]] | ||
+ | |||
+ | [[파일:민트망고_사진6.png]] | ||
+ | |||
====포스터==== | ====포스터==== | ||
− | |||
===관련사업비 내역서=== | ===관련사업비 내역서=== | ||
− | + | [[파일:민트망고_개발사업비.png]] | |
===완료작품의 평가=== | ===완료작품의 평가=== | ||
− | + | [[파일:민트망고_최종평가.png]] | |
===향후계획=== | ===향후계획=== | ||
− | + | 개발 인원 중 그래픽 전문 인력이 없어 UI나 그래픽, UX 환경이 많이 부족하다. 플레이어의 좋은 UI/UX경험을 제공할 목적으로 개선할 필요가 있다. | |
+ | |||
+ | 미흡한 부분 및 버그, 피드백 개선사항 중 우선순위가 높은 순서대로 추가로 수정 및 개발한다. | ||
+ | |||
+ | 기존 계획에서 일정 문제로 진행하지 못한 온라인스토어 출시를 부족한 점을 보완하여 진행할 예정. 유력 플랫폼으로는 Steam. | ||
+ | |||
+ | 여건이 된다면, 작성된 코드 및 프롬프트를 바탕으로 다른 맵에 대한 스토리를 새로 구성하여 후속작 혹은 추가 컨텐츠(DLC)를 개발할 의지가 있다. | ||
===특허 출원 내용=== | ===특허 출원 내용=== | ||
− |
2024년 6월 23일 (일) 13:46 기준 최신판
프로젝트 개요
기술개발 과제
국문 : 생성형 AI를 이용한 추리 게임
영문 : Detective game using generative AI
과제 팀명
민트망고
지도교수
김성환 교수님
개발기간
2019년 3월 ~ 2019년 6월 (총 4개월)
구성원 소개
서울시립대학교 컴퓨터과학부 2018920061 홍석기(팀장)
서울시립대학교 컴퓨터과학부 2019920035 이석준
서울시립대학교 컴퓨터과학부 2019920007 김동욱
서울시립대학교 컴퓨터과학부 2019920030 송승우
서론
개발 과제의 개요
개발 과제 요약
◇ ChatGPT와의 대화를 통해 진행하는 추리게임의 개발을 목표로 한다.
◇ 플레이어는 게임속에서 직접 이동하며 증거를 수집하여 범인을 찾는다.
◇ 증거물 뿐 아니라 ChatGPT가 탑재된 등장인물들과의 대화를 통해 증언을 얻을 수 있다.
◇ 기존의 선택지 형 대화에서 벗어나 플레이어가 직접 만들어가는 대화를 통해 능동적으로 진행하도록 한다.
개발 과제의 배경
◇ 기존의 추리게임은 선형적인 진행을 따라가는 것이 강제되는 면이 많다.
◇ ChatGPT는 현재 논문 작성, 광고 카피 등 다양한 분야에서 활용되고 있는 생성형 AI이다.
◇ 따라서 생성형 AI 응답으로 NPC 상호작용을 자연스럽게 구현한다면, 기존의 선형적이고 형식적인 게임 흐름에서 벗어나 플레이어가 직접 게임 속의 인물들과 대화하고 이야기를 풀어나가는 체험을 할 수 있을 것이다.
개발 과제의 목표 및 내용
◇ 플레이어가 특정 군중에 섞여있는 범인(ex.마피아)을 찾아내는 것을 목표로 하는 게임을 제작한다.
◇ 플레이어와 대화할수 있는 NPC를 만들고, 대화를 통해 플레이어에게 단서를 제공하도록 구현한다.
◇ 7~8인의 군중을 프롬프트로 NPC설정을 부여하며, 설정에 따라 각각 고유의 행동을 하도록 제작한다.
◇ 플레이어가 돌아다닐 수 있는 공간을 제작하고, 증거품을 배치한다.
관련 기술의 현황
관련 기술의 현황 및 분석(State of art)
- 전 세계적인 기술현황
◇ 유니티
c# 을 지원하는 게임엔진으로, 게임을 만드는데 필요한 대부분의 기능을 무료로 지원해준다.
◇ gpt 3.5
GPT(Generative Pre-trained Transformer)는 OpenAI에서 개발한 자연어 생성 모델로 주어진 텍스트의 다음 단어를 예측하는 태스크를 학습하며, 이를 통해 사람이 쓴 것처럼 의미 있는 텍스트를 생성 가능하다. ChatGPT는 이를 기반으로 하는 챗봇으로서 사용자로부터 입력받은 문장을 이해하고, 관련있는 답변을 생성할 수 있으며 실제 대화처럼 일상적인 언어를 사용하여 사용자와 의사소통이 가능하다. 최근 ChatGPT가 공저자로 등록된 논문이 공개되기도 했으며, 배우 라이언 레이놀즈의 "민트모바일" 광고의 대본을 작성하는 데에도 사용되거나 ChatGPT를 활용한 게임이 등장하는 등 그 활용 범위가 넓어지는 추세이다.
이와 같은 거대언어모델(LLM, Large Language Model)을 활용할 때에는 프롬프트가 활용된다. 이는 모델에게 지시나 질문과 같은 맥락, 입력이나 예시와 같은 여러가지 세부사항을 포함한다. 이러한 요소들을 통해서 모델에게 더 적절하게, 정확하게 지시하고 그로부터 얻는 결과의 퀄리티를 향상시킨다.
- 특허조사 및 특허 전략 분석
-없음-
- 기술 로드맵
◇ 유니티 : 사용자가 활동하는 장소 및 증거품, 등장인물 등의 3D 모델링
◇ ChatGPT : 게임 상에 등장하는 인물들과의 대화 구현
시장상황에 대한 분석
- 경쟁제품 조사 비교
◇ The Shapeshifting Detective
얼굴을 바꾸는 능력이 있는 형사가 얼굴을 바꾸고 용의자들을 심문하여 형사에게 말하지않는 정보를 얻고 이를 통해 사건을 해결한다.
매 회차 범인이 달라지며, 선택에 따라 결말이 바뀐다. 하지만 직접 움직이지 않고 심문만을 하는 플레이를 통해 자유도가 떨어지며, 얼굴을 바꾸며 조사를 할 때 걸리는 시간 때문에 재미가 반감된다.
◇ The Painscreek Killings
마을에서 벌어진 살인사건을 해결하기 위해 파견된 기자로서 마을을 돌아다니며 얻는 증거를 통해 살인사건을 해결하는 추리게임.
단서와 단서 사이의 짜임새가 있고, 비밀번호와 연상되는 힌트를 알아내는 난이도가 꽤 높아 호불호가 갈린다.
하지만 정해진 스토리, 단서를 따라가야 결말이 나오기때문에 하나의 단서를 찾지 못하거나 해결하지 못하여 막히는 등 추리에 대한 자유도가 떨어질 수 있다.
◇ Uncover the Smoking gun
CHATGPT 를 이용한 NPC(로봇)를 심문하여 살인사건의 범인을 찾는 추리게임.
기존의 추리게임에 비해 자유도가 높고, 사건과 다른 질문에도 재미있게 반응을 해준다. 중간중간 CHATGPT 의 답변이 엉뚱할 때가 있는데 이에대하여 시스템과부화 라는 컨셉을 이용하여 해결을 하였다. 최후에 몇 가지의 질문에 대한 답변을 통해 수사의 평가가 진행된다.
하지만 CHATGPT 의 대화를 할때의 딜레이가 존재하고, 가끔 중요한 단서가 엮인 질문에 엉뚱한 답변으로 게임 진행에 지장을 주는 경우가 있다.
- 마케팅 전략 제시
◇ 온라인 스토어 유료 판매
PC게임을 즐기는 유저층의 대다수가 온라인스토어(STEAM , 에픽스토어 등)에서 구매한 경험이 있다. PC 온라인 스토어중 STEAM이 압도적인 유저층을 보유함 따라서 STEAM에 제품을 유료로 업로드 할 예정이다.
타겟층은 20~30대이며 생성형 AI에도 익숙한 세대인 만큼 거부감도 덜할 것으로 판단되어진다.
개발과제의 기대효과
기술적 기대효과
◇ 사용자들이 CHATGPT 와의 대화를 통해 CHATGPT에 대한 접근성을 높이고, 프롬프트의 질을 향상시킨다.
경제적, 사회적 기대 및 파급효과
◇ 사용자들이 게임을 통해 즐거움을 얻는다. ◇ 사용자들이 게임을 클리어 하기위한 논리적인 사고를 통해 문제해결 능력을 향상시킨다.
기술개발 일정 및 추진체계
개발 일정
구성원 및 추진체계
ChatGPT 프롬프트 엔지니어링: 김동욱
Unity 게임 개발 : 홍석기, 송승우
기획 : 이석준
설계
설계사양
제품의 요구사항
◇ ChatGPT와의 대화를 통해 진행하는 추리게임의 개발을 목표로 한다.
◇ 플레이어는 게임속에서 직접 이동하며 증거와 증언을 수집한다.
◇ 기존의 선택지 형 대화가 아닌 능동적인 질문으로 게임을 진행한다.
설계 사양
개념설계안
가. 벤치마킹
◇ Uncover the Smoking Gun
- chatgpt를 추리게임에 접목한 게임이다.
- 아직 데모버전으로 정식 출시가 아니다.
- 게임 구조
●맵을 돌아다니며 증거물과 텍스트를 읽어 사건을 전말을 파악한다.
●파악한 증거로 NPC와의 대화를 통해 사건의 힌트를 얻는다.
●마지막에 사건의 전말에 대한 질문에 올바른 답을 입력할 경우 게임을 클리어하게 된다.
- 문제 해결 방식
1. GPT의 불완정성
CHATGPT는 매번 다른 답변, 가끔은 엉뚱한 답변이 나오기 때문에 이 때 게임 진행이 막혀버리면 사용자에게 불쾌감을 줄 수 있다.
1-1. 해결방안
- CHATGPT의 역할을 사용자의 시간의 단축 혹은 사건의 구체화 정도로 설정하여, 만약 GPT에게 아무런 유용한 정보를 얻지 못하더라도 증거 수집을 통해 우회하여 사건을 해결할 수 있다.
- NPC를 로봇으로 설정하고, '과부하'라는 컨셉을 부여해 사용자에게 GPT가 엉뚱한 소리를 해도 납득할 만한 게임적 장치를 설정한다.
2. GPT의 일관성
- CHATGPT가 사용자에게 대답하는 어투와 방식이 항상 비슷하기 때문에 NPC가 아무리 많아도 지루하다는 느낌을 줄 수 있다.
2-1. 해결방안
- 프롬프트를 적절하게 조절하여 각 NPC마다 다른 말투가 나오도록 설정한다.
- NPC마다 알고있는 정보를 다르게 하여 말을 거는 대상에 따라 적절한 정보를 얻을 수 있도록 유도한다.
◇ The Painscreek Killings
- 마을을 돌아다니며 증거를 수집하고 사건을 해결한다.
- 게임 구조
●맵을 돌아다니며 증거를 수집하여 사건을 해결한다.
●얻은 증거를 통해 퍼즐을 해결하는 빈도가 많다.
●증거를 얻지 못한다면 진행이 막히게 된다.
- 문제 해결 방식
1. 퍼즐의 일관성
숫자를 입력하는 자물쇠, 열쇠를 이용하는 자물쇠 두가지가 대부분의 퍼즐이다. 숫자를 입력하는 자물쇠의 경우 날짜에 관련한 숫자를 입력한다면 외국게임 이기 때문에 월/일/년 순으로 입력해야 하며 증거가 2000년 1월 2일 이라면 010200 이 답이어야 하지만, 122000, 1200 등 답의 일관성이 없어 답을 알아도 자물쇠를 풀지 못하는 경우가 발생한다.
1-1. 해결방안
- 이러한 증거품에 대한 일관성을 지키며, 튜토리얼 을 통해 답을 알아도 퍼즐을 풀지 못하는 경우를 줄인다.
- 메모장 기능을 이용하여 언제, 어떻게 얻은 증거인지 메모할 수 있도록 한다.
2. 진행 방식
퀘스트, 가이드가 없으며, 일기장, 편지, 신문기사 등 자신이 찾은 증거를 이용하여 직접 스토리를 알아가도록 유도한다. 엔딩 후에 놓친 증거. 스토리 설명이 없기 때문에 궁금증이 남는다. 또한 가이드가 없기 때문에 하나의 증거에 막히거나, 잘 찾지 못해 진행이 막히는 일이 발생한다.
2-1. 해결
- GPT API 를 이용한 NPC 와의 대화를 통해 스토리의 진행에 대한 가이드가 가능하다.
- 플레이어가 직접 증거품을 통해 스토리를 알아가도록 하고, 엔딩 후에 스토리 설명을 보여주도록 한다.
나. 기능 설계
◇ 증거품 상호작용 : 증거품을 클릭했을 때 앞으로 가져오고 증거품을 돌려볼 수 있다.
1. 현재 오브젝트의 위치를 저장하고, 카메라 앞의 위치로 물체의 위치를 변경시킨다.
2. 마우스의 좌클릭입력을 받고 드래그하여 물체의 회전에 변화를 준다.
3. 마우스 휠 입력에 따라 물체를 확대, 축소 시킨다.
4. Q를 눌러 인벤토리로 증거품을 가져온다.
◇ NPC 상호작용 : NPC를 클릭했을 때 대화창을 열고 NPC 와 대화를 한다.
물체를 클릭했을 때 NPC태그를 가진 물체면 대화창을 활성화 시킨다.
InputField를 통해 질문을 입력받는다.
입력받은 질문을 ChatGPT API를 통해 답변을 받는다.
받은 답변을 Text를 통해 UI에 보여준다
◇ 인벤토리 상호작용 : 인벤토리를 열고 가지고있는 정보를 확인한다.
I를 눌렀을 때 인벤토리를 활성화 시킨다.
인벤토리에 가지고있는 증거를 클릭하여 증거품이 가지고있는 정보를 확인한다.
◇ 설정 상호작용 : 설정창을 열고 설정을 조절한다.
ESC를 눌러 설정창을 띄운다.
볼륨, 마우스 감도, 해상도와 같은 기능을 제어한다.
◇ 결과 제출 : 결과를 제출하는 창을 띄우고 결과를 제출한다.
Z를 눌러 결과를 제출하는 창을 띄운다.
가지고있는 아이템들을 클릭하여 제출한다.
제출하기 버튼을 클릭하여 결과를 제출한다.
다. UI 별 상세 설명
1. 시작 화면
게임 시작과 종료, 설정 화면, 크레딧 화면에 진입할 수 있다.
2-a. 게임 진행 : 메인 화면
①게임은 1인칭 시점으로 진행.
②wasd로 이동하고 마우스로 시점 변경이 가능하다.
③가운데에 조준점이 있고 그 위에 대상(NPC, 증거품 등)을 올린 뒤 E를 눌러 상호작용 할 수 있다.
④좌측 하단에는 게임상의 시간과 날짜가 표시된다.
⑤우측 상단에는 미니맵이 존재하여 현재 위치를 보여준다.
⑥I를 눌러 증거 확인으로 진입한다.
2-b. 게임 진행 : 증거 확인
①좌측에는 증거품의 사진과 상세 설명 등이 적혀있다.
②우측에는 증거품의 목록이 아이콘으로 표시된다.
③우측 상단의 탭을 통해 증거와 인물 정보를 구분하여 볼 수 있다.
④각 증거나 인물을 클릭 시 내용을 확인할 수 있다.
2-c. 게임 진행 : NPC 대화
①시점이 NPC와 마주보는 형태로 변경된다.
②하단에 대화창이 나온다.
③좌측 상단에 대화 종료와 증거 확인 버튼이 있다.
3. 일시정지
①게임이 중지된다.
②재개, 도움말, 설정, 게임종료 버튼이 있다.
4. 설정
①바 형태의 UI를 통해 감마와 사운드 조절을 할 수 있다.
②마우스 조작 반전, 키설정 등을 변경할 수 있다.
5. 도움말
①캐릭터의 조작법을 알려준다.
②각 기능마다 최초 사용 시 그 사용법을 알려주기 위한 팝업이 뜨고, 게임이 일시정지 된다. 여기서는 그 팝업을 모아 볼 수 있다.
6. 지도
①메인 화면에서 M으로 진입한다.
②화면 전체를 가리지 않는 수준에서 플레이 공간 전체를 볼 수 있다.
7-a. 결과 제출 : 증거와 인물 제시
①2-b 증거 확인과 유사한 화면이 등장한다.
②우측 상단의 인물/증거 탭은 비활성화된다.
③좌측에는 결과를 판정하는 인물이 등장한다.
④우측의 증거품 아이콘을 클릭하여 보여줄 증거품을 선정한다.
⑤증거품 제출 시 탭이 인물 탭으로 변경되고 범인을 제시하도록 한다.
7-b. 결과 제출 : 결과 확인
①제시한 결과가 맞는지의 여부를 알려준다.
②이후 시작화면, 크레딧, 게임종료로 진입할 수 있다.
이론적 계산 및 시뮬레이션
◇ 기존 ChatGPT API를 활용한 몇 개의 게임을 찾아본 결과 프롬프트의 설정에 따라 비교적 상황, 배경에 따른 적절한 대답을 하는 것을 볼 수 있었고, 심지어는 게임과는 관련없는 주제에 대해 질문을 해도 자연스러운 대답을 출력했다.
◇ 무료로 제공되는 ChatGPT 3.5에게 배경과 상황, 인물의 성격 등을 설정하고 대화했을 때, 플레이어의 태도에 따른 어조의 변화 등이 반영되는 것을 볼 수 있었다.
◇ 하지만 가끔 모르는 내용에 대해 이상한 대답이 나온다거나, 설정한 것과 다른 양상의 대답이 나오기도 했다.
◇ 따라서 실제 API를 이용하여 프롬프트를 전달할 때에는 여러 상황에 대해 대처할 수 있도록 자세하게 묘사하는 것이 중요할 것이라고 예상한다.
상세설계 내용
◇ 유즈케이스 다이어그램
◇ 시퀀스 다이어그램
◇ 클래스 다이어그램
PlayerController 클래스
플레이어가 상호작용하는 모든 부분을 컨트롤 하여 PanelManager, DialogManager, EvidenceManager 에게 동작을 요청한다.
PanelManager 클래스
플레이어의 상호작용에 따라 필요한 Panel 을 통제한다.
DialogManager 클래스
InputField 를 통해 플레이어가 질문을 하면 ChatGPT클래스에 질문을 전달하여 답변을 받아와 응답을 전달한다.
EvidenceManager 클래스
플레이어가 증거품을 클릭하면 증거품을 돌려보고, 확대하고, 습득하는 기능을 한다.
ItemGetter 클래스
증거품을 갖고 정보를 보여주는 기능을 가지고있다.
InventoryController 클래스
인벤토리를 열거나 닫으며, 인벤토리에 있는 아이템들을 컨트롤한다.
InvantoryData클래스
Item 클래스를 가지고있어 현재 인벤토리에 있는 아이템들을 저장한다.
InventoryUI 클래스
현제 소유한 아이템들을 보여주기위해 Inventory 를 열고, Slot 들을 조작한다.
Slot 클래스
아이템들을 가지고있는 Slot 으로 아이템의 이미지를 가지고있어 이미지를 표현해준다.
SubmitController클래스
SubmitUI 클래스를 통해 UI를 통제하고 SubmitSlot 클래스를 통해 아이템을 제출한다.
UIManager클래스
마우스 커서, toast pop up 의 동작을 관리한다.
결과 및 평가
완료 작품의 소개
프로토타입 사진 혹은 작동 장면
포스터
관련사업비 내역서
완료작품의 평가
향후계획
개발 인원 중 그래픽 전문 인력이 없어 UI나 그래픽, UX 환경이 많이 부족하다. 플레이어의 좋은 UI/UX경험을 제공할 목적으로 개선할 필요가 있다.
미흡한 부분 및 버그, 피드백 개선사항 중 우선순위가 높은 순서대로 추가로 수정 및 개발한다.
기존 계획에서 일정 문제로 진행하지 못한 온라인스토어 출시를 부족한 점을 보완하여 진행할 예정. 유력 플랫폼으로는 Steam.
여건이 된다면, 작성된 코드 및 프롬프트를 바탕으로 다른 맵에 대한 스토리를 새로 구성하여 후속작 혹은 추가 컨텐츠(DLC)를 개발할 의지가 있다.