개요
디렉터가 조건만 깔면 월드가 받아 상황을 키우는, 긴장 강약 자동 조절 시스템.
Tempo 가 하는 일
게임이 알아서 위기 상황을 만들어내는 시스템입니다. 연출 담당(디렉터) 이 불·비·바람 같은 조건만 슬쩍 깔아두면, 월드 반응 쪽이 그 조건을 받아 불이 번지듯 상황을 키웁니다. 한 장면 한 장면 미리 짜두지 않아도, 매번 다른 상황이 알아서 벌어집니다.
두 게임에서 아이디어를 가져왔습니다.
- Left 4 Dead — 상황의 강약(템포)을 자동으로 조절.
- The Legend of Zelda: BotW — 불·물·전기가 정해진 규칙대로 서로 반응.
이름이 Tempo 인 이유: 이 패키지가 결국 하는 일이 게임의 긴장 '템포(강약)'를 조절하는 것이기 때문입니다.
한 바퀴 도는 흐름
[디렉터] ──조건 깔기(불·비·바람·번개)──▶ [월드 반응]
▲ │
│ 긴장도 되돌려받기 │ 결과 계산 (번짐·꺼짐·전기 통함)
│ (플레이어 위협 + 주변에서 벌어지는 일) ▼
└────────────── [긴장도 계산기] ◀── 플레이어 위협 / 지금 벌어지는 일세 부분이 매 프레임 항상 긴장도 → 디렉터 → 월드 순서로 돕니다.
| 부분 | 클래스 | 하는 일 |
|---|---|---|
| 월드 반응 | WorldReaction | 격자에서 규칙대로 번지고, 지금 벌어지는 일 목록을 갱신 |
| 디렉터 | DirectorBrain | 긴장도를 보고 국면을 정해, 예산 안에서 조건만 깖 |
| 긴장도 계산기 | TensionModel | 플레이어 위협 + 주변 상황을 합쳐 0~1 숫자 하나로 |
기본 원칙
- 역할을 둘로 나눈다. 월드 반응은 디렉터의 존재를 전혀 모릅니다. 규칙대로 번지기만 합니다.
- 디렉터는 적을 직접 만들지 않는다. 대신 조건만 깝니다(상류에 불·비·바람·번개구름).
- 디렉터가 보는 건 숫자 하나 — '긴장도'(0~1). 플레이어 위협 + 주변에서 벌어지는 일을 합친 값.
- 숫자는 전부 바깥에서 조정. 규칙표·기준값·가중치는 데이터로 빼서 코드 없이 만집니다.