기믹들
Project Durian에서 사용하는 월드 기믹을 종류별로 정리한다. 구현된 동작은 C++ 코드 기준으로, 동작 설계는 기믹 리스트와 기술 문서 기준으로 구분한다. 문서의 기획 내용이 현재 게임에서 모두 동작한다는 뜻은 아니다.
상태 표기
- 코드 확인: 관련 C++ 동작을 확인했다. 블루프린트 설정과 실제 플레이 검증은 별도일 수 있다.
- 설계: 문서에 규칙이 정리되어 있으나, 이 문서만으로 구현 완료를 확인할 수 없다.
- 미정·예정: 아이디어 또는 후속 작업으로 기록되어 있다.
월드 오브젝트와 퍼즐 기믹
폭탄 파괴 오브젝트 (BreakableObject)
- 역할: 폭탄으로 파괴할 수 있는 돌 오브젝트다.
- 동작: 리모트 폭탄 피해를 받으면 한 번 파괴되고 액터를 제거한다. 피해량 임계값이나 파편 생성은 이 클래스에 없다.
- 상태: 코드 확인.
ABreakableObject::TakeDamage가 피해 원인을ARemoteBomb으로 제한한다. 맵에서 쓰는 구체 Blueprint와 시각 효과 연결은 별도 확인이 필요하다.
물리 블록·금속 오브젝트
- 역할: 마그넷 캐치로 옮겨 압력판을 누르거나 수면을 건너는 데 쓰는 퍼즐 물체다.
- 동작: 마그넷 캐치 대상 자격은
AbilityReactionComponent의 반응 타입 등 블루프린트 설정에 따라 정한다. 물리 오브젝트가 압력판 감지 영역에 놓이면 압력판을 활성화할 수 있다. - 상태: 물체 이동 규칙은 설계되어 있다. 실제 오브젝트별 설정은 블루프린트에서 확인해야 한다.
압력판 (TriggerSourcePlate)
- 역할: 블록 등 물리 오브젝트가 놓였는지 감지해 연결된 대상에 켜짐/꺼짐 신호를 보낸다.
- 동작: 태그가
PlateWeightTag인 액터의 물리 시뮬레이션 컴포넌트가 감지 박스에 겹치고, 해당 액터가 마그넷 캐치로 잡혀 있지 않으면Active가 된다. 태그가 없거나 잡고 있는 대상만 있으면Ready; 꺼진(Off) 동안에는 검사하지 않는다. - 상태: 상태 판정과 신호 전파,
MI_Box_7의Emissive_Color상태 변경은 코드 확인. 트리거 색상·지속 시간과 문의 머티리얼·조명 설정은/Game/Data/Puzzles/DA_PuzzleProfiles데이터 에셋에서 관리한다. 기본 색상은Off회색,Ready빨강,Active초록이다. - 주의:
PlateWeightTag와 감지 박스 Collision 태그, 소스 참조, 머티리얼 슬롯은 Blueprint에서 맞춰야 한다. 활성 판정에는 플레이어 능력 컴포넌트가 필요하다.
트리거 반응 대상 (TriggerTarget)
- 역할: 압력판 등의 신호를 받아 문이나 다른 장치의 상태를 바꾼다.
- 동작:
TriggerTargetComponent가 지정된 소스의 상태 변경에 구독하고, 액터에 구현된OnTriggerStateChanged이벤트를 호출한다. 이 컴포넌트는 대상의 구체적인 동작을 정하지 않으며, 이동이나 머티리얼 변경은 대상 블루프린트가 구현한다. - 상태: 신호 전달은 코드 확인. 연결된 소스와 대상 이벤트는 블루프린트 인스턴스 설정도 확인해야 한다.
문
- 역할: 트리거 활성 신호에 따라 통로를 연다.
- 설계: 활성 시 열리고 비활성 시 닫히며, 플레이어나 오브젝트를 끼우지 않도록 한다. 속도, 이동 거리, 지연과 안전 처리는 문 블루프린트별 설정이 필요하다.
- 상태: 공통 방향은 설계. 현재 문 액터의 완성 동작은 여기서 확인하지 않았다.
승강·이동 발판
- 역할: 압력판이나 폭발, 얼음 기둥을 이용해 플레이어가 더 높은 곳 또는 수면 너머로 이동하게 한다.
- 압력판 연동 승강 플랫폼:
TriggerTargetComponent는 트리거 상태를 Blueprint 이벤트로 전달한다. 상승·하강 구현과 플레이어 동반 이동은 대상 Blueprint에서 확인해야 한다. - 폭탄 반응 승강 플랫폼:
ALiftableObject::TakeDamage는 아래쪽에서 리모트 폭탄 피해를 받으면 물리 리프트 메시를 위로 임펄스해 상승 상태를 시작한다. 수치와 리프트 메시 설정은 Blueprint 확인 항목이다. - 얼음 지지 발판: 얼음 기둥의 실제 충돌로 문·발판을 밀어 올리고, 얼음이 사라지면 중력으로 내려오게 하는 방식이 설계되어 있다.
- 상태: 위 동작은 설계 단계이며, 관련 블루프린트 동작은 개별 확인이 필요하다. 왕복 이동 발판도 후보 기믹으로 기록되어 있다.
능력과 환경 기믹
마그넷 캐치
- 역할: 지정된 물리 오브젝트를 조준해 잡고, 이동하고, 거리를 조절한 뒤 놓는다.
- 대상:
MagnesisTarget반응 타입 등 유효 대상으로 설정된 물체만 선택한다. - 사용처: 금속 블록을 압력판에 옮기거나 수면 위 이동 경로를 만든다.
- 상태: 능력 동작과 해제 규칙은 설계되어 있다. 물체별 대상 설정은 에셋에서 확인한다.
아이스메이크와 얼음 기둥
- 역할:
CryonicTarget수면 위에 얼음 기둥을 만들어 발판과 엄폐물로 사용한다. - 코드 확인: 조준 대상은
CryonicTarget반응 타입으로 판정한다. 배치 미리보기·유효 위치 검사·생성 쿨다운을 사용하며, 최대 수를 넘으면 가장 오래된 기둥을 제거한다. 최대 개수는MaxIcePillarCount데이터 값이다. 생성된 기둥은 조준해 제거할 수 있고 코드상 자동 만료 타이머는 없다. - 물리: 생성 기둥은 고정 충돌 오브젝트이며, 기둥 자체는 움직이지 않는다. 기둥이 문이나 물리 오브젝트를 밀 수 있도록 하는 설계와
IceReactive예외 규칙은 별도 기믹 항목이다. - 상태: 위 생성 흐름은 C++에서 확인했다. 기둥과 미리보기 Blueprint, 충돌 형태는 에디터/PIE에서 검증해야 한다.
수영·수면과 물 위 오브젝트
- 역할: 얼음 생성 가능 영역을 제공하고, 물 위 금속 오브젝트를 옮기는 퍼즐 공간으로 쓰인다.
- 동작: 수영은
CharacterMovement의 Swimming 모드를 사용한다. 플레이어 C++ 코드는 수영 대기·전진 시퀀스를 재생하고 수면 높이를 유지한다. 가장자리에서는 클라이밍 컴포넌트의 수영 이탈 처리를 시도한다. - 상태: 애니메이션 에셋 경로와 C++ 전환을 확인했고 사용자가 현재 수영 동작이 정상임을 확인했다. 물 볼륨·사망 판정은 맵 설정별 확인 사항이다. 물 위 오브젝트는 마그넷 캐치와 아이스메이크 퍼즐 경로에 활용할 수 있다.
타임록 대상과 목표물
- 역할: 타임록으로 물체를 정지시키고 충격을 축적해 목표 방향으로 발사하는 퍼즐을 구성한다.
- 상태: 대상별 반응 설정 및 목표 판정은 개별 구현 상태 확인이 필요하다.
폭탄과 파괴 대상
- 역할: 리모트 폭탄을 설치·기폭해 물리 오브젝트에 충격을 주거나 파괴 가능한 오브젝트를 제거한다.
- 형태: 구형은 굴러가고 정육면체형은 상대적으로 고정되는 사용 차이를 둔다.
- 코드 확인:
ABreakableObject는 폭탄 피해에 제거되며,ALiftableObject는 아래에서 받은 폭탄 피해로 물리 리프트를 상승시킬 수 있다. 두 클래스 모두 Blueprint 구성과 시각 효과는 별도로 확인해야 한다.
공통 연결 구조
입력·감지 기믹
압력판, 능력 조준, 폭발, 수면 판정
↓
상태·신호
Ready / Active 또는 유효 / 무효
↓
반응 기믹
문, 플랫폼, 파괴 대상, 목표
TriggerSource는Off,Ready,Active상태를 관리하지만, 논리 신호는Active여부만 전달한다.TriggerTargetComponent는 신호를 블루프린트 이벤트로 전달한다. 상태에 맞는 외형, 머티리얼, 애니메이션은 실제 연결된 대상 구현을 확인해야 한다.- 기믹의 설계 상태와 실제 게임 내 연결·표현은 별개다. 작동 여부는 해당 맵과 블루프린트 설정을 포함해 Unreal Editor에서 확인한다.