# ๐Ÿง  README - NPC ์†Œ์…œ ๋„คํŠธ์›Œํฌ AI ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋ณธ ๋ฌธ์„œ๋Š” ๋ณธ ํ”„๋กœ์ ํŠธ๋ฅผ **์ œ๋กœ ๋ฒ ์ด์Šค์—์„œ ์™„์ „ ์žฌํ˜„**ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€์˜ ๊ตฌ์กฐ, ์„ค๊ณ„ ์ฒ ํ•™, ๊ตฌํ˜„ ๋‹จ๊ณ„, ๊ฐ ํŒŒ์ผ ๊ธฐ๋Šฅ์„ **๋‹จ ํ•˜๋‚˜์˜ ๋ฌธ์„œ๋กœ ์™„์ „ํ•˜๊ฒŒ ์ •๋ฆฌ**ํ•œ ๊ณต์‹ ๋ฌธ์„œ์ž…๋‹ˆ๋‹ค. --- ## ๐Ÿ“Œ ํ”„๋กœ์ ํŠธ ๊ฐœ์š” (Overview) ์ด ํ”„๋กœ์ ํŠธ๋Š” ๊ฐ์ •, ๊ธฐ์–ต, ์„ฑ๊ฒฉ, ๊ด€๊ณ„, ํ–‰๋™์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ **์ธ๊ฐ„ ์œ ์‚ฌ NPC ์‹œ๋ฎฌ๋ ˆ์ด์…˜**์ž…๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ ์ •ํ•ด์ง„ ๋Œ€์‚ฌ๋ฅผ ๋ฐ˜๋ณตํ•˜๋Š” ๊ฒŒ์ž„ NPC๋ฅผ ๋„˜์–ด, ์ž์ฒด์ ์ธ ๊ฐ์ •, ๊ธฐ์–ต, ์„ฑ๊ฒฉ, ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง€๊ณ  ๋‹ค๋ฅธ NPC๋‚˜ ํ”Œ๋ ˆ์ด์–ด์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋ฉฐ ์Šค์Šค๋กœ ํŒ๋‹จํ•˜๊ณ  ์„ฑ์žฅํ•˜๋Š” ๊ฐ€์ƒ ์ธ๊ฐ„(AI Agent)์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•˜๋Š” AI ์‹œ๋ฎฌ๋ ˆ์ด์…˜์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  NPC์˜ ๋‚ด๋ฉด ์ƒํƒœ์™€ ๊ด€๊ณ„ ๋ณ€ํ™”๋Š” ์›น ๊ธฐ๋ฐ˜์˜ **'์›”๋“œ ๊ด€์ฐฐ์ž ๋Œ€์‹œ๋ณด๋“œ'**๋ฅผ ํ†ตํ•ด ์‹ค์‹œ๊ฐ„์œผ๋กœ ์‹œ๊ฐํ™”๋˜๊ณ  ๋ถ„์„๋ฉ๋‹ˆ๋‹ค. ํ•ต์‹ฌ ๊ธฐ์ˆ : Python, Flask, LLM (Google Gemini), Sentence-Transformers, FAISS ์ฃผ์š” ๊ธฐ๋Šฅ: - ์ž์ฒด ์„ค๊ณ„๋œ 4๊ณ„์ธต ๊ฐ์ • ๋ชจ๋ธ์— ๋”ฐ๋ฅธ ๋™์ ์ธ ๊ฐ์ • ๋ณ€ํ™” - ์˜๋ฏธ ๊ธฐ๋ฐ˜ ๊ฒ€์ƒ‰(Vector Search)์„ ํ™œ์šฉํ•œ ์žฅ/๋‹จ๊ธฐ ๊ธฐ์–ต ์‹œ์Šคํ…œ - ์ƒํ˜ธ์ž‘์šฉ์— ๋”ฐ๋ผ ๋ณ€ํ™”ํ•˜๋Š” ์‚ฌํšŒ์  ๊ด€๊ณ„๋ง - ๊ฒฝํ—˜์„ ํ†ตํ•ด ์ ์ง„์ ์œผ๋กœ ๋ณ€ํ™”ํ•˜๋Š” ๋‹ค์ฐจ์› ์„ฑ๊ฒฉ ๋ชจ๋ธ - LLM์„ ์ด์šฉํ•œ ์ž์œจ์ ์ธ ๋ชฉํ‘œ ์„ค์ • ๋ฐ ๋Œ€ํ™” ์ƒ์„ฑ --- ## ๐Ÿ“ ํด๋” ๊ตฌ์กฐ ``` portfolio/ โ”œโ”€โ”€ templates/ โ”‚ โ””โ”€โ”€ main.html # ํฌํŠธํด๋ฆฌ์˜ค ๋ฉ”์ธ ํŽ˜์ด์ง€ โ”‚ โ”œโ”€โ”€ app.py # Flask ์ง„์ž…์  โ”œโ”€โ”€ requirements.txt โ”œโ”€โ”€ test.ipynb โ””โ”€โ”€ npc_social_network/ โ”‚ โ”œโ”€โ”€ __init__.py โ”œโ”€โ”€ simulation_core.py # โœ… ์‹œ๋ฎฌ๋ ˆ์ด์…˜์˜ '์‹ฌ์žฅ'. ์ƒํƒœ ๊ด€๋ฆฌ ๋ฐ ์‹œ๊ฐ„ ํ๋ฆ„(tick) ๋‹ด๋‹น โ”œโ”€โ”€ README.txt โ”‚ โ”œโ”€โ”€ data/ โ”‚ โ”œโ”€โ”€ saves/ โ”‚ โ”‚ โ””โ”€โ”€ simulation_state.pkl # NPC ์›”๋“œ์˜ ์ƒํƒœ๊ฐ€ ์ €์žฅ๋˜๋Š” ํŒŒ์ผ โ”‚ โ””โ”€โ”€ vectorstores/ โ”‚ โ””โ”€โ”€ ์˜๋ฌธ ์บ๋ฆญํ„ฐ๋ช… # ๊ฐ๊ฐ์˜ ์บ๋ฆญํ„ฐ์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ์ €์žฅ๋˜๋Š” ํŒŒ์ผ โ”‚ โ”œโ”€โ”€ routes/ โ”‚ โ””โ”€โ”€ npc_route.py # โœ… '์›”๋“œ ๊ด€์ฐฐ์ž' ๋Œ€์‹œ๋ณด๋“œ์˜ ๋ชจ๋“  ์›น API ์ •์˜ โ”‚ โ”œโ”€โ”€ manager/ โ”‚ โ”œโ”€โ”€ conversation_manager.py # ๋Œ€ํ™”์˜ ์‹œ์ž‘, ์ง„ํ–‰, ์ข…๋ฃŒ๋ฅผ ์ด๊ด„ํ•˜๋Š” ์—ญํ•  โ”‚ โ””โ”€โ”€ simulation_manager.py # ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์ƒํƒœ๋ฅผ ์ €์žฅ/๋กœ๋“œํ•˜๋Š” ๊ธฐ๋Šฅ โ”‚ โ”œโ”€โ”€ scenarios/ โ”‚ โ””โ”€โ”€ scenario_setup.py # ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์ดˆ๊ธฐ ์›”๋“œ(NPC, ๊ด€๊ณ„) ์„ค์ • โ”‚ โ”œโ”€โ”€ npc/ # NPC์˜ '๋‘๋‡Œ'๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ํ•ต์‹ฌ ๋กœ์ง โ”‚ โ”œโ”€โ”€ npc_base.py # NPC ๋ณธ์ฒด (๊ฐ์ •/๊ธฐ์–ต/๊ด€๊ณ„ ํฌํ•จ) โ”‚ โ”œโ”€โ”€ npc_manager.py # NPC ๋ฆฌ์ŠคํŠธ ๊ด€๋ฆฌ โ”‚ โ”œโ”€โ”€ npc_emotion.py # EmotionManager โ”‚ โ”œโ”€โ”€ npc_memory.py # Memory / MemoryStore โ”‚ โ”œโ”€โ”€ npc_behavior.py # ๊ฐ์ • โ†’ ํ–‰๋™ ๋งคํ•‘ โ”‚ โ”œโ”€โ”€ npc_relationship.py # ๊ด€๊ณ„ ์ ์ˆ˜ ๊ด€๋ฆฌ โ”‚ โ”œโ”€โ”€ npc_memory_embedder.py # ๊ธฐ์–ต ์ž„๋ฒ ๋”ฉ + FAISS ๊ฒ€์ƒ‰ โ”‚ โ”œโ”€โ”€ emotion_config.py # ๊ฐ์ • ๊ตฌ์กฐ ์ •์˜ โ”‚ โ”œโ”€โ”€ personality_config.py # ์„ฑ๊ฒฉ ๋ฐ ๋‚˜์ด ํ”„๋กœํ•„ โ”‚ โ””โ”€โ”€ npc_planner.py # ๋ชฉํ‘œ์™€ ๊ด€๋ จ๋œ ๊ตฌ์กฐ โ”‚ โ”œโ”€โ”€ models/ # LLM ๋ฐ ์ž„๋ฒ ๋”ฉ ๋ชจ๋ธ ๊ด€๋ จ โ”‚ โ”œโ”€โ”€ gemini_setup.py # Gemini API ์„ค์ • โ”‚ โ””โ”€โ”€ llm_helper.py # ๊ฐ์ • ์ถ”๋ก , ์‘๋‹ต ์ƒ์„ฑ โ”‚ โ”œโ”€โ”€ templates/ โ”‚ โ””โ”€โ”€ dashboard.html # '์›”๋“œ ๊ด€์ฐฐ์ž' ๋Œ€์‹œ๋ณด๋“œ HTML/CSS/JS โ”‚ โ””โ”€โ”€ static/ โ”œโ”€โ”€ css/style.css โ”œโ”€โ”€ js/npc_chat.js โ””โ”€โ”€ images/ โ”‚ โ””โ”€โ”€ npc/ # NPC ์ด๋ฏธ์ง€ ํŒŒ์ผ (์˜ˆ: npc_elin.png) ``` --- ## ๐Ÿ’ก ๊ฐ์ • ๊ตฌ์กฐ (๊ณ ์ฐจ์› ๊ฐ์ • ๋ชจ๋ธ) > โœ… **GoEmotions์—์„œ ์˜๊ฐ์„ ๋ฐ›์•„ ์ง์ ‘ ์žฌ์„ค๊ณ„ํ•œ 4๊ณ„์ธต ๊ฐ์ • ๋ชจ๋ธ (ComplexEmotions)** | ๊ณ„์ธต (Layer) | ๊ฐ์ • ์˜ˆ์‹œ | |--------------|------------| | `core` | joy, sadness, anger, fear, disgust, surprise, neutral | | `social` | gratitude, shame, empathy, pride, jealousy, compassion, love, admiration, awe, attachment, comfort | | `cognitive` | anticipation, curiosity, confusion, interest, engagement, boredom, relief, anxiety, calm, skepticism | | `complex` | nostalgia, bittersweet, schadenfreude, resentment, anticipatory_joy, regret, rumination, hope, groundedness | - ๊ฐ์ •์€ ๊ฐœ์„ฑ(`sensitive`, `stoic`, `*_bias`)์— ๋”ฐ๋ผ ๊ฐ์ • ๋ฐ˜์‘ ๋ฐ decay ์†๋„๊ฐ€ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. - ๊ฐ์ •์€ ํ–‰๋™, ๊ธฐ์–ต ์ƒ์„ฑ, ๊ด€๊ณ„ ๋ณ€ํ™”, ์„ฑ๊ฒฉ ๋ณ€ํ™”์— ์ง์ ‘ ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค. --- ## ๐Ÿง  ํ•ต์‹ฌ ์‹œ์Šคํ…œ ์„ค๋ช… ### โœ… ๊ฐ์ • ์‹œ์Šคํ…œ - `EmotionManager`: ๊ฐ์ • ๋ฒ„ํผ ๊ด€๋ฆฌ, decay, ๊ฐ์ • ์—…๋ฐ์ดํŠธ - ๊ฐ์ •์€ ์ตœ๋Œ€ 100.0๊นŒ์ง€ ๋ˆ„์ ๋˜๋ฉฐ, decay๋Š” personality์™€ ์—ฐ๊ณ„๋จ - ๊ฐ์ •์€ ํ–‰๋™ ์ƒ์„ฑ, ๊ธฐ์–ต ์ €์žฅ ๊ฐ•๋„, ๊ด€๊ณ„ ์˜ํ–ฅ, ์„ฑ๊ฒฉ ๋ณ€ํ™”์˜ ๊ธฐ๋ฐ˜์ด ๋จ ### โœ… ๊ธฐ์–ต ์‹œ์Šคํ…œ - `Memory`: content, timestamp, importance, emotion, type ๋ณด์œ  - `MemoryStore`: ๋‹จ๊ธฐ/์žฅ๊ธฐ ๊ธฐ์–ต ๋ถ„๋ฆฌ, decay, ์Šน๊ฒฉ, ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ํฌํ•จ - decay๋Š” memory_type๋ณ„๋กœ ๋‹ค๋ฅด๊ฒŒ ์ ์šฉ๋จ ### โœ… ์„ฑ๊ฒฉ ์‹œ์Šคํ…œ - `PERSONALITY_PROFILE`: stable/emotional/logical - `AGE_PROFILE`: ์ธ์ƒ ๋‹จ๊ณ„๋ณ„ ๋ณ€ํ™”์œจ (์˜ˆ: ์–ด๋ฆฐ์ด๋Š” ๋น ๋ฆ„) - ๊ธฐ์–ต์— ๊ธฐ๋ฐ˜ํ•ด personality gradually drift (ex: ๊ฐ์ •์ ์ด๊ฑฐ๋‚˜ ์ด์„ฑ์  ์„ฑํ–ฅ ๊ฐ•ํ™”) ### โœ… ๊ด€๊ณ„ ์‹œ์Šคํ…œ - `RelationshipManager`: -100 ~ +100 ๋ฒ”์œ„์˜ ๊ด€๊ณ„ ์ ์ˆ˜ ๊ด€๋ฆฌ - ๊ฐ์ • ํ‘œํ˜„ ๋ฐ ๊ธฐ์–ต์ด ๊ด€๊ณ„์— ์˜ํ–ฅ์„ ์คŒ (`reflect_memory_on_relationship`) ### โœ… ํ–‰๋™ ์‹œ์Šคํ…œ - ๊ฐ์ • โ†’ ํ–‰๋™ ์‹œํ€€์Šค๋กœ ๋ณ€ํ™˜ (`BehaviorManager`) - ํ–‰๋™์€ ๊ธฐ์–ต์— ๊ธฐ๋ก๋˜๊ณ , ๋‹ค์‹œ ๊ฐ์ •์— ์˜ํ–ฅ์„ ์คŒ (์—ญ๋งคํ•‘) ### โœ… LLM ์‹œ์Šคํ…œ - `query_llm_for_emotion`: ๊ฐ์ • ์ถ”๋ก ์šฉ LLM ํ˜ธ์ถœ - `query_llm_with_prompt`: ๋Œ€์‚ฌ ์ƒ์„ฑ์šฉ LLM ํ˜ธ์ถœ - `build_npc_prompt`: ๊ฐ์ •/๊ธฐ์–ต ๊ธฐ๋ฐ˜ ํ”„๋กฌํ”„ํŠธ ์ƒ์„ฑ - `summarize_memories`: ์žฅ๊ธฐ ๊ธฐ์–ต ์š”์•ฝ ### โœ… ์ž„๋ฒ ๋”ฉ ์‹œ์Šคํ…œ - `npc_memory_embedder.py`: - `embed_npc_memories`: FAISS ์ €์žฅ - `search_similar_memories`: ์งˆ์˜ ์œ ์‚ฌ๋„ ๊ฒ€์ƒ‰ - ๋ชจ๋ธ: `all-MiniLM-L6-v2` ์‚ฌ์šฉ ์ค‘ --- ์ฃผ์š” ํ๋ฆ„ (generate_dialogue ํ•จ์ˆ˜ ๊ธฐ์ค€): 1. ์‚ฌ๊ฑด ๋ฐœ์ƒ: ํ”Œ๋ ˆ์ด์–ด๋‚˜ ๋‹ค๋ฅธ NPC๋กœ๋ถ€ํ„ฐ ๋Œ€ํ™”(user_input)๊ฐ€ ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค. 2. ๊ธฐ์–ต ํƒ์ƒ‰: ์ž…๋ ฅ๋œ ๋Œ€ํ™” ๋‚ด์šฉ๊ณผ ์˜๋ฏธ์ ์œผ๋กœ ๊ฐ€์žฅ ์œ ์‚ฌํ•œ ๊ณผ๊ฑฐ์˜ ๊ธฐ์–ต๋“ค์„ ๋ฒกํ„ฐ ๊ฒ€์ƒ‰(FAISS)์„ ํ†ตํ•ด ์ฆ‰์‹œ ์ฐพ์•„๋ƒ…๋‹ˆ๋‹ค. (npc_memory_embedder.py) 3. ์ƒํ™ฉ ํŒ๋‹จ: ํ˜„์žฌ NPC์˜ ๊ฐ์ • ์ƒํƒœ, ์„ฑ๊ฒฉ, ์ƒ๋Œ€๋ฐฉ๊ณผ์˜ ๊ด€๊ณ„, ๋ฐฉ๊ธˆ ์ฐพ์•„๋‚ธ ๊ด€๋ จ ๊ธฐ์–ต ๋“ฑ ๋ชจ๋“  ์ •๋ณด๋ฅผ ์ข…ํ•ฉํ•˜์—ฌ LLM์—๊ฒŒ ์ „๋‹ฌํ•  ์ƒ์„ธํ•œ '์ƒํ™ฉ ๋ณด๊ณ ์„œ(Prompt)'๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. (llm_prompt_builder.py) 4. ์˜์‚ฌ ๊ฒฐ์ • (๋Œ€ํ™” ์ƒ์„ฑ): LLM์€ ์ด ์ƒํ™ฉ ๋ณด๊ณ ์„œ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ, ํ˜„์žฌ ์ƒํ™ฉ์— ๊ฐ€์žฅ ์ ์ ˆํ•œ ๋Œ€์‚ฌ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. (llm_helper.py) 5. ๋‚ด๋ฉด์˜ ๋ณ€ํ™”: - ์ƒ์„ฑ๋œ ๋Œ€์‚ฌ์— ๋‹ด๊ธด ๊ฐ์ •์„ ์Šค์Šค๋กœ ์ถ”๋ก ํ•˜์—ฌ ์ž์‹ ์˜ ๊ฐ์ • ์ƒํƒœ๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค. (npc_emotion.py) - ์ด ์ƒํ˜ธ์ž‘์šฉ์„ ํ•˜๋‚˜์˜ ์ƒˆ๋กœ์šด ๊ธฐ์–ต์œผ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. (npc_memory.py) - ๋ฐœ์ƒํ•œ ๊ฐ์ •์˜ ์ข…๋ฅ˜์™€ ๊ฐ•๋„์— ๋”ฐ๋ผ ์ƒ๋Œ€๋ฐฉ๊ณผ์˜ ๊ด€๊ณ„ ์ ์ˆ˜๋ฅผ ์กฐ์ ˆํ•ฉ๋‹ˆ๋‹ค. (npc_relationship.py) - ์ด ์ค‘์š”ํ•œ ๊ฒฝํ—˜์€ NPC์˜ ์„ฑ๊ฒฉ์— ์•„์ฃผ ๋ฏธ์„ธํ•œ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋ฉฐ, ์žฅ๊ธฐ์ ์œผ๋กœ NPC๋ฅผ ๋ณ€ํ™”์‹œํ‚ต๋‹ˆ๋‹ค. (npc_base.py์˜ update_personality) ์ด ๋ชจ๋“  ๊ณผ์ •์ด ๋‹จ ํ•œ ๋ฒˆ์˜ ๋Œ€ํ™” ์†์—์„œ ์ผ์–ด๋‚˜๋ฉฐ, NPC๋ฅผ ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ์„ฑ์žฅํ•˜๊ณ  ๋ณ€ํ™”ํ•˜๋Š” ์ž…์ฒด์ ์ธ ์กด์žฌ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค. --- ## ๐Ÿ“ฆ ์‹คํ–‰ ๋ฐฉ๋ฒ• ```bash conda activate portfolio # Flask ์›น ์„œ๋ฒ„ ์‹คํ–‰ python portfolio/app.py # โ†’ http://127.0.0.1:5000/npc_social_network/ ``` --- ๐Ÿ—บ๏ธ ํ”„๋กœ์ ํŠธ ๋กœ๋“œ๋งต (Roadmap) ๋ณธ ํ”„๋กœ์ ํŠธ๋Š” ์—ฌ๋Ÿฌ ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์ณ ๋ฐœ์ „ํ•ด์™”์œผ๋ฉฐ, ํ˜„์žฌ๋Š” '๋‚ด๋ฉด ์„ธ๊ณ„'์™€ '์›น ๊ธฐ๋ฐ˜ ๊ด€์ฐฐ ์‹œ์Šคํ…œ'์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ ๊ตฌํ˜„์„ ์™„๋ฃŒํ•˜๊ณ , ๋” ๊นŠ์ด ์žˆ๋Š” ์‚ฌํšŒ์  ์ƒํ˜ธ์ž‘์šฉ ๊ตฌํ˜„์„ ์•ž๋‘๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Phase 1: ๋‚ด๋ฉด ์„ธ๊ณ„์˜ ์™„์„ฑ (Core Engine & Intelligence) - โœ… ์™„๋ฃŒ NPC๊ฐ€ ๋…๋ฆฝ์ ์ธ ๊ฐœ์ฒด๋กœ์„œ ์ƒ๊ฐํ•˜๊ณ  ๋А๋‚„ ์ˆ˜ ์žˆ๋Š” ํ•ต์‹ฌ ๋‘๋‡Œ๋ฅผ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. 4๊ณ„์ธต ๊ฐ์ • ๋ชจ๋ธ: Core, Social, Cognitive, Complex๋กœ ๊ตฌ์„ฑ๋œ ์ž์ฒด ๊ฐ์ • ๋ชจ๋ธ์„ ๊ตฌํ˜„ํ•˜์—ฌ, NPC๊ฐ€ ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋‹ค์ฑ„๋กœ์šด ๊ฐ์ •์„ ๋А๋ผ๋„๋ก ์„ค๊ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค. RAG ๊ธฐ๋ฐ˜ ๊ธฐ์–ต ์‹œ์Šคํ…œ: Sentence-Transformers์™€ FAISS๋ฅผ ์ด์šฉ, ๋Œ€ํ™”์˜ ๋งฅ๋ฝ๊ณผ ์˜๋ฏธ์ ์œผ๋กœ ๊ฐ€์žฅ ๊ด€๋ จ ๊นŠ์€ ๊ณผ๊ฑฐ ๊ธฐ์–ต์„ ์ฐพ์•„๋‚ด์–ด ๋Œ€ํ™”์— ํ™œ์šฉํ•˜๋Š” ๊ฒ€์ƒ‰-์ฆ๊ฐ• ์ƒ์„ฑ(RAG) ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋™์  ๊ด€๊ณ„/์„ฑ๊ฒฉ ์‹œ์Šคํ…œ: ๋ชจ๋“  ์ƒํ˜ธ์ž‘์šฉ์€ ๊ด€๊ณ„ ์ ์ˆ˜์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋ฉฐ, ๋ˆ„์ ๋œ ๊ฒฝํ—˜์€ NPC์˜ ์„ฑ๊ฒฉ์„ ์ ์ง„์ ์œผ๋กœ ๋ณ€ํ™”์‹œํ‚ต๋‹ˆ๋‹ค. ์ž์œจ ์—์ด์ „ํŠธ(Planner): LLM์„ ํ™œ์šฉํ•˜์—ฌ NPC๊ฐ€ ์Šค์Šค๋กœ ์ž์‹ ์˜ ์ƒํƒœ๋ฅผ ์ง„๋‹จํ•˜๊ณ , ์žฅ๊ธฐ์ ์ธ ๋ชฉํ‘œ์™€ ๊ทธ๊ฒƒ์„ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๊ตฌ์ฒด์ ์ธ ๊ณ„ํš์„ ์ˆ˜๋ฆฝํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. Phase 2: ์›”๋“œ ๊ด€์ฐฐ์ž ๋Œ€์‹œ๋ณด๋“œ ๊ตฌ์ถ• (Web-based Visualization) - โœ… ์™„๋ฃŒ NPC์˜ ๋ณต์žกํ•œ ๋‚ด๋ฉด๊ณผ ๊ด€๊ณ„ ๋ณ€ํ™”๋ฅผ ์ง๊ด€์ ์œผ๋กœ ๊ด€์ฐฐํ•˜๊ณ , ์‹œ๋ฎฌ๋ ˆ์ด์…˜์— ๊ฐœ์ž…ํ•  ์ˆ˜ ์žˆ๋Š” ์›น ๊ธฐ๋ฐ˜ ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ์™„์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ์‹ค์‹œ๊ฐ„ ๊ด€๊ณ„ ๋„คํŠธ์›Œํฌ: vis-network ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ NPC ๊ฐ„์˜ ๊ด€๊ณ„(์นœ๊ตฌ, ์  ๋“ฑ)์™€ ๊ทธ ๊ฐ•๋„๋ฅผ ์‹œ๊ฐ์ ์ธ ๊ทธ๋ž˜ํ”„๋กœ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. NPC ์ƒ์„ธ ์ •๋ณด ํŒจ๋„: ํŠน์ • NPC๋ฅผ ํด๋ฆญํ•˜๋ฉด, ํ•ด๋‹น NPC์˜ ํ˜„์žฌ ๊ฐ์ •, ๋ชฉํ‘œ, ์ตœ๊ทผ ๊ธฐ์–ต ๋“ฑ ๋ชจ๋“  ๋‚ด๋ฉด ์ƒํƒœ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์‹œ๊ฐ„ ์ œ์–ด: Play/Pause, Next Tick ๋ฒ„ํŠผ์„ ํ†ตํ•ด ์‹œ๋ฎฌ๋ ˆ์ด์…˜์˜ ์‹œ๊ฐ„ ํ๋ฆ„์„ ์ œ์–ดํ•˜์—ฌ, ํŠน์ • ์ˆœ๊ฐ„์˜ ๋ณ€ํ™”๋ฅผ ๋ฉด๋ฐ€ํžˆ ๊ด€์ฐฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์‹œ๊ฐ„ ์ด๋ฒคํŠธ ๋กœ๊ฑฐ: NPC ๊ฐ„์˜ ์ƒํ˜ธ์ž‘์šฉ, ๋ชฉํ‘œ ๋ณ€๊ฒฝ ๋“ฑ ์›”๋“œ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ชจ๋“  ์ฃผ์š” ์ด๋ฒคํŠธ๋ฅผ ์‹ค์‹œ๊ฐ„ ๋กœ๊ทธ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 'ํ”Œ๋ ˆ์ด์–ด'์˜ ์š”์•ฝ๋œ ๊ธฐ์–ต ๊ฐœ์ž… ๋„๊ตฌ: ํŠน์ • NPC ๋˜๋Š” ๋ชจ๋“  NPC์—๊ฒŒ ์ธ์œ„์ ์ธ ์ด๋ฒคํŠธ๋ฅผ ๊ณผ๊ฑฐ์˜ ๊ธฐ์–ต์œผ๋กœ ์ฃผ์ž…ํ•˜์—ฌ, ํŠน๋ณ„ํ•œ ์ƒํ™ฉ์— ๋Œ€ํ•œ NPC์˜ ๋ฐ˜์‘์„ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. Phase 3: ์‚ฌํšŒ์  ์ƒํ˜ธ์ž‘์šฉ ์‹ฌํ™” (Social Interaction Deepening) - โœ… ์™„๋ฃŒ ์ด์ œ ๊ฐœ๋ณ„ NPC์˜ ๋‚ด๋ฉด์„ ๋„˜์–ด, NPC๋“ค์ด ์„œ๋กœ ์˜ํ–ฅ์„ ์ฃผ๊ณ ๋ฐ›์œผ๋ฉฐ ํ•˜๋‚˜์˜ '์‚ฌํšŒ'๋ฅผ ํ˜•์„ฑํ•˜๋Š” ๊ณ ์ฐจ์›์ ์ธ ์ƒํ˜ธ์ž‘์šฉ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. 1๋‹จ๊ณ„: ์†Œ๋ฌธ ๋ฐ ํ‰ํŒ ์‹œ์Šคํ…œ (Gossip & Reputation System): ๊ตฌํ˜„ ๋ชฉํ‘œ: NPC๋“ค ์‚ฌ์ด์— '์†Œ๋ฌธ'์ด ํผ์ง€๋Š” ์‹œ์Šคํ…œ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, A์™€ B์˜ ๋ถ€์ •์ ์ธ ์ƒํ˜ธ์ž‘์šฉ์„ C๊ฐ€ ๋ชฉ๊ฒฉํ–ˆ์„ ๋•Œ, C๋Š” "A์™€ B๊ฐ€ ๋‹คํ‰œ๋‹ค"๋Š” ์†Œ๋ฌธ์„ ๋‹ค๋ฅธ NPC์—๊ฒŒ ํผ๋œจ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋Œ€ ํšจ๊ณผ: ์ด ์†Œ๋ฌธ์€ ๋‹ค๋ฅธ NPC๋“ค์˜ A์™€ B์— ๋Œ€ํ•œ 'ํ‰ํŒ'์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋ฉฐ, ์ด๋Š” ์ƒˆ๋กœ์šด ๊ด€๊ณ„ ๋ณ€ํ™”์˜ ์›์ธ์ด ๋ฉ๋‹ˆ๋‹ค. ํ”Œ๋ ˆ์ด์–ด์˜ ๊ฐœ์ž… ์—†์ด๋„ ๋งˆ์„ ์ „์ฒด์˜ ๊ด€๊ณ„๋ง์ด ์œ ๊ธฐ์ ์œผ๋กœ ์š”๋™์น˜๋Š” ๋ชจ์Šต์„ ๊ด€์ฐฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 2๋‹จ๊ณ„: ๊ฐœ์ธ ๊ฐ„ ์ƒํ˜ธ์ž‘์šฉ ์‹ฌํ™” 2-A. ๋ฉ€ํ‹ฐํ„ด(Multi-turn) ๋Œ€ํ™” ์‹œ์Šคํ…œ: ์—ฌ๋Ÿฌ ํ„ด์— ๊ฑธ์ณ ๊นŠ์ด ์žˆ๋Š” ๋Œ€ํ™”๋ฅผ ๋‚˜๋ˆ„๋Š” ๊ธฐ๋Šฅ. (๊ฐ€์žฅ ์‹œ๊ธ‰ํ•˜๊ณ  ํšจ๊ณผ๊ฐ€ ํผ) 2-B. ์ง€๋Šฅ์  ์‚ฌํšŒ์  ํ–‰๋™: '๋•๊ธฐ', '์„ ๋ฌผ ์ฃผ๊ธฐ' ๋“ฑ ๋Œ€ํ™” ์™ธ์˜ ์ƒํ˜ธ์ž‘์šฉ ์ถ”๊ฐ€. 3๋‹จ๊ณ„: ๊ธฐ๋Šฅ ์ถ”๊ฐ€ ๋ฐ ๊ฐœ์„  ์‚ฌํ•ญ ์ •๋ฆฌ 3-A. ์‚ฌํšŒ์  ๊ทธ๋ฃน ํ˜•์„ฑ (Clique Formation) - ๋‚˜์ค‘์— ์ง„ํ–‰ ๊ตฌํ˜„ ๋ชฉํ‘œ: ๊ด€๊ณ„ ์œ ํ˜•(friend, rival)๊ณผ ํ‰ํŒ์„ ๊ธฐ๋ฐ˜์œผ๋กœ NPC๋“ค์ด ์ž๋™์œผ๋กœ ๊ทธ๋ฃน์ด๋‚˜ ํŒŒ๋ฒŒ์„ ํ˜•์„ฑํ•˜๋Š” ์‹œ์Šคํ…œ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋Œ€ ํšจ๊ณผ: NPC๋“ค์€ ์ž์‹ ์ด ์†ํ•œ ๊ทธ๋ฃน์˜ ๊ตฌ์„ฑ์›๊ณผ ๋” ์ž์ฃผ ๊ธ์ •์ ์ธ ์ƒํ˜ธ์ž‘์šฉ์„ ํ•˜๊ณ , ๊ฒฝ์Ÿ ๊ทธ๋ฃน์˜ ๊ตฌ์„ฑ์›์€ ํ”ผํ•˜๊ฑฐ๋‚˜ ๋ถ€์ •์ ์ธ ์ƒํ˜ธ์ž‘์šฉ์„ ํ•˜๋Š” ๋“ฑ, ๋”์šฑ ๋ณต์žกํ•˜๊ณ  ํ˜„์‹ค์ ์ธ ์‚ฌํšŒ์  ํ–‰๋™์„ ๋ณด์—ฌ์ฃผ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. 3-B. ํ”Œ๋ ˆ์ด์–ด ๊ฐœ์ž… ๋ฐ ๊ด€๊ณ„ ํ˜•์„ฑ ์‹œ์Šคํ…œ ๊ตฌํ˜„ ๋ชฉํ‘œ: ํ”Œ๋ ˆ์ด์–ด๊ฐ€ '์‹ '์˜ ๊ด€์ ์—์„œ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์— ์ง์ ‘ ๊ฐœ์ž…ํ•˜์—ฌ ์ƒˆ๋กœ์šด ๊ด€๊ณ„๋‚˜ ์‚ฌ๊ฑด์„ ๋งŒ๋“ค์–ด๋‚ด๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„. ์ฃผ์š” ๊ธฐ๋Šฅ: '์†Œ๊ฐœ' ๊ธฐ๋Šฅ, ๊ด€๊ณ„ ๊ฐ•์ œ ์„ค์ •, ํŠน์ • ์ƒํ™ฉ ์—ฐ์ถœ ๋“ฑ. 3-C. UI/UX ์•ˆ์ •์„ฑ ๊ฐœ์„  ๊ตฌํ˜„ ๋ชฉํ‘œ: ๋Œ€์‹œ๋ณด๋“œ์˜ ์‚ฌ์šฉ ๊ฒฝํ—˜์„ ๊ฐœ์„ ํ•ฉ๋‹ˆ๋‹ค. ์ฃผ์š” ๊ธฐ๋Šฅ: ๊ด€๊ณ„๋„ ๊ทธ๋ž˜ํ”„์˜ ๋–จ๋ฆผ ํ˜„์ƒ ํ•ด๊ฒฐ, CSS ๋ ˆ์ด์•„์›ƒ ์ •๋ฆฌ. 4๋‹จ๊ณ„: ๊ณ ์ฐจ์›์  ์ž์•„ ๊ธฐ๋Šฅ ํ™œ์„ฑํ™” - ๊ทธ๋ฃน ํ™œ๋™ ๋“ฑ์„ ํ†ตํ•ด ์–ป์€ ์ƒˆ๋กœ์šด ๊ฒฝํ—˜์„ ๋ฐ”ํƒ•์œผ๋กœ, NPC๊ฐ€ ์ž์‹ ์˜ ๊ด€๊ณ„๋ฅผ ์ •๋ฆฌํ•˜๊ฑฐ๋‚˜ ์ƒˆ๋กœ์šด ๊นจ๋‹ฌ์Œ์„ ํš๋“. - 1๋‹จ๊ณ„: ๊ด€๊ณ„ ์žฌ์ •์˜ (Relationship Redefinition) - ๊ตฌํ˜„ ๋ชฉํ‘œ: NPC๊ฐ€ ํŠน์ • ์ธ๋ฌผ๊ณผ์˜ ๊ด€๊ณ„๋ฅผ ์Šค์Šค๋กœ ๋˜๋Œ์•„๋ณด๊ณ , "A๋Š” ๋‚˜์—๊ฒŒ ์ด๋Ÿฐ ์กด์žฌ์•ผ" ๋ผ๊ณ  ์ž์‹ ๋งŒ์˜ ํ•œ ์ค„ ์š”์•ฝ ์ •์˜๋ฅผ ๋‚ด๋ฆฌ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. - ๋™์ž‘ ๋ฐฉ์‹: ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋ฃจํ”„์—์„œ ๋‚ฎ์€ ํ™•๋ฅ ๋กœ ์ด ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด, NPC๋Š” ํŠน์ • ๋Œ€์ƒ๊ณผ์˜ ํ•ต์‹ฌ ๊ธฐ์–ต๋“ค์„ ๋‹ค์‹œ ์‚ดํŽด๋ณด๊ณ , ๊ทธ ๊ด€๊ณ„์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ์š”์•ฝ(summary)์„ ์ƒ์„ฑํ•˜์—ฌ ์ž์‹ ์˜ ๋‚ด๋ฉด์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. - 2๋‹จ๊ณ„: ๊ฐ€์น˜๊ด€ ํ˜•์„ฑ (Value Formation) - ๊ตฌํ˜„ ๋ชฉํ‘œ: ์ˆ˜๋งŽ์€ ๊ฒฝํ—˜(๊ธฐ์–ต)์„ ํ†ตํ•ด, "์ •์ง์ด ์ตœ๊ณ ์˜ ๊ฐ€์น˜์ด๋‹ค" ๋˜๋Š” "๊ฐ€์กฑ์„ ์ง€ํ‚ค๋Š” ๊ฒƒ์ด ๊ฐ€์žฅ ์ค‘์š”ํ•˜๋‹ค"์™€ ๊ฐ™์€ **์ž์‹ ๋งŒ์˜ ์‹ ๋…์ด๋‚˜ ์ขŒ์šฐ๋ช…(์ƒ์ง• ๊ธฐ์–ต)**์„ ํ˜•์„ฑํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. - ๋™์ž‘ ๋ฐฉ์‹: NPC๊ฐ€ ์ถฉ๋ถ„ํ•œ ๊ฒฝํ—˜(์˜ˆ: ๊ธฐ์–ต 30๊ฐœ ์ด์ƒ)์„ ์Œ“์•˜์„ ๋•Œ, ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๋ฃจํ”„์—์„œ ๊ทนํžˆ ๋‚ฎ์€ ํ™•๋ฅ ๋กœ ์ด ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜๋ฉด, NPC๋Š” ์ž์‹ ์˜ ์ „์ฒด ๊ธฐ์–ต์„ ์ข…ํ•ฉํ•˜์—ฌ ๊ฐ€์žฅ ํ•ต์‹ฌ์ ์ธ ๊นจ๋‹ฌ์Œ์„ ํ•˜๋‚˜์˜ '์ƒ์ง• ๊ธฐ์–ต'์œผ๋กœ ๋งŒ๋“ค์–ด ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. Phase 4: ์ž์•„์™€ ์œค๋ฆฌ์˜ ํƒ๊ตฌ (Self & Ethics Exploration) - ๐Ÿš€ ์žฅ๊ธฐ ๊ณผ์ œ NPC๊ฐ€ ๋‹จ์ˆœํ•œ ๋ฐ˜์‘์„ ๋„˜์–ด, ์Šค์Šค๋กœ๋ฅผ ์ดํ•ดํ•˜๊ณ  ๋„๋•์ ์ธ ํŒ๋‹จ์„ ๋‚ด๋ฆฌ๋Š” ๊ณ ์ฐจ์›์ ์ธ ์ž์•„๋ฅผ ํƒ๊ตฌํ•ฉ๋‹ˆ๋‹ค. ์œค๋ฆฌ ์‹œ์Šคํ…œ๊ณผ ๋„๋•์  ๋”œ๋ ˆ๋งˆ (Ethics & Moral Dilemmas): ๊ตฌํ˜„ ๋ชฉํ‘œ: NPC๊ฐ€ ๊ฐ€์ง„ '์ƒ์ง• ๊ธฐ์–ต'(์˜ˆ: "์ •์ง์ด ์ตœ๊ณ ์˜ ๊ฐ€์น˜์ด๋‹ค")์„ ํ•ต์‹ฌ ๊ฐ€์น˜๊ด€์œผ๋กœ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ€์น˜๊ด€์— ๋ฐ˜ํ•˜๋Š” ๋„๋•์  ๋”œ๋ ˆ๋งˆ ์ƒํ™ฉ(์˜ˆ: "๊ฐ€์กฑ์„ ์‚ด๋ฆฌ๊ธฐ ์œ„ํ•ด ๊ฑฐ์ง“๋ง์„ ํ•ด์•ผ ํ•˜๋Š”๊ฐ€?")์„ ์ œ์‹œํ•˜๊ณ , NPC๊ฐ€ ์ž์‹ ์˜ ๊ฐ€์น˜๊ด€๊ณผ ์ƒํ™ฉ ์‚ฌ์ด์—์„œ ์–ด๋–ค ๊ฒฐ์ •์„ ๋‚ด๋ฆฌ๋Š”์ง€ ๊ด€์ฐฐํ•ฉ๋‹ˆ๋‹ค. ๋ฉ”ํƒ€์ธ์ง€ ๋ฐ ์ž์•„ ์„ฑ์ฐฐ (Metacognition & Self-Reflection): ๊ตฌํ˜„ ๋ชฉํ‘œ: NPC๊ฐ€ "๋‚ด๊ฐ€ ์™œ ์ง€๊ธˆ ์Šฌํ”ˆ ๊ฐ์ •์„ ๋А๋ผ์ง€? ์•„, ์–ด์ œ ์•จ๋ฆฌ์Šค์™€ ๋‹คํ‰œ๋˜ ๊ธฐ์–ต ๋•Œ๋ฌธ์ด๊ตฌ๋‚˜"์™€ ๊ฐ™์ด ์ž์‹ ์˜ ๊ฐ์ •์ด๋‚˜ ์ƒ๊ฐ์˜ ์›์ธ์„ ์Šค์Šค๋กœ ์ถ”๋ก ํ•˜๊ณ  ์ดํ•ดํ•˜๋Š” '๋ฉ”ํƒ€์ธ์ง€' ์‹œ์Šคํ…œ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋Œ€ ํšจ๊ณผ: ์ด๋Š” NPC๊ฐ€ ๋‹จ์ˆœํ•œ ๊ฐ์ • ํ‘œํ˜„์„ ๋„˜์–ด, ์ž์‹ ์˜ ๋‚ด๋ฉด ์ƒํƒœ๋ฅผ ์ดํ•ดํ•˜๊ณ  ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ๋Š” ํ•œ ๋‹จ๊ณ„ ๋” ๋†’์€ ์ˆ˜์ค€์˜ '์ž์•„'๋ฅผ ๊ฐ–๊ฒŒ ๋จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. Phase 5: ๋…ผ๋ฌธ/์—ฐ๊ตฌ ๊ฒฐ๊ณผ ์ •๋ฆฌ - ์ตœ์ข… ๊ณผ์ œ ๊ตฌํ˜„ ๋ชฉํ‘œ: ์ง„ํ–‰ํ•œ ๋‚ด์šฉ์„ ํ† ๋Œ€๋กœ IEEE ํ•™ํšŒ์— ์ œ์ถœํ•  ๋…ผ๋ฌธ์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ฐธ๊ณ  ๋…ผ๋ฌธ: [1] J. Park, J. S. Wu, T. N. Hashimoto, and M. S. Bernstein, "Generative Agents: Interactive Simulacra of Human Behavior," arXiv preprint arXiv:2304.03442, 2023. [2] L. Li et al., "Evolving Agents: Interactive Simulation of Dynamic and Diverse Human Personalities," IEEE Transactions on Games, 2024. [3] X. Cheng et al., "PsyMem: Fine-grained psychological alignment and Explicit Memory Control for Advanced Role-Playing LLMs," arXiv preprint arXiv:2505.12814, 2025. [4] B. W. Roberts and D. Mroczek, "Personality Trait Change in Adulthood," Current Directions in Psychological Science, vol. 17, no. 1, pp. 31โ€“35, 2008. [5] C. J. Soto, "How replicable are links between personality traits and consequential life outcomes? The life outcomes of personality replication project," Psychological Science, vol. 27, no. 7, pp. 949โ€“961, 2016. [6] T. A. Klimstra, W. K. Luyckx, M. B. Hale III, S. J. Goossens, and W. Meeus, "Personality development in adolescence: Longitudinal analyses and associations with life events," Journal of Research in Personality, vol. 43, no. 3, pp. 345โ€“354, 2009. [7] J. Specht, B. Egloff, and S. C. Schmukle, "Stability and change of personality across the life course: The impact of age and major life events on mean-level and rank-order stability of the Big Five," Journal of Personality and Social Psychology, vol. 101, no. 4, pp. 862โ€“882, 2011. [8] W. Bleidorn, C. J. Hopwood, and R. E. Lucas, "Life Events and Personality Trait Change," Annual Review of Psychology, vol. 73, pp. 109โ€“133, 2022. [9] I. Puerta-Merino and J. Sabater-Mir, "LLM Reasoner and Automated Planner: A New NPC Approach," arXiv preprint arXiv:2501.10106, 2025. [10] P. Chiang et al., "Collaborative Quest Completion with LLM-driven Non-Player Characters in Minecraft," arXiv preprint arXiv:2403.12329, 2024. [11] K. Tsuchiya et al., "Leveraging Large Language Models for Active Merchant Non-player Characters," Proceedings of the 2024 CHI Conference on Human Factors in Computing Systems (CHI '24), 2024. ยฉ 2025 NPC Social Network Simulation Project v3