[Project] Line 0 — Meta Quest 2 공포 게임 개발

2026. 5. 8. 16:30·Projects/Unity

 

Projects · VR 게임 개발
VR 게임 개발

Line 0

나폴리탄 괴담 장르 기반 Meta Quest 2용 1인칭 VR 공포 어드벤처 게임

Unity C# VR GLSL URP XR Interaction Toolkit NavMesh Baked Lightmap

Overview
Period
2025.09 – 2025.12
Team
2인 팀 프로젝트
Role
클라이언트 개발 · 3D 텍스처링
Platform
Meta Quest 2 (Standalone)

Background

인터넷 커뮤니티에서 시작된 나폴리탄 괴담 장르의 인기를 바탕으로, 텍스트 기반의 심리적 공포를 VR의 높은 몰입감과 결합하고자 기획되었습니다.

단순한 점프 스케어에 의존하기보다, 플레이어가 기괴하고 논리를 벗어난 수칙들을 목숨 걸고 수행하는 과정에서 발생하는 심리적 긴장감과 성취감을 제공하는 것을 목표로 개발했습니다.


Contributions
01 역무원 NPC 로직 및 상태 판정 구현
Problem
NPC가 단순히 플레이어에게 다가오는 것만으로는 공포감이 부족했고, 플레이어가 취해야 할 행동을 게임 내에서 명확히 강제할 수단이 없었습니다.
Impl
WorkerMove.cs에서 Unity NavMesh를 활용해 순찰 경로를 설정하고, 감지 범위(detectRange: 20m) 내 플레이어 진입 시 추적을 멈추고 조우 패턴을 트리거하는 상태 전이 로직을 구현했습니다. BoneBreaker.cs에서는 LateUpdate()를 활용해 Animator 본 회전값 위에 Quaternion.Euler로 추가 회전을 덮어씌워 허리·손 뼈를 90도 이상 강제 꺾는 기괴한 모션 연출을 구현했습니다.
Judge
Rule3_Judge.cs에서 Head Transform의 로컬 회전각(X축 25도 기준)과 프레임 간 이동 속도(0.5m/s 초과 시 실패)를 매 프레임 감지하여, 3초 반응 + 2초 유지의 이중 조건을 충족해야 생존하는 판정 시스템을 구축했습니다. 실패 시 JumpscareRoutine()으로 NPC가 Lerp로 눈앞 20cm까지 돌진하고 씬을 즉시 재시작합니다.
02 씬 제어 및 VR 이동 환경 구축
Problem
씬 전환 시 갑작스러운 화면 전환이 VR 몰입감을 해쳤으며, 계단 지형에서 플레이어가 공중에 뜨거나 지형을 뚫고 지나가는 물리 충돌 문제가 발생했습니다.
Scene
GameManager.cs에서 싱글톤 패턴으로 게임 전체 흐름을 중앙 관리하고, RuleEventBase 배열로 규칙을 순차 실행하는 구조를 설계했습니다. CanvasGroup alpha 값을 FadeInRoutine / FadeOutAndLoadScene 코루틴으로 보간해 씬 전환 시 자연스러운 암전 효과를 구현하고, EndingManager.cs에서 타이핑 연출·발소리·페이드아웃을 코루틴 체인으로 연결해 단일 엔딩 씬에서 전체 흐름을 완결했습니다.
VR
HeightFixer.cs에서 매 프레임 Camera Offset의 Y값을 고정해 계단 지형의 높이 오차를 보정했으며, VRFootstepController.cs에서 Y축을 제외한 수평 이동량만 누적하고 텔레포트(2m 초과)를 예외 처리해 계단 오르내림 시에도 발소리가 자연스럽게 재생되도록 처리했습니다.
03 맵 전체 텍스처 적용 및 최적화
Problem
실시간 조명·포스트 프로세싱·고해상도 텍스처가 동시에 적용된 상태에서 VR 렌더링 부하가 높아 프레임 드롭이 발생했습니다. VR 환경에서는 72fps 이하로 떨어지는 순간 멀미가 급격히 심해지기 때문에 최적화가 필수적이었습니다.
Impl
지하철 역사 전체 맵의 텍스처 매핑을 담당하여 타일 벽면·기둥·플랫폼 등 각 구역에 맞는 텍스처를 적용해 폐쇄적이고 음산한 분위기를 시각적으로 연출했습니다.
Optimize
씬 내 동적 오브젝트가 역무원 NPC 하나뿐이라는 점에 착안해, 모든 조명을 실시간에서 Baked Lightmap 방식으로 전환하여 런타임 조명 연산을 완전히 제거했습니다. 포스트 프로세싱 비활성화 및 텍스처 해상도 하향 조정을 병행하여 Meta Quest 2에서 안정적인 프레임레이트를 확보했습니다.

Demo
게임 플레이 구성도
게임 플레이 영상

Links
GitHub Play Video

Retrospective
핵심 경험
VR 콘텐츠 개발의 핵심 과제인 멀미·프레임 최적화를 직접 경험하고 해결했습니다. 실시간 라이트를 배제하고 베이크된 라이트맵만으로 공간의 분위기를 연출하는 과정은, 제한된 스탠드얼론 하드웨어 성능 안에서 시각적 품질과 최적화의 타협점을 찾는 좋은 훈련이 되었습니다.
리소스 관리
기획했던 복잡한 엔딩이 개발 일정상 지연될 위기에 처했을 때, 단일 엔딩으로 과감히 우회하여 프로젝트를 기한 내에 완수하는 실무적인 리소스 관리 능력을 배웠습니다.

'Projects > Unity' 카테고리의 다른 글

[Project] NPR Shaders — GLSL로 구현한 비사실적 렌더링 셰이더 컬렉션  (0) 2026.05.08
[Project] Beyond the Door of Memory — Unity 2D 감정 서사 어드벤처 게임  (0) 2026.05.08
'Projects/Unity' 카테고리의 다른 글
  • [Project] NPR Shaders — GLSL로 구현한 비사실적 렌더링 셰이더 컬렉션
  • [Project] Beyond the Door of Memory — Unity 2D 감정 서사 어드벤처 게임
lalunru
lalunru
머릿속에 흩어진 생각들을 글로 정리하며 성장합니다.
  • lalunru
    lalunru.blog
    lalunru
  • 전체
    오늘
    어제
    • 분류 전체보기 (11)
      • Dev Notes (5)
        • Frontend (3)
        • Unity (2)
      • Projects (6)
        • Unity (3)
        • Frontend (1)
        • Machine learning (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
    • Portfolio
  • 공지사항

  • 인기 글

  • 태그

    프론트엔드
    NPR
    zustand
    Shadertoy
    ToonShading
    트러블슈팅
    셰이더
    공포게임
    악성URL
    glsl
    프래그먼트셰이더
    react
    XR Interaction Toolkit
    Unity
    websocket
    c#
    tailwindcss
    navmesh
    포트폴리오
    Meta Quest
    VR
    STOMP
    피처엔지니어링
    다중엔딩
    셰이더토이
    TypeScript
    MSW
    shap
    Meta Quest 2
    컴포넌트설계
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
lalunru
[Project] Line 0 — Meta Quest 2 공포 게임 개발
상단으로

티스토리툴바