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

발행: (2025년 12월 26일 오전 03:17 GMT+9)
7 분 소요
원문: Dev.to

Source: Dev.to

Cover image for I Built a Maze Runner Simulation Where Teenage Sam Altman Survives the Glade

제임스 대시너의 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.920.75모든 것을 탐색 → 많이 다친다~720.58
외교적인 샘0.680.94거의 모든 사람과 친구가 된다~960.82
신중한 엔지니어0.450.62많이 숨고, 편안히 살아남는다1000.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, 그리고 여러분의 미로에 언제나 출구가 있길 바랍니다. 🌀

다음에 어떤 이상한 시뮬레이션을 만들어 볼까요? 👇

Back to Blog

관련 글

더 보기 »