728x90
반응형

『Wizsurvive』는 시간이 흐를수록 점점 강력해지는 적과 맞서 끊임없이 싸우는 게임이다.
그렇기 때문에 플레이어가 게임 내내 같은 배경, 같은 환경에서 싸운다면 금방 지루함을 느끼게 된다.
이번 Dev Log에서는 맵 변경 시스템5분 루프 최적화 작업에 대해 기록해보려 한다.


맵 변경 시스템 설계

『Wizsurvive』에서는 5분마다 몬스터 종류와 함께 맵(배경)도 바뀌도록 설계했다.
이를 통해 플레이어가 끊임없이 새로운 분위기 속에서 전투를 이어가면서 몰입감을 유지할 수 있도록 하는 것이 목표였다.

초기 맵은 세 가지 테마로 구성했다.

  • 초원 지역: 밝고 따뜻한 분위기, 초반 웨이브
  • 사막 지역: 황량하고 건조한 분위기, 중반 웨이브
  • 늪지대: 어둡고 습한 분위기, 고난도 웨이브

5분이 지나면 몬스터 구성과 함께 맵 테마가 자연스럽게 전환된다.
예를 들어,
05분 → 초원 → 약한 몬스터
5
10분 → 사막 → 강화 몬스터
10~15분 → 늪지대 → 특수 몬스터

이런 식으로 변하면서 게임이 끝날 때까지 순환하는 구조다.


맵 변경 연출 구현

맵이 바뀔 때 갑작스럽게 배경이 전환되면 어색함을 느낄 수 있다.
그래서 맵 전환을 자연스럽게 느끼게 하기 위해 트랜지션 연출을 추가했다.

  • 5분이 되는 순간, 화면이 붉게 깜빡이며 플래시 효과가 발생
  • 1초간 화면이 어두워지면서 기존 맵이 비활성화
  • 새로운 맵 테마가 활성화되면서 부드럽게 이어지게 처리

플래시 효과는 CSS 스타일에서 가져온 듯한 빨간색 번쩍임 연출을 참고해서, 언리얼 머티리얼로 직접 제작했다.
덕분에 단순한 배경 교체를 넘어 '위기감'과 '새로운 전투가 시작된다'는 심리적 전환을 유도할 수 있었다.


5분 루프 최적화 작업

5분마다 몬스터/보스/맵을 모두 교체하는 구조는 게임 몰입도를 높이지만, 동시에 성능 부하 문제를 일으킬 수 있었다.
특히 장시간 플레이 시,

  • 누적된 오브젝트
  • 메모리 과부하
  • 리소스 충돌

이런 문제들이 서서히 나타났다.

이를 해결하기 위해 다음과 같은 최적화 작업을 진행했다.

  1. 맵 프리로딩(Pre-loading)
    게임 시작 시 모든 맵 리소스를 미리 로딩해두고,
    전환 시 단순히 활성화/비활성화만 처리하게 만들었다.
    덕분에 로딩 지연 없이 즉시 전환이 가능해졌다.
  2. 오브젝트 풀링(Object Pooling)
    몬스터, 이펙트, 드랍 아이템 등은 매번 생성/삭제하지 않고, 풀링 시스템을 사용해 재사용하도록 했다.
    필요할 때 꺼내 쓰고, 끝나면 다시 비활성화하는 방식으로 CPU 부하를 크게 줄였다.
  3. 불필요한 이펙트 정리
    맵이 변경될 때, 남아 있는 파티클 이펙트나 사운드를 깔끔하게 정리하도록 스크립트를 추가했다.
    이를 통해 메모리 누수 없이 장시간 플레이가 가능해졌다.

개발 중 겪은 문제와 해결 방법

5분 루프 시스템을 적용하면서 예상하지 못한 버그들도 발생했다.

  • 맵 전환 시, 이전 몬스터가 아직 화면에 남아있는 현상
  • 맵 변경 타이밍이 미묘하게 어긋나는 문제
  • 오디오가 겹쳐서 두 가지 배경음악이 동시에 재생되는 버그

이 문제들은 주로 이벤트 순서 문제로 인해 발생했다.
타이머가 5분을 알리는 동시에 여러 시스템(몬스터, 맵, 음악 등)이 동시에 작동했기 때문이다.

해결 방법으로,

  • 전환 순서를 엄격하게 관리했다.
    1. 몬스터 스폰 중단
    2. 기존 맵 비활성화
    3. 새 맵 활성화
    4. 배경음 변경
    5. 새 웨이브 시작

이 순서를 강제하여 문제를 해결했다.
또한, 맵 교체 후 일정 시간 동안 새로운 몬스터가 등장하기 전 '숨 고르기 구간'을 주어 자연스러운 연결감을 만들었다.

728x90
반응형