2026/05/17 3

Oblivio 기획: 호러 생존 게임의 보스 패턴 기획 및 UX 개선

1. 문제 인식: 세계관과 충돌하는 보스 패턴 보스(비대한 태아)의 공격 패턴을 구현하는 과정에서, 원래 기획했던 '탯줄 공격'의 구현 난이도가 높아 팀원이 '눈알 소환 및 마법 탄막 발사'로 대체하자는 의견을 냈다. 이는 프로그래밍적으로는 합리적인 선택이나, 병원 지하나 기괴한 생명체라는 호러 생존 게임의 테마와는 전혀 어울리지 않고 판타지 RPG 같은 이질감을 주는 문제가 있었다.2. 해결 과정 1: 코드 재사용을 통한 스킬 리스킨(Reskin) 프로그래머의 작업량을 늘리지 않고 기획적 몰입도를 높이기 위해, 팀원이 작성한 기존 로직(소환체(Spawner) ➔ 투사체(Projectile) 발사)은 100% 그대로 유지하되 시각적 에셋과 파티클만 교체(Reskin) 하는 세 가지 테마를 기획 및 제안했..

카테고리 없음 2026.05.17

Oblivio Delegate 활용한 레벨 기믹과 의존성 분

1. 문제 인식: 스파게티 코드의 위험성 프로젝트 초반에는 캐릭터가 특정 아이템(메멘토)을 획득했을 때 레벨의 기믹(예: 2층 홍수 이벤트)을 작동시키기 위해, 캐릭터의 Interact() 함수 내부에서 직접 태그를 검사(ActorHasTag("FloodTrigger"))하고 특정 액터(AFloodLevelActor)를 찾아 실행하는 방식(하드코딩)을 사용했다. 하지만 층수가 늘어나고 9층(전화기 울림), 10층 등 각기 다른 기믹이 추가될수록 캐릭터 클래스가 모든 맵의 이벤트를 알아야 하는 구조적 모순이 발생했다. 이는 코드가 무한정 비대해지고 유지보수가 불가능해지는 '스파게티 코드'의 전형적인 원인이었다.2. 리팩토링 설계: 의존성 역전과 Delegate(방송국) 도입 "캐릭터와 아이템은 세상에 무슨..

카테고리 없음 2026.05.17

Oblivio 캐릭터 이동 상태(Crouch/Water)에 따른 동적 사운드 및 어그로 제어

1. 문제 상황 은신 플레이를 위한 '앉기(Crouch)' 기능을 추가했으나, 앉아서 이동할 때도 서서 걸을 때와 동일한 크기의 발소리가 나고 적의 어그로 범위(소리 전파 반경)가 그대로 유지되어 은신 시스템의 의미가 퇴색되는 문제가 발생했다. 또한, 특정 층의 홍수 기믹에 맞춰 캐릭터가 물을 밟을 경우 발소리 에셋이 일반 구두 소리에서 '찰박거리는 물소리'로 즉각 변환되고, 물속에서는 앉더라도 소음이 줄어들지 않도록 환경적 디테일을 구현해야 했다.2. 해결 과정 1: 이동 상태에 따른 속도 제어 로직 단일화 기존 UpdateStatus 함수(매 틱 상태를 업데이트하는 함수) 내에서는 걷기/뛰기/스턴/수중 상태 등 이동 속도(MaxWalkSpeed)를 결정하는 제어문이 여러 곳에 중복으로 흩어져 있어 로..

카테고리 없음 2026.05.17