공포 게임의 로직을 리버스 엔지니어링해 오픈소스 엔딩 계산기를 만들었다 (Astro + Tailwind)

발행: (2026년 1월 19일 오후 10:05 GMT+9)
4 min read
원문: Dev.to

Source: Dev.to

The Problem: Hidden Game Mechanics 🕵️‍♂️

저는 최근 인디 호러 RPG Dead Plate(RachelDrawsThis 제작)에 빠져버렸습니다. 식인 요리사를 위해 일하는 웨이터에 관한 환상적인 게임이지만, 한 가지 큰 불만이 있습니다: 불투명한 RNG.
게임은 SuspicionAffinity 같은 숨겨진 스탯에 의존합니다. 처음 10분 안에 대사를 하나 잘못 선택하면, 한 시간 뒤에 True Ending을 볼 수 없게 됩니다.

50페이지에 달하는 텍스트 공략을 번갈아 가며 읽는 데 지쳤습니다. 실시간으로 내 스탯을 추적해줄 도구가 필요했죠. 그래서 직접 만들었습니다.

HorrorHub – Interactive Ending Calculator & Character Database

게임의 의사결정 트리를 역공학하고 HorrorHub라는 인터랙티브 엔딩 계산기와 캐릭터 데이터베이스를 만들었습니다.

UI는 게임의 어두운, 거친 미학에 맞게 스타일링했으며, PC에서 플레이하면서 모바일 사용에 최적화되었습니다.

Technical Stack

Framework – Astro

Island Architecture를 제공하는 Astro를 선택했습니다. 사이트의 대부분(스토리 페이지, 캐릭터 소개)은 정적 HTML(JS 없음)로 구성돼 있어 매우 빠릅니다.

Styling – Tailwind CSS v4

Tailwind 덕분에 복잡한 그라디언트와 다크 모드 로직을 갖춘 “Classified Archives” 스타일을 신속하게 프로토타이핑할 수 있었습니다.

State Management

계산기 부분은 필요한 곳에만 주입된 간단한 바닐라 JS 로직을 사용했습니다.

Data Structure

모든 경로를 하드코딩하는 대신, 게임 로직을 JSON 구조로 매핑했습니다. 아래는 간소화된 예시입니다:

{
  "event_id": "day_3_fridge",
  "choices": [
    {
      "text": "Check the freezer",
      "effect": { "suspicion": +10, "item": "key_fragment" }
    },
    {
      "text": "Ignore it",
      "effect": { "suspicion": -5 }
    }
  ]
}

계산기는 이 JSON 트리를 순회하면서 의심 점수를 합산해 플레이어가 받을 네 가지 엔딩 중 어느 쪽인지 예측합니다.

Open Source Data 🤝

게임 데이터는 누구나 접근할 수 있어야 한다고 생각합니다. Dead Plate 전체 JSON 데이터셋을 GitHub에 오픈소스로 공개했습니다. 위키, AI 에이전트, 기타 프로젝트에 자유롭게 활용하세요.

What’s Next?

다른 메카닉이 복잡한 호러 게임들(예: The Freak Circus)을 위한 허브로 확장할 계획입니다.

Astro 개발자이거나 인디 호러 팬이라면 UI나 코드 구조에 대한 피드백을 언제든 환영합니다.

읽어 주셔서 감사합니다! 💀

엔딩 계산에 버그를 발견하면 GitHub에 이슈를 열어 주세요.

Tags: #astro #javascript #opensource #gamedev

Back to Blog

관련 글

더 보기 »