maple-npc-generator / README.md
devmeta's picture
Update README.md
6718fc8 verified
metadata
title: Maple Npc Generator
emoji: ๐Ÿš€
colorFrom: gray
colorTo: blue
sdk: static
pinned: false

๐Ÿ ๋ฉ”์ดํ”Œ์Šคํ† ๋ฆฌ NPC ์„ฑ๊ฒฉ ๋Œ€ํ™” ์ƒ์„ฑ๊ธฐ

MapleStory NPC Personality Dialogue Generator

Big Five ์„ฑ๊ฒฉ ๋ชจ๋ธ ๊ธฐ๋ฐ˜ LLM NPC ๋Œ€ํ™” ์ƒ์„ฑ ์‹œ์Šคํ…œ
A real-time NPC dialogue generation system powered by Gemini AI and the Big Five personality model.

Live Demo Vercel Gemini


๐ŸŽฎ ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

20๋…„๊ฐ„ ๊ฒŒ์ž„์ฝ˜ํ…์ธ , ๋ ˆ๋ฒจ๋””์ž์ธ์„ ๋‹ด๋‹นํ•˜๋ฉฐ ์ฒด๊ฐํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
"์ˆ˜๊ฐœ์›” ๊ณต๋“ค์—ฌ ๋งŒ๋“  ์ฝ˜ํ…์ธ ๊ฐ€ ๋‹จ ๋ฉฐ์น  ๋งŒ์— ๊ณ ๊ฐˆ๋œ๋‹ค."

NPC ๋Œ€ํ™”๋Š” ๊ฒŒ์ž„ ๋ชฐ์ž…๊ฐ์˜ ํ•ต์‹ฌ์ด์ง€๋งŒ, ์ˆ˜๋ฐฑ ๋ช…์˜ NPC์—๊ฒŒ ์ผ์ผ์ด ๊ฐœ์„ฑ ์žˆ๋Š” ๋Œ€์‚ฌ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์€ ๋ง‰๋Œ€ํ•œ ๋ฆฌ์†Œ์Šค๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ด ํ”„๋กœ์ ํŠธ๋Š” ์‹ฌ๋ฆฌํ•™์˜ Big Five ์„ฑ๊ฒฉ ๋ชจ๋ธ์„ ๊ฒŒ์ž„ NPC์— ์ ์šฉํ•˜์—ฌ, AI๊ฐ€ NPC์˜ ์„ฑ๊ฒฉ์— ๋งž๋Š” ์ž์—ฐ์Šค๋Ÿฌ์šด ๋Œ€ํ™”๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ƒ์„ฑํ•˜๋Š” ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค.

"์ด๋ก ์„ ๋„˜์–ด์„  ์‹ค์ฒด โ€” ๊ฒŒ์ž„ ๊ฐœ๋ฐœ ํ˜„์žฅ์˜ ๋ฌธ์ œ๋ฅผ AI๋กœ ์ง์ ‘ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค."


๐Ÿš€ Live Demo

๐Ÿ‘‰ https://maple-npc-generator.vercel.app/

์Šฌ๋ผ์ด๋”๋กœ NPC์˜ Big Five ์„ฑ๊ฒฉ ์ˆ˜์น˜๋ฅผ ์กฐ์ •ํ•˜๊ณ ,
์‹ค์‹œ๊ฐ„์œผ๋กœ ๋‹ฌ๋ผ์ง€๋Š” ๋Œ€ํ™” ์Šคํƒ€์ผ์„ ์ง์ ‘ ์ฒดํ—˜ํ•ด๋ณด์„ธ์š”.


๐Ÿง  Big Five ์„ฑ๊ฒฉ ๋ชจ๋ธ (OCEAN)

์‹ฌ๋ฆฌํ•™์˜ ํ‘œ์ค€ ์„ฑ๊ฒฉ ๋ชจ๋ธ์„ NPC ๋Œ€ํ™” ์ƒ์„ฑ์— ์ ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

