devmeta commited on
Commit
d51c8e9
·
verified ·
1 Parent(s): 82221a0

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +165 -1
README.md CHANGED
@@ -6,5 +6,169 @@ colorTo: blue
6
  sdk: static
7
  pinned: false
8
  ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
6
  sdk: static
7
  pinned: false
8
  ---
9
+ # 🍁 메이플스토리 NPC 성격 대화 생성기
10
+ ### MapleStory NPC Personality Dialogue Generator
11
+
12
+ > **Big Five 성격 모델 기반 LLM NPC 대화 생성 시스템**
13
+ > A real-time NPC dialogue generation system powered by Gemini AI and the Big Five personality model.
14
+
15
+ [![Live Demo](https://img.shields.io/badge/🍁%20Live%20Demo-maple--npc--generator.vercel.app-brightgreen)](https://maple-npc-generator.vercel.app/)
16
+ [![Vercel](https://img.shields.io/badge/Deployed%20on-Vercel-black)](https://vercel.com)
17
+ [![Gemini](https://img.shields.io/badge/Powered%20by-Gemini%203%20Flash-blue)](https://ai.google.dev)
18
+
19
+ ---
20
+
21
+ ## 🎮 프로젝트 소개
22
+
23
+ 20년간 넥슨 카트라이더 레벨디자인을 담당하며 체감한 문제가 있습니다.
24
+ **"수개월 공들여 만든 콘텐츠가 단 며칠 만에 고갈된다."**
25
+
26
+ NPC 대화는 게임 몰입감의 핵심이지만, 수백 명의 NPC에게 일일이 개성 있는 대사를 작성하는 것은 막대한 리소스가 필요합니다. 이 프로젝트는 심리학의 **Big Five 성격 모델**을 게임 NPC에 적용하여, AI가 NPC의 성격에 맞는 자연스러운 대화를 실시간으로 생성하는 시스템입니다.
27
+
28
+ > *"이론을 넘어선 실체 — 게임 개발 현장의 문제를 AI로 직접 해결합니다."*
29
+
30
+ ---
31
+
32
+ ## 🚀 Live Demo
33
+
34
+ **👉 [https://maple-npc-generator.vercel.app/](https://maple-npc-generator.vercel.app/)**
35
+
36
+ 슬라이더로 NPC의 Big Five 성격 수치를 조정하고,
37
+ 실시간으로 달라지는 대화 스타일을 직접 체험해보세요.
38
+
39
+ ---
40
+
41
+ ## 🧠 Big Five 성격 모델 (OCEAN)
42
+
43
+ 심리학의 표준 성격 모델을 NPC 대화 생성에 적용했습니다.
44
+
45
+ | 특성 | 영문 | 낮을 때 | 높을 때 |
46
+ |------|------|---------|---------|
47
+ | **개방성** | Openness | 전통적, 현실적 | 창의적, 호기심 많음 |
48
+ | **성실성** | Conscientiousness | 즉흥적, 유연함 | 체계적, 책임감 강함 |
49
+ | **외향성** | Extraversion | 조용함, 내성적 | 활발함, 사교적 |
50
+ | **친화성** | Agreeableness | 직설적, 경쟁적 | 공감적, 협력적 |
51
+ | **신경성** | Neuroticism | 안정적, 침착함 | 감정적, 예민함 |
52
+
53
+ 각 수치는 LLM 프롬프트의 **personality 파라미터**로 변환되어 Gemini에 전달됩니다.
54
+ 신경성(Neuroticism) 수치는 모델의 `temperature` 값에도 직접 반영됩니다.
55
+
56
+ ```
57
+ temperature = 0.7 + (neuroticism / 200)
58
+ ```
59
+
60
+ ---
61
+
62
+ ## 🏗️ 시스템 아키텍처
63
+
64
+ ```
65
+ [사용자 브라우저]
66
+
67
+ │ POST /api/chat (NPC 설정 + Big Five 수치 + 대화 히스토리)
68
+
69
+ [Vercel Edge Function] ← GEMINI_API_KEY (서버에만 존재, 외부 노출 없음)
70
+
71
+ │ Streaming SSE
72
+
73
+ [Gemini 3 Flash Preview]
74
+
75
+ │ 실시간 스트리밍 응답
76
+
77
+ [사용자 화면에 타이핑 효과로 출력]
78
+ ```
79
+
80
+ **API 키 보안:** 클라이언트 번들에 키를 포함하지 않고, Vercel 서버사이드 환경변수로만 관리합니다.
81
+
82
+ ---
83
+
84
+ ## 🛠️ 기술 스택
85
+
86
+ | 분류 | 기술 |
87
+ |------|------|
88
+ | **Frontend** | React 18, TypeScript, Vite, Tailwind CSS |
89
+ | **AI** | Google Gemini 3 Flash Preview (`gemini-3-flash-preview`) |
90
+ | **배포** | Vercel (Edge Functions) |
91
+ | **애니메이션** | Motion (Framer Motion) |
92
+ | **아이콘** | Lucide React |
93
+
94
+ ---
95
+
96
+ ## 📦 설치 및 실행
97
+
98
+ ### 1. 레포지토리 클론
99
+ ```bash
100
+ git clone https://github.com/Taewan627/maple-npc-generator.git
101
+ cd maple-npc-generator
102
+ ```
103
+
104
+ ### 2. 패키지 설치
105
+ ```bash
106
+ npm install
107
+ ```
108
+
109
+ ### 3. 환경변수 설정
110
+ ```bash
111
+ cp .env.example .env
112
+ ```
113
+ `.env` 파일을 열고 Gemini API 키 입력:
114
+ ```
115
+ GEMINI_API_KEY=AIza...
116
+ ```
117
+ > API 키 발급: [Google AI Studio](https://aistudio.google.com) → Get API key
118
+
119
+ ### 4. 로컬 실행
120
+ ```bash
121
+ npm run dev
122
+ ```
123
+ `http://localhost:5173` 접속
124
+
125
+ ---
126
+
127
+ ## 📁 프로젝트 구조
128
+
129
+ ```
130
+ ├── api/
131
+ │ └── chat.ts # Vercel Edge Function (Gemini API 호출, 키 보호)
132
+ ├── src/
133
+ │ ├── App.tsx # 메인 UI 컴포넌트
134
+ │ ├── types.ts # Big Five 타입 정의
135
+ │ ├── services/
136
+ │ │ └── geminiService.ts # API Route 호출 및 SSE 스트림 파싱
137
+ │ └── data/
138
+ │ └── maple_knowledge.json # 메이플스토리 세계관 지식베이스
139
+ ├── vercel.json # Vercel 라우팅 설정
140
+ └── vite.config.ts # Vite 빌드 설정
141
+ ```
142
+
143
+ ---
144
+
145
+ ## 🔬 논문 연구 연계
146
+
147
+ 이 프로젝트는 다음 연구의 **실증 시스템(Proof of Concept)** 으로 개발되었습니다.
148
+
149
+ > **"LLM 기반 게임 NPC 페르소나의 성격 차별성 및 일관성 검증을 위한 정량적 프레임워크 연구: Big Five 모델을 중심으로"**
150
+ > KCI 등재지| 한국 디지털콘텐츠 학회
151
+
152
+ **연구 핵심 질문:**
153
+ - Big Five 수치 변화가 LLM 출력의 성격 차별성에 유의미한 영향을 주는가?
154
+ - 동일 NPC에 대한 반복 생성 시 성격 일관성이 유지되는가?
155
+ - 게임 개발 파이프라인에서 AI 기반 NPC 대화 생성이 제작 효율을 개선하는가?
156
+
157
+ 이 시스템은 위 연구 가설을 검증하기 위한 **A/B 테스트 및 사용자 실험 플랫폼**으로 활용됩니다.
158
+
159
+ ---
160
+
161
+ ## 👤 개발자
162
+
163
+ **김태완 (Taewan Kim)**
164
+ 서강대학교 가상융합 테크놀로지 박사과정
165
+
166
+ - 🤗 HuggingFace: [huggingface.co/devmeta](https://huggingface.co/devmeta)
167
+ - 🐙 GitHub: [github.com/Taewan627](https://github.com/Taewan627)
168
+
169
+ ---
170
+
171
+ ## 📄 License
172
+
173
+ MIT License
174