프로시저럴 맨션에 사용할 커스텀 트리거 기반 1-홉(1-hop) 룸 컬링 시스템 구현 및 FPS 향상
요약
본 글은 프로시저럴하게 생성되는 시뮬레이터 호러 게임에서 발생하는 심각한 성능 저하 문제를 해결하는 방법을 제시합니다. 특히, Unity의 기본 오클루전 컬링으로는 부족했던 환경에 커스텀 룸 컬링 시스템을 구현하여 프레임 속도를 크게 향상시켰습니다. 이 시스템은 방별로 오브젝트를 분리하고 활성화/비활성화를 제어하며, 문 자동 폐쇄 기능을 추가해 부드러운 플레이 경험과 무한대에 가까운 방 생성을 가능하게 했습니다.
핵심 포인트
- 프로시저럴 맵에서 성능 저하가 발생할 때 커스텀 컬링 시스템이 효과적입니다.
- 오브젝트를 'Visuals'와 'Floors'로 분리하여 최적화하고, 필요한 컴포넌트만 제어합니다.
- 방 진입 시 인접 방만 활성화하고 나머지는 비활성화하는 로직을 구현했습니다.
- 자동으로 문을 닫았다가 비활성화하는 추가 기법으로 성능과 몰입도를 동시에 개선했습니다.
저는 이 시뮬레이터 호러 게임을 개발하고 있는데, 맵이 프로시저럴하게 생성되기를 원했습니다. 하지만 제 게임은 파워워싱(raycasts를 사용하여 마스크에 그림을 그려 오염/젖음/건조 상태를 표시하는 기능)을 특징으로 하기 때문에, 작은 수의 방(이 경우 25개)만 있어도 플레이 불가능한 수준의 지연 현상이 발생했습니다. 게다가 Unity의 내장식 오클루전 컬링은 아무 소용이 없었습니다 (런타임에 생성되기 때문입니다). 그래서 저는 간단한 룸 컬링 시스템을 만들었는데, 이 시스템에는 'Visuals'와 'Floors'라는 두 개의 부모 빈(empty) 오브젝트가 있습니다. Visuals는 모든 정적 소품, 벽, 천장 등을 포함하며, 방이 컬링될 때 완전히 비활성화됩니다 (SetActive(false)). Floors는 음, 바닥을 담고 있으며, 렌더러만 꺼지고(충돌은 유지됨) 유령 개체가 경로 탐색(pathfind)을 할 수 있고 떨어뜨린 아이템이 빠지지 않도록 합니다. 각 방에 진입하면 인접한 모든 방이 보이게 하여 부드러운 통과를 가능하게 하고, 나머지 방들은 비활성화됩니다. 그리고 더욱 매끄럽게 만들기 위해 안개 농도를 약간 높였습니다. 하지만 여전히 플레이어 눈앞에서 방이 사라지는 순간들이 있어서, 곧 비활성화될 방의 문을 자동으로 닫았다가 비활성화하는 방법을 생각했습니다. 이를 통해 이전처럼 단지 60개의 방만 있어도 프레임 시간이 거의 1000ms까지 올라가던 것과 달리, 적은 지연 현상으로 사실상 무한한 방을 가질 수 있게 되었습니다 (DFS 생성기가 지원할 수 있는 한). 이 게임은 THE GROUNDSKEEPER라는 솔로 프로젝트로, 플레이어가 파워워싱을 하고 유령 증거를 기록하여 수익을 얻는 내용입니다: Steam , Discord submitted by /u/DThePro_ [link] [comments]
AI 자동 생성 콘텐츠
본 콘텐츠는 r/Unity3D (top/week)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기