ํŠน์„ฑ ์˜๋ฌธ ๋‚ฎ์„ ๋•Œ ๋†’์„ ๋•Œ
๊ฐœ๋ฐฉ์„ฑ Openness ์ „ํ†ต์ , ํ˜„์‹ค์  ์ฐฝ์˜์ , ํ˜ธ๊ธฐ์‹ฌ ๋งŽ์Œ
์„ฑ์‹ค์„ฑ Conscientiousness ์ฆ‰ํฅ์ , ์œ ์—ฐํ•จ ์ฒด๊ณ„์ , ์ฑ…์ž„๊ฐ ๊ฐ•ํ•จ
์™ธํ–ฅ์„ฑ Extraversion ์กฐ์šฉํ•จ, ๋‚ด์„ฑ์  ํ™œ๋ฐœํ•จ, ์‚ฌ๊ต์ 
์นœํ™”์„ฑ Agreeableness ์ง์„ค์ , ๊ฒฝ์Ÿ์  ๊ณต๊ฐ์ , ํ˜‘๋ ฅ์ 
์‹ ๊ฒฝ์„ฑ Neuroticism ์•ˆ์ •์ , ์นจ์ฐฉํ•จ ๊ฐ์ •์ , ์˜ˆ๋ฏผํ•จ

๊ฐ ์ˆ˜์น˜๋Š” LLM ํ”„๋กฌํ”„ํŠธ์˜ personality ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ณ€ํ™˜๋˜์–ด Gemini์— ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.
์‹ ๊ฒฝ์„ฑ(Neuroticism) ์ˆ˜์น˜๋Š” ๋ชจ๋ธ์˜ temperature ๊ฐ’์—๋„ ์ง์ ‘ ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค.

temperature = 0.7 + (neuroticism / 200)

๐Ÿ—๏ธ ์‹œ์Šคํ…œ ์•„ํ‚คํ…์ฒ˜

[์‚ฌ์šฉ์ž ๋ธŒ๋ผ์šฐ์ €]
      โ”‚
      โ”‚  POST /api/chat (NPC ์„ค์ • + Big Five ์ˆ˜์น˜ + ๋Œ€ํ™” ํžˆ์Šคํ† ๋ฆฌ)
      โ–ผ
[Vercel Edge Function]  โ† GEMINI_API_KEY (์„œ๋ฒ„์—๋งŒ ์กด์žฌ, ์™ธ๋ถ€ ๋…ธ์ถœ ์—†์Œ)
      โ”‚
      โ”‚  Streaming SSE
      โ–ผ
[Gemini 3 Flash Preview]
      โ”‚
      โ”‚  ์‹ค์‹œ๊ฐ„ ์ŠคํŠธ๋ฆฌ๋ฐ ์‘๋‹ต
      โ–ผ
[์‚ฌ์šฉ์ž ํ™”๋ฉด์— ํƒ€์ดํ•‘ ํšจ๊ณผ๋กœ ์ถœ๋ ฅ]

API ํ‚ค ๋ณด์•ˆ: ํด๋ผ์ด์–ธํŠธ ๋ฒˆ๋“ค์— ํ‚ค๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š๊ณ , Vercel ์„œ๋ฒ„์‚ฌ์ด๋“œ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋กœ๋งŒ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.


๐Ÿ› ๏ธ ๊ธฐ์ˆ  ์Šคํƒ

๋ถ„๋ฅ˜ ๊ธฐ์ˆ 
Frontend React 18, TypeScript, Vite, Tailwind CSS
AI Google Gemini 3 Flash Preview (gemini-3-flash-preview)
๋ฐฐํฌ Vercel (Edge Functions)
์• ๋‹ˆ๋ฉ”์ด์…˜ Motion (Framer Motion)
์•„์ด์ฝ˜ Lucide React

๐Ÿ“ฆ ์„ค์น˜ ๋ฐ ์‹คํ–‰

1. ๋ ˆํฌ์ง€ํ† ๋ฆฌ ํด๋ก 

git clone https://github.com/Taewan627/maple-npc-generator.git
cd maple-npc-generator

2. ํŒจํ‚ค์ง€ ์„ค์น˜

npm install

3. ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ •

cp .env.example .env

.env ํŒŒ์ผ์„ ์—ด๊ณ  Gemini API ํ‚ค ์ž…๋ ฅ:

GEMINI_API_KEY=AIza...

API ํ‚ค ๋ฐœ๊ธ‰: Google AI Studio โ†’ Get API key

4. ๋กœ์ปฌ ์‹คํ–‰

npm run dev

http://localhost:5173 ์ ‘์†


๐Ÿ“ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ

