밸런싱·캔슬·개발 편의 — 감도 단순화 · 스태프 프레일티 · PIE 인트로 스킵
1. 감도 옵션 단순화 — 배타 모드를 걷어내고 X/Y만
마우스 감도에 통합/세부 배타 모드가 들어가 있었다(통합=단일 값, 세부=X/Y 따로). 그런데 직접 눌러보니 "슬라이더 하나냐 둘이냐"를 고르자고 모드 플래그 + BP 통지 + 슬라이더 회색 처리 + 전용 핸들러 둘이 붙어 있었다. 기능 대비 UI·코드 표면이 과했다.
정작 필요한 건 X/Y를 따로 만지는 것뿐이라, 통합 경로(bUseUnifiedSensitivity, 단일 MouseSensitivity, 그 클램프, 모드 핸들러)를 통째로 지우고 축별 값만 남겼다.
// 곱셈도, 모드 분기도 없이 축별 값 그대로.
const float SensitivityX = Settings ? Settings->MouseSensitivityX : 1.f;
const float SensitivityY = Settings ? Settings->MouseSensitivityY : 1.f;
교훈: 선택지를 하나 더 주는 것보다, 정말 필요한 최소 UI로 수렴하는 게 낫다. 옵션이 단순해지고 감도 로직에서 분기가 통째로 사라졌다.
2. PIE 인트로 스킵 개발자 모드 — 플래그를 둘로 분리
밸런싱은 붙였다 껐다를 수십 번 반복하는 일인데, PIE를 누를 때마다 메인 메뉴 → 진입 로딩 → 오프닝 시네마틱을 매번 통과해야 했다. 부팅 스킵 플래그가 하나 있었지만(bSkipMainMenuOnBoot) 로딩·시네마틱까지는 못 건너뛰었다.
그래서 개발자용 스킵을 한 단계 더 두는 쪽으로 플래그를 둘로 나눔.
if (bDeveloperSkipIntroFlow || bSkipMainMenuOnBoot)
{
if (ARetrievePlayerController* RetrievePC = Cast<ARetrievePlayerController>(GetWorld()->GetFirstPlayerController()))
RetrievePC->SetDeveloperSkipIntroFlow(bDeveloperSkipIntroFlow); // → bSkipEntryLoadingScreen
BootstrapNewGameQuest();
GS->TransitionTo(ERetrieveSessionState::InGame);
}
bDeveloperSkipIntroFlow— 메뉴·진입 로딩·오프닝 시네마틱 전부 건너뛰고 바로 인게임. PC에 "진입 로딩 스킵"까지 전달.bSkipMainMenuOnBoot— 메뉴만 건너뛰고 진입 로딩 화면은 남김.- 기본값
true → false로 하향: 스킵은 개발 편의지 기본 동작이면 안 되니, 실수로 켠 채 빌드가 나가는 걸 막음.
이 하나로 밸런싱 이터레이션 속도가 체감으로 확 붙었다. 개발 편의 플래그는 명시적으로 켤 때만 동작하게 둔다.
3. 전체 스탯 밸런싱 + 스태프 프레일티
DT_CharacterStats를 훑으며 캐릭터 전반 스탯을 맞췄다. 손이 오래 간 건 스태프. 스태프는 원거리라 근접보다 안전한데, 데미지·자원까지 편하면 사실상 상위호환이 돼버린다.
→ "안전한 대신 무르다"는 트레이드오프를 만들기로 하고, 스태프를 들면 최대 체력이 깎이는 프레일티 효과(GE_StaffFrailty)를 만들어 스태프 어빌리티 세트(DA_AbilitySet_Staff)가 패시브로 부여하게 했다.
- 수치가 아니라 무기 선택 자체에 리스크를 붙이는 방향 → 스태프 데미지를 조금 세게 줘도 "무른 대신 강한" 원거리로 균형.
- GE를 어빌리티 세트에 실어 데이터로 부여하니, 밸런스가 또 틀어져도 GE 값만 만지면 됨.
4. 동작마다 캔슬 타이밍과 효과음
강공·흡수(Absorb)·버스트 몽타주를 돌려보며 캔슬 지점과 재생 배속(Play Rate)을 다시 잡았다.
- 후딜이 길어 답답한 동작은 캔슬 창을 앞당기고, 너무 빨리 끊겨 손맛이 없던 건 늦췄다.
- 각 동작에 맞는 효과음도 몽타주 노티로 함께 걸어, 데미지 배율·소리·캔슬을 한 사이클에서 같이 맞춤.
- 특히 버스트/콤보는 "버스트로 콤보를 끊고 다시 콤보로 잇는" 흐름이 어색하지 않게 창을 조율.
비교 정리
| 구분 | ❌ Before | ✅ After |
|---|---|---|
| 감도 옵션 | 통합/세부 배타 모드(플래그·통지·핸들러) | 축별 X/Y만(분기 제거) |
| PIE 인트로 | 매번 메뉴·로딩·시네마틱 통과 | bDeveloperSkipIntroFlow로 전부 스킵 |
| 부팅 스킵 기본값 | true(스킵 켜짐) |
false(명시적으로 켤 때만) |
| 스태프 밸런스 | 원거리 + 준수한 스탯(상위호환) | GE_StaffFrailty로 최대 체력 감소(리스크) |
| 동작 캔슬 | 고정 후딜/배속 | 동작별 캔슬 창·배속·효과음 조율 |
핵심 요약
- 감도는 배타 모드를 걷어내고 축별 X/Y만 — 선택지를 늘리기보다 필요한 최소 UI로 수렴, 로직 분기 제거.
bDeveloperSkipIntroFlow로 메뉴·로딩·시네마틱을 통째로 스킵, 부팅 스킵 기본값은false로 내려 실수 방지 → 밸런싱 이터레이션이 빨라짐.- 스태프는 수치가 아니라 무기 선택에 리스크(
GE_StaffFrailty최대 체력 감소)를 붙여 원거리 우위를 상쇄, GE라 데이터로 재조정 가능. - 캔슬은 동작별로 창·배속·효과음을 한 사이클에서 조율 — 값·노티 중심이라 반복 튜닝이 쉽다.
'내일배움캠프_Unreal > TIL' 카테고리의 다른 글
| 내일배움캠프_Unreal/TIL - Day 154 (260713) (0) | 2026.07.13 |
|---|---|
| 내일배움캠프_Unreal/TIL - Day 153 (260709) (1) | 2026.07.09 |
| 내일배움캠프_Unreal/TIL - Day 152 (260708) (0) | 2026.07.08 |
| 내일배움캠프_Unreal/TIL - Day 151 (260707) (0) | 2026.07.08 |
| 내일배움캠프_Unreal/TIL - Day 150 (260706) (0) | 2026.07.06 |