나는 십대 샘 알트먼이 글레이드를 살아남는 Maze Runner 시뮬레이션을 만들었다 – 2025년 12월 25일
Source: Dev.to

제임스 대시너의 The Maze Runner 세계에 10대 버전의 Sam Altman을 투입하면 어떻게 될까요?
놀라울 정도로 중독성 있는, 성격‑기반 시뮬레이션을 얻게 됩니다. 이 시뮬레이션은 다음을 결합합니다:
- Big Five (OCEAN) 성격 모델링
- 확률적 의사결정
- 토큰‑효율적인 LLM 내러티브 생성
- Health + relationship 추적
- 아름다운 콘솔 출력 + matplotlib 건강 그래프
그리고 네 — 들리는 만큼 이상하고 재미있습니다.
한 문장으로 요약된 개념
16세의 샘 알트먼이 박스 안에서 깨어납니다.
그의 생존 확률은 (대부분) 당신이 그를 얼마나 호기심 많고, 친화적이며, 정서적으로 안정된 사람으로 판단하느냐에 달려 있습니다.
왜 이것이 존재하는가
I wanted to:
- OCEAN 성격 특성을 실제 게임 메커니즘으로 활용하고 싶었다
- 비용을 많이 쓰지 않고 가벼운 LLM 호출로 분위기 텍스트를 사용하고 싶었다
- 약 200줄 안팎으로 동작하는 인터랙티브 팬‑픽 같은 무언가를 만들고 싶었다
- 십대 샘 알트만이 미로를 푸는 모습을 생각할 구실을 만들고 싶었다 (묻지 마세요)
핵심 아키텍처 (이렇게 어리석은 아이디어에 비해 놀라울 정도로 깔끔함)
모든 것이 하나의 영광스러운 독립 파일에 들어 있습니다 (MVP 생활):
from dataclasses import dataclass
from typing import Dict
import random
@dataclass
class Character:
name: str
age: int
ocean: Dict[str, float]
health: float = 100.0
relationships: Dict[str, float] = None
def make_decision(self, event_type: str) -> str:
if event_type == "danger":
return "explore" if random.random() < self.ocean["O"] else "hide"
# ... etc
def generate_narrative(...):
try:
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
max_tokens=85,
temperature=0.7,
# …
)
except Exception:
return "Fallback: Sam did a thing. It was probably fine."
시뮬레이션 루프는 매우 단순합니다:
while sim.run_day():
pass
끝에 멋진 표와 건강 플롯을 출력합니다.
성격이 정말 중요합니다 (예상보다 더 많이)
| 프로필 변형 | 개방성 | 친화성 | 6일 후 결과 | 최종 건강 | 평균 관계 |
|---|---|---|---|---|---|
| 호기심 많은 창업자 | 0.92 | 0.75 | 모든 것을 탐색 → 많이 다친다 | ~72 | 0.58 |
| 외교적인 샘 | 0.68 | 0.94 | 거의 모든 사람과 친구가 된다 | ~96 | 0.82 |
| 신중한 엔지니어 | 0.45 | 0.62 | 많이 숨고, 편안히 살아남는다 | 100 | 0.41 |
개방성이 높은 버전은 훨씬 더 재미있고 (고통스럽게) 시청할 수 있습니다.
LLM 사용 — 극단적인 편집증 버전
I wanted narrative flavor without spending $12 on one funny run.
Solution
- 생성당 최대 85 토큰
- 온도 0.7 (혼란스럽지만 미치지는 않음)
- 여전히 의미가 통하는 완벽한 대체 텍스트
- 하루에 한 번만 호출
50번 전체 실행에 대한 총 비용 ≈ $0.04–$0.07 (2025년 12월 가격 기준).
콘솔 출력 포르노 (우리는 모두 예쁜 터미널을 사랑하니까)
Day 4 | Sam is offered a chance to run the Maze with the Runners.
→ Decision: explore
→ Outcome: positive
Sam sprinted into the twisting corridors, eyes wide with that terrifying mix of terror and fascination only a true puzzle addict could feel.
Health: 100 | Relationships: Newt:0.68 Thomas:0.62 Chuck:0.58
청결한 요약 표와 청소년 기분 변동처럼 건강이 오르내리는 matplotlib 선 차트가 뒤따릅니다.
지금 바로 실행하는 방법
git clone https://github.com/ilyarah/Maze_Runner_Sam_Altman_Sim_MVP.git
cd Maze_Runner_Sam_Altman_Sim_MVP
pip install openai matplotlib
export OPENAI_API_KEY="sk-..."
python simulation/main.py
실행당 약 20–40 초가 소요됩니다 (대부분 OpenAI 대기 시간).
미래 악당 계획 (지루하지 않다면)
- 현재 체력/관계에 기반한 분기 이벤트
- 여러 엔딩 (탈출 / Keeper가 되기 / Griever에게 잡아먹히기)
- pygame을 이용한 GUI (왜 안 되겠어)
- 민감도 분석: 개방성이 너무 많은 기준은?
- Sam을 다른 공인으로 교체하기 (원하잖아)
최종 생각
이 프로젝트는 원래 바보 같은 농담으로 시작했지만, 어느새 전개되는 모습을 보는 것이 정말 흥미로워졌습니다.
고정된 성격 특성 + 무작위성 + 작은 LLM 주입이 결합되어 <300줄의 코드로도 놀라울 정도로 살아있는 듯한 이야기가 자연스럽게 만들어집니다.
가장 어리석은 아이디어일수록 에이전시, 성격 모델링, 그리고 LLM을 재미있게 만들기 위해 실제로 얼마나 적은 프롬프트가 필요한지에 대해 가장 많이 가르쳐 줍니다.
한 번 시도해 보세요. OCEAN 값을 바꿔 보세요. “너무 호기심이 많다”는 이유로 그리버에게 공격당하는 10대 샘을 보며 웃어 보세요.
엘론이나 비탈릭으로 더 형편없는 버전을 만든다면 — 저를 태그해 주세요.
메리 크리스마스 2025, 그리고 여러분의 미로에 언제나 출구가 있길 바랍니다. 🌀
다음에 어떤 이상한 시뮬레이션을 만들어 볼까요? 👇