โ”œโ”€โ”€ api/
โ”‚   โ””โ”€โ”€ chat.ts              # Vercel Edge Function (Gemini API ํ˜ธ์ถœ, ํ‚ค ๋ณดํ˜ธ)
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ App.tsx              # ๋ฉ”์ธ UI ์ปดํฌ๋„ŒํŠธ
โ”‚   โ”œโ”€โ”€ types.ts             # Big Five ํƒ€์ž… ์ •์˜
โ”‚   โ”œโ”€โ”€ services/
โ”‚   โ”‚   โ””โ”€โ”€ geminiService.ts # API Route ํ˜ธ์ถœ ๋ฐ SSE ์ŠคํŠธ๋ฆผ ํŒŒ์‹ฑ
โ”‚   โ””โ”€โ”€ data/
โ”‚       โ””โ”€โ”€ maple_knowledge.json  # ๋ฉ”์ดํ”Œ์Šคํ† ๋ฆฌ ์„ธ๊ณ„๊ด€ ์ง€์‹๋ฒ ์ด์Šค
โ”œโ”€โ”€ vercel.json              # Vercel ๋ผ์šฐํŒ… ์„ค์ •
โ””โ”€โ”€ vite.config.ts           # Vite ๋นŒ๋“œ ์„ค์ •

๐Ÿ”ฌ ๋…ผ๋ฌธ ์—ฐ๊ตฌ ์—ฐ๊ณ„

์ด ํ”„๋กœ์ ํŠธ๋Š” ๋‹ค์Œ ์—ฐ๊ตฌ์˜ ์‹ค์ฆ ์‹œ์Šคํ…œ(Proof of Concept) ์œผ๋กœ ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

"LLM ๊ธฐ๋ฐ˜ ๊ฒŒ์ž„ NPC ํŽ˜๋ฅด์†Œ๋‚˜์˜ ์„ฑ๊ฒฉ ์ฐจ๋ณ„์„ฑ ๋ฐ ์ผ๊ด€์„ฑ ๊ฒ€์ฆ์„ ์œ„ํ•œ ์ •๋Ÿ‰์  ํ”„๋ ˆ์ž„์›Œํฌ ์—ฐ๊ตฌ: Big Five ๋ชจ๋ธ์„ ์ค‘์‹ฌ์œผ๋กœ"
KCI ๋“ฑ์žฌ์ง€| ํ•œ๊ตญ ๋””์ง€ํ„ธ์ฝ˜ํ…์ธ  ํ•™ํšŒ

์—ฐ๊ตฌ ํ•ต์‹ฌ ์งˆ๋ฌธ:

  • Big Five ์ˆ˜์น˜ ๋ณ€ํ™”๊ฐ€ LLM ์ถœ๋ ฅ์˜ ์„ฑ๊ฒฉ ์ฐจ๋ณ„์„ฑ์— ์œ ์˜๋ฏธํ•œ ์˜ํ–ฅ์„ ์ฃผ๋Š”๊ฐ€?
  • ๋™์ผ NPC์— ๋Œ€ํ•œ ๋ฐ˜๋ณต ์ƒ์„ฑ ์‹œ ์„ฑ๊ฒฉ ์ผ๊ด€์„ฑ์ด ์œ ์ง€๋˜๋Š”๊ฐ€?
  • ๊ฒŒ์ž„ ๊ฐœ๋ฐœ ํŒŒ์ดํ”„๋ผ์ธ์—์„œ AI ๊ธฐ๋ฐ˜ NPC ๋Œ€ํ™” ์ƒ์„ฑ์ด ์ œ์ž‘ ํšจ์œจ์„ ๊ฐœ์„ ํ•˜๋Š”๊ฐ€?

์ด ์‹œ์Šคํ…œ์€ ์œ„ ์—ฐ๊ตฌ ๊ฐ€์„ค์„ ๊ฒ€์ฆํ•˜๊ธฐ ์œ„ํ•œ A/B ํ…Œ์ŠคํŠธ ๋ฐ ์‚ฌ์šฉ์ž ์‹คํ—˜ ํ”Œ๋žซํผ์œผ๋กœ ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค.


๐Ÿ‘ค ๊ฐœ๋ฐœ์ž

๊น€ํƒœ์™„ (Taewan Kim)
์„œ๊ฐ•๋Œ€ํ•™๊ต ๊ฐ€์ƒ์œตํ•ฉ ํ…Œํฌ๋†€๋กœ์ง€ ๋ฐ•์‚ฌ๊ณผ์ •


๐Ÿ“„ License

MIT License