웹사이트 개발 Ep.1 - 백일헌 고택 웹사이트, 첫걸음을 떼다
전통 건축을 소개하는 웹사이트를 만든다는 것은 단순한 정보 나열 이상의 의미가 있다. 이번 프로젝트의 목표는, 오래된 고택의 역사와 아름다움을 온라인 공간에서 살아 숨 쉬게 하는 것이었다.초기에는 많은 고민이 있었다. 기존에 운영되고 있는 전통문화 관련 사이트들을 여러 곳 참고하면서 방향을 잡기 시작했다. 디자인, 콘텐츠 구성, 사용자 흐름 등 다양한 부분을 세심하게 분석했다. 하지만 단순히 비슷하게 따라 만드는 것이 아니라, '백일헌 고택만의 이야기'를 담아야 한다는 것을 잊지 않으려고 했다.직접 운영하는 독립 도메인 선택처음에는 블로그 플랫폼을 활용할지, 아니면 별도 사이트를 구축할지 고민했다.결국 '직접 도메인을 구매하고 사이트를 운영하자'는 결론을 내렸다.이유는 간단했다.1. 자유로운 콘텐츠 구성..
2025.04.30
Dev Log #10 – 프로젝트 마무리 및 앞으로의 방향
『Wizsurvive』는 단순히 게임 하나를 만드는 프로젝트가 아니었다.처음 언리얼 엔진을 선택하고, 장르를 결정하고, 시스템 하나하나를 쌓아가며나는 게임 개발자로서의 시야와 기술을 함께 성장시켜 나갔다.이번 Dev Log에서는 『Wizsurvive』 프로젝트를 마무리하며 느낀 점과, 앞으로 이 프로젝트를 어떻게 발전시킬 계획인지 정리해보려 한다.프로젝트 마무리 단계『Wizsurvive』는 기본적인 게임 루프가 완성된 상태다.캐릭터 성장 시스템 구축다양한 무기/토템/스킬 시스템 적용5분마다 변화하는 몬스터 웨이브와 맵 전환부활 시스템과 광고 리워드 시스템 연동모바일 환경을 고려한 최적화 완료여기까지 오기까지 수많은 시행착오와 수정 작업이 필요했다.특히, 단순히 '게임이 돌아간다'는 수준을 넘어,플레이어가..
2025.04.29
Dev Log #9 – 최적화와 퍼포먼스 개선 작업
『Wizsurvive』 프로젝트가 점점 완성도를 높여가면서, 이제 단순한 시스템 구축을 넘어게임 퍼포먼스를 최적화하는 단계에 접어들었다.이번 Dev Log에서는 실제 개발 과정 중 발생했던 성능 문제들과, 이를 해결하기 위해 어떤 최적화 작업을 진행했는지를 기록하려 한다.최적화의 필요성 인식개발 초기에는 기능 구현에 집중하다 보니, 퍼포먼스 문제를 크게 의식하지 않았다.하지만 플레이 시간이 길어지고 몬스터 수가 많아지면서 점점 문제가 드러나기 시작했다.대표적인 증상은 다음과 같았다.프레임 드랍(FPS 하락)오브젝트 생성 지연배경 리소스 로딩 시 순간 멈춤긴 플레이 후 렉 발생특히 모바일 환경을 염두에 두고 있었기 때문에, 최적화는 선택이 아니라 필수였다.퍼포먼스 최적화 작업1. 오브젝트 풀링 시스템 강화..
2025.04.29
Dev Log #8 – 맵 변경 시스템과 5분 루프 최적화
『Wizsurvive』는 시간이 흐를수록 점점 강력해지는 적과 맞서 끊임없이 싸우는 게임이다.그렇기 때문에 플레이어가 게임 내내 같은 배경, 같은 환경에서 싸운다면 금방 지루함을 느끼게 된다.이번 Dev Log에서는 맵 변경 시스템과 5분 루프 최적화 작업에 대해 기록해보려 한다.맵 변경 시스템 설계『Wizsurvive』에서는 5분마다 몬스터 종류와 함께 맵(배경)도 바뀌도록 설계했다.이를 통해 플레이어가 끊임없이 새로운 분위기 속에서 전투를 이어가면서 몰입감을 유지할 수 있도록 하는 것이 목표였다.초기 맵은 세 가지 테마로 구성했다.초원 지역: 밝고 따뜻한 분위기, 초반 웨이브사막 지역: 황량하고 건조한 분위기, 중반 웨이브늪지대: 어둡고 습한 분위기, 고난도 웨이브5분이 지나면 몬스터 구성과 함께 맵..
2025.04.29
Dev Log #7 – 부활 시스템과 광고 리워드 설계
『Wizsurvive』는 기본적으로 끝없이 적을 상대하며 최대한 오래 생존하는 것을 목표로 한다.하지만 플레이 도중 한 번의 실수로 게임이 끝난다면 플레이어는 쉽게 좌절할 수 있다.그래서 이번 Dev Log에서는 부활 시스템과 이를 활용한 광고 리워드 설계에 대해 다루어 보려 한다.부활 시스템 설계초기에는 단순히 체력이 0이 되면 게임이 끝나는 구조였다.하지만 테스트를 진행하면서, 플레이어가 아쉽게 죽었을 때 "한 번만 다시 기회를 얻고 싶다"고 느끼는 순간이 많다는 걸 확인했다.그래서 부활 시스템을 추가하기로 했다.부활 방식은 크게 두 가지로 나누었다.부활 코인을 사용한 부활:플레이어가 인게임 내에서 획득한 '부활 코인'을 소모해 즉시 부활할 수 있다.광고 시청을 통한 부활:부활 코인이 없는 경우, 광..
2025.04.29
Dev Log #6 – 아이템/토템 시스템과 가챠 구조 설계
『Wizsurvive』의 재미를 한층 끌어올리는 핵심 시스템 중 하나는 바로 아이템 수집과 가챠 시스템이다.이번 Dev Log에서는 어떻게 아이템과 토템을 설계했고, 플레이어가 끊임없이 수집과 성장의 재미를 느낄 수 있도록 가챠 구조를 만들었는지 정리해보려 한다.아이템 시스템 설계게임에서 아이템은 단순한 장비 이상의 의미를 가진다.플레이어가 성장하고 플레이 스타일을 다변화하는 수단이자, 플레이 타임을 지속시키는 핵심 동기 부여 요소다.『Wizsurvive』의 아이템은 크게 두 가지로 나뉜다.무기 아이템:플레이어의 직접 공격력, 사거리, 공격 형태를 변화시키는 아이템.예를 들면, '대검'을 장착하면 짧지만 강력한 공격을 하고, '활'을 장착하면 원거리에서 적을 견제할 수 있다.토템 아이템:패시브 효과를 제..
2025.04.29
Dev Log #4 – UI/UX 완성 및 Spine 애니메이션 연동
『Wizsurvive』 개발이 점점 구체화되면서, 이번 Dev Log #4에서는 UI/UX 시스템 완성과 Spine 애니메이션 연동 작업에 대해 이야기하려 한다.게임의 시스템이 어느 정도 구축된 이후, 플레이어가 게임을 어떻게 경험하느냐는 UI와 UX에 달려 있다.특히 이번 프로젝트에서는 Spine 툴을 활용해 UI 애니메이션에도 생동감을 주려고 했기 때문에, 이 과정은 꽤 신경을 많이 쓴 작업이었다.UI/UX 시스템 완성게임 초기에 제작한 UI는 단순한 버튼과 텍스트 위주였다.하지만 테스트를 진행하면서 느낀 것은, 플레이어 경험(UX)을 고려하지 않은 UI는 몰입감을 심각하게 해친다는 점이었다.특히 뱀파이어 서바이벌 장르 특성상, 게임이 빨라질수록 빠른 조작과 정보 파악이 필수적인데, 기존 UI는 이 ..
2025.04.29
Dev Log #3 – 몬스터/보스/맵 전환 시스템 설계
『Wizsurvive』 개발의 다음 단계는 시간 흐름에 따라 게임이 변하는 구조를 만드는 것이었다.게임 플레이가 단조롭게 느껴지지 않게 하기 위해, 5분마다 몬스터와 맵을 바꿔주고, 주기적으로 보스 몬스터를 등장시켜 게임에 리듬과 긴장감을 더하는 시스템이 필요했다.5분 주기 구조 설계처음 게임 구조를 구상할 때, "얼마나 자주 변화를 줄까?"에 대해 고민이 많았다.너무 자주 변하면 리듬이 깨지고, 너무 드물면 플레이어가 지루함을 느끼기 쉽다.결국 실험 끝에 결정한 기준은 5분 주기였다.매 5분이 지나면 새로운 몬스터 세트 등장5분 타이밍마다 보스 몬스터 스폰맵(배경) 비주얼 변경이 패턴이 게임이 끝날 때까지 무한 반복된다.플레이어는 매번 변하는 환경에 적응해야 하고, 새로운 적의 패턴을 파악하면서 끊임없..
2025.04.29
728x90
반응형

전통 건축을 소개하는 웹사이트를 만든다는 것은 단순한 정보 나열 이상의 의미가 있다. 이번 프로젝트의 목표는, 오래된 고택의 역사와 아름다움을 온라인 공간에서 살아 숨 쉬게 하는 것이었다.

초기에는 많은 고민이 있었다. 기존에 운영되고 있는 전통문화 관련 사이트들을 여러 곳 참고하면서 방향을 잡기 시작했다. 디자인, 콘텐츠 구성, 사용자 흐름 등 다양한 부분을 세심하게 분석했다. 하지만 단순히 비슷하게 따라 만드는 것이 아니라, '백일헌 고택만의 이야기'를 담아야 한다는 것을 잊지 않으려고 했다.


직접 운영하는 독립 도메인 선택

처음에는 블로그 플랫폼을 활용할지, 아니면 별도 사이트를 구축할지 고민했다.
결국 '직접 도메인을 구매하고 사이트를 운영하자'는 결론을 내렸다.

이유는 간단했다.
1. 자유로운 콘텐츠 구성, 2. 디자인 제한이 없음, 3. 장기적인 브랜딩 가능성 때문이었다.
티스토리나 워드프레스 무료형 서비스에 비해 당장은 조금 더 번거롭고 비용이 들지만, 사이트를 제대로 키워나가기 위해서는 독립 도메인이 필요하다고 판단했다.

현재까지 진행한 작업 흐름은 다음과 같다.

  1. 도메인 구매 및 연결 준비
  2. 기본 사이트 구조 구상
  3. 메인 페이지와 서브페이지 레이아웃 설계
  4. 필요한 콘텐츠(사진, 설명문) 수집 및 정리

사이트 기획 방향: "하나의 작은 문화 공간"

백일헌 고택 사이트는 단순한 정보 제공 페이지가 아니다.
기획 단계에서 가장 중요하게 생각한 것은 '이곳을 찾는 사람들이 작은 문화 공간을 거닐듯이 경험할 수 있게 하자'는 점이었다.

따라서 콘텐츠 구조도 그에 맞춰 설계했다.

  • 고택 소개: 간결하지만 깊이 있는 역사 설명
  • 공간별 탐방: 사랑채, 안채, 정원 등을 섹션별로 나누어 상세 소개
  • 연관 이야기: 고택을 둘러싼 인물과 지역 이야기
  • 방문 안내: 위치, 운영시간 등 기본 정보 제공

각 페이지는 따로 떨어진 느낌이 아니라 하나의 이야기처럼 연결되도록 구상하고 있다.


참고 사이트 분석: 배우되, 베끼지 말 것

작업에 착수하기 전에, 비슷한 느낌의 전통문화, 고택 소개 사이트들을 다수 살펴봤다.
디자인 톤, 메뉴 구성, 모바일 최적화 방식 등은 좋은 참고가 되었지만, 그대로 모방하지 않고 백일헌 고택의 정체성을 살릴 수 있도록 차별화를 염두에 뒀다.

특히 주의했던 점은 '과한 연출'을 피하는 것이었다. 전통 고택의 매력은 화려함이 아니라, 절제와 여백에 있다.
웹사이트도 마찬가지였다. 깔끔하고, 불필요한 꾸밈 없이 본질을 보여주는 방향으로 잡았다.

728x90
반응형
728x90
반응형

『Wizsurvive』는 단순히 게임 하나를 만드는 프로젝트가 아니었다.
처음 언리얼 엔진을 선택하고, 장르를 결정하고, 시스템 하나하나를 쌓아가며
나는 게임 개발자로서의 시야와 기술을 함께 성장시켜 나갔다.
이번 Dev Log에서는 『Wizsurvive』 프로젝트를 마무리하며 느낀 점과, 앞으로 이 프로젝트를 어떻게 발전시킬 계획인지 정리해보려 한다.


프로젝트 마무리 단계

『Wizsurvive』는 기본적인 게임 루프가 완성된 상태다.

  • 캐릭터 성장 시스템 구축
  • 다양한 무기/토템/스킬 시스템 적용
  • 5분마다 변화하는 몬스터 웨이브와 맵 전환
  • 부활 시스템과 광고 리워드 시스템 연동
  • 모바일 환경을 고려한 최적화 완료

여기까지 오기까지 수많은 시행착오와 수정 작업이 필요했다.
특히, 단순히 '게임이 돌아간다'는 수준을 넘어,
플레이어가 몰입하고, 반복 플레이를 유도할 수 있는 구조를 고민하는 과정이 매우 중요했다.

개발 과정 내내 반복했던 것은 "직접 플레이하면서 느껴라"는 원칙이었다.
코드나 시스템만 보면 문제없어 보이던 것들도, 직접 플레이해 보면 불편하고, 지루하고, 때로는 재미없는 구간들이 명확히 드러났다.
이런 과정을 통해 게임을 플레이어 관점에서 다시 보는 훈련을 쌓을 수 있었다.


개발 중 가장 인상 깊었던 부분

『Wizsurvive』를 만들면서 가장 인상 깊었던 부분은
작은 시스템 하나가 전체 경험을 얼마나 크게 좌우하는지를 직접 체감한 것이다.

예를 들면:

  • 가챠 결과에 따라 플레이어가 느끼는 기대감이 극단적으로 달라지고,
  • 스킬 하나 추가로 인해 전체 게임 리듬이 변하고,
  • 맵 전환 이펙트 하나로 게임 분위기 전환이 자연스러워지는 것.

단순한 기능 추가를 넘어서,
어떻게 플레이어의 감정을 움직일 수 있는지를 끊임없이 고민하는 것이 진짜 게임 개발이라는 걸 절실히 느꼈다.


앞으로의 발전 방향

『Wizsurvive』는 현재 버전으로도 충분히 독립된 게임으로 완성되었지만,
여기서 멈출 생각은 없다.
오히려 이제부터가 진짜 시작이라고 생각한다.

앞으로의 발전 방향은 다음과 같다.

1. 신규 콘텐츠 추가

  • 신규 캐릭터 추가 (특수 능력 보유 캐릭터)
  • 새로운 무기와 토템 추가
  • 시즌별 한정 맵 추가
  • 이벤트형 가챠와 특별 던전 모드 추가

플레이어가 계속해서 새로운 목표를 가질 수 있도록 콘텐츠를 지속적으로 확장할 계획이다.

2. 밸런스 재조정

  • 특정 스킬이나 무기 조합이 지나치게 강력하지 않게 지속적인 테스트
  • 초반, 중반, 후반 난이도 커브 재설정
  • 장기 플레이 시 난이도 상승 패턴 조정

밸런스 조정은 게임의 생명력을 좌우하기 때문에, 꾸준히 데이터 기반으로 수정해 나갈 예정이다.

3. 모바일 정식 출시 준비

  • 최종 최적화 및 안정성 검수
  • 다양한 기기(저사양/고사양) 테스트
  • UI 스케일링 최적화
  • 광고 및 인앱 결제 시스템 안정화

최종적으로는 Google Play 스토어 및 iOS 앱스토어에 출시를 목표로 하고 있다.
특히 모바일 특유의 터치 조작감을 강화해 사용자 경험을 최대한 부드럽게 다듬을 계획이다.

728x90
반응형
728x90
반응형

『Wizsurvive』 프로젝트가 점점 완성도를 높여가면서, 이제 단순한 시스템 구축을 넘어
게임 퍼포먼스를 최적화하는 단계에 접어들었다.
이번 Dev Log에서는 실제 개발 과정 중 발생했던 성능 문제들과, 이를 해결하기 위해 어떤 최적화 작업을 진행했는지를 기록하려 한다.


최적화의 필요성 인식

개발 초기에는 기능 구현에 집중하다 보니, 퍼포먼스 문제를 크게 의식하지 않았다.
하지만 플레이 시간이 길어지고 몬스터 수가 많아지면서 점점 문제가 드러나기 시작했다.

대표적인 증상은 다음과 같았다.

  • 프레임 드랍(FPS 하락)
  • 오브젝트 생성 지연
  • 배경 리소스 로딩 시 순간 멈춤
  • 긴 플레이 후 렉 발생

특히 모바일 환경을 염두에 두고 있었기 때문에, 최적화는 선택이 아니라 필수였다.


퍼포먼스 최적화 작업

1. 오브젝트 풀링 시스템 강화

처음에는 몬스터나 발사체를 생성/삭제하는 방식을 사용했는데,
이 방식은 Garbage Collection(메모리 수거) 부하가 심각하게 쌓였다.

그래서 모든 몬스터, 스킬 발사체, 아이템 드랍 오브젝트를 오브젝트 풀링 방식으로 변경했다.

  • 필요할 때 꺼내 쓰고
  • 사용 후에는 비활성화시켜 풀로 되돌리는 구조

이 덕분에 생성/삭제에 소모되는 연산량을 크게 줄일 수 있었고, 프레임 유지율이 크게 향상되었다.


2. 이펙트 및 파티클 최적화

특히 몬스터 사망 이펙트나 스킬 이펙트가 쌓이면서 퍼포먼스가 급격히 떨어졌다.
이를 해결하기 위해:

  • 이펙트의 지속 시간을 짧게 조정
  • 화면에 동시에 보여지는 파티클 개수 제한
  • 필요 없는 경우 이펙트를 강제 소멸 처리

또한 파티클 시스템을 경량화하여,

  • 기본 파티클 텍스처 해상도 감소
  • 단순 연산량을 가진 머티리얼 사용

이런 식으로 무겁지 않은 파티클 연출로 바꿔, 비주얼은 유지하면서 부하를 줄였다.


3. 백그라운드 리소스 로딩

맵 전환이나 새로운 웨이브가 시작될 때 로딩 지연이 발생하는 문제가 있었다.
이 문제는 필요한 리소스를 미리 불러오는 프리로딩(Preloading) 시스템을 구축해서 해결했다.

  • 게임 시작 시, 다음 2~3개의 맵 리소스를 백그라운드에서 로딩
  • 스폰 예정 몬스터의 스켈레톤, 이펙트도 미리 로딩
  • 플레이 도중에는 실제 교체 시점에 단순히 활성화만 처리

덕분에 5분 루프를 도는 동안 별다른 끊김 없이 부드럽게 맵과 몬스터가 전환되도록 만들 수 있었다.


4. 불필요한 Tick 제거

언리얼 엔진에서는 Actor가 Tick(매 프레임마다 실행되는 업데이트)을 사용하는 경우가 많다.
하지만 필요 없는 Tick은 게임 퍼포먼스를 심각하게 깎아먹는다.

그래서:

  • 이동, 공격 등 필요한 순간에만 Tick을 활성화
  • 기본적으로는 모든 Actor의 Tick을 비활성화
  • Event 기반으로 움직임이나 동작을 제어

하는 방식을 적용했다.
이 최적화만으로도 전체 CPU 부하가 눈에 띄게 감소했다.


최적화 작업 중 겪은 문제와 해결

최적화를 하면서 예상치 못한 문제들도 생겼다.

  • 풀링된 오브젝트가 상태를 초기화하지 않고 재사용되어, 이상 동작하는 경우
  • 이펙트를 너무 과하게 줄여 비주얼 임팩트가 떨어진 문제
  • 프리로딩 로직 중 일부가 메인 스레드(Block)로 끼어들어 오히려 지연이 발생한 경우

이 문제들은

  • 오브젝트 풀 리턴 시 초기화 함수 추가
  • 고정 이펙트 유지와 가벼운 이펙트 분리 적용
  • 프리로딩은 무조건 별도 스레드에서 처리

같은 방법으로 수정하고 안정화시켰다.


최적화 결과

최적화 이후 다음과 같은 개선 결과를 얻을 수 있었다.

  • 초기 FPS 35~40최적화 후 FPS 58~60 (모바일 기준)
  • 플레이 시간 20분 이상 경과 후에도 끊김 없이 진행 가능
  • 로딩 시간 약 30% 감소
  • 메모리 점유율 20% 감소

덕분에 『Wizsurvive』는 장시간 플레이해도 쾌적하게 진행할 수 있는 게임이 되었다.
특히 모바일 환경에서도 안정적인 퍼포먼스를 유지할 수 있게 되어,
'언제 어디서나 가볍게 즐길 수 있는' 게임 목표에 한 걸음 더 다가설 수 있었다.

728x90
반응형
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
반응형
728x90
반응형

『Wizsurvive』는 기본적으로 끝없이 적을 상대하며 최대한 오래 생존하는 것을 목표로 한다.
하지만 플레이 도중 한 번의 실수로 게임이 끝난다면 플레이어는 쉽게 좌절할 수 있다.
그래서 이번 Dev Log에서는 부활 시스템과 이를 활용한 광고 리워드 설계에 대해 다루어 보려 한다.


부활 시스템 설계

초기에는 단순히 체력이 0이 되면 게임이 끝나는 구조였다.
하지만 테스트를 진행하면서, 플레이어가 아쉽게 죽었을 때 "한 번만 다시 기회를 얻고 싶다"고 느끼는 순간이 많다는 걸 확인했다.
그래서 부활 시스템을 추가하기로 했다.

부활 방식은 크게 두 가지로 나누었다.

  1. 부활 코인을 사용한 부활:
    플레이어가 인게임 내에서 획득한 '부활 코인'을 소모해 즉시 부활할 수 있다.
  2. 광고 시청을 통한 부활:
    부활 코인이 없는 경우, 광고를 시청하면 부활 기회를 제공한다.

부활 시에는 체력 100% 회복 또는 **50% 회복(광고 부활)**을 선택할 수 있으며, 이후 즉시 전투를 이어갈 수 있도록 설계했다.


부활 코인 시스템 구현

부활 코인은 다음과 같은 경로로 획득할 수 있다.

  • 가챠 뽑기에서 일정 확률로 획득
  • 스테이지 보스 클리어 보상
  • 일일 미션 완료 보상

부활 코인은 최대 보유 수량을 설정하여, 무한으로 쌓을 수 없게 했다.
(예: 최대 5개)
이는 게임 난이도를 지나치게 낮추는 것을 방지하고, 부활 기회를 소중하게 여기게 만들기 위한 조치였다.

UI 상에서는 상단에 [부활 코인 아이콘 ×N] 형태로 현재 보유 중인 코인 수를 직관적으로 표시했다.
게임 도중 사망 시, 부활 UI가 표시되고, 보유 중인 코인이 있을 경우 "부활하기" 버튼이 활성화된다.


광고 리워드 부활 설계

광고를 활용한 부활 시스템은 게임의 수익 모델과도 직결되는 중요한 요소다.
하지만 플레이어에게 광고 시청을 강제하면 오히려 거부감을 불러일으킬 수 있기 때문에, 설계할 때 여러 가지 고민이 필요했다.

광고 부활은 다음 규칙을 따르도록 설계했다.

  • 하루 최대 2회까지만 광고를 통한 부활이 가능하다.
  • 광고를 보면 체력 50%로 부활한다.
  • 광고 시청 없이 바로 "포기하기"를 선택할 수도 있다.

이 구조는 플레이어에게 선택권을 주면서도, 광고 수익을 자연스럽게 유도하는 데 초점을 맞췄다.
또한, 광고 부활을 너무 남발하지 않도록 제한을 두어 게임 밸런스를 유지했다.


부활 UI와 사용자 경험

부활 UI를 설계할 때 가장 신경 쓴 부분은 긴박감 유지였다.
게임이 중단된 느낌을 주지 않기 위해, 사망 시 즉시 부활 선택 창이 뜨고, 10초 카운트다운이 시작된다.

  • 10초 안에 부활 선택(코인 or 광고)을 하지 않으면 자동으로 게임 종료
  • 카운트다운 동안 부드러운 애니메이션과 사운드 효과로 긴박감을 유지
  • 부활 후에는 바로 플레이 화면으로 자연스럽게 복귀

UI 디자인은 Spine을 이용해 부활 선택 버튼에 작은 빛나는 이펙트를 추가하여, 플레이어가 무의식적으로 버튼에 눈이 가도록 했다.


개발 중 겪었던 문제와 해결

부활 시스템을 도입하면서 겪은 가장 큰 문제는
"게임 내부 상태 복원" 이었다.

예를 들어,

  • 부활했을 때 몬스터의 상태가 초기화되거나,
  • 스킬 쿨다운이 리셋되는 문제,
  • 맵상의 아이템이 사라지는 문제

같은 이슈들이 발생했다.

이를 해결하기 위해,

  • 플레이어 상태(HP, 스킬 쿨다운, 버프 상태 등)를 부활 시점 직전에 저장해두고,
  • 부활 시 저장된 데이터를 불러오는 구조를 만들었다.
  • 동시에 맵의 적과 아이템 상태는 그대로 유지되도록 처리했다.

덕분에 부활 이후에도 게임이 부드럽게 이어지며, 플레이어가 '진짜 이어서 싸우는' 느낌을 받을 수 있게 되었다.

728x90
반응형
728x90
반응형

『Wizsurvive』의 재미를 한층 끌어올리는 핵심 시스템 중 하나는 바로 아이템 수집과 가챠 시스템이다.
이번 Dev Log에서는 어떻게 아이템과 토템을 설계했고, 플레이어가 끊임없이 수집과 성장의 재미를 느낄 수 있도록 가챠 구조를 만들었는지 정리해보려 한다.


아이템 시스템 설계

게임에서 아이템은 단순한 장비 이상의 의미를 가진다.
플레이어가 성장하고 플레이 스타일을 다변화하는 수단이자, 플레이 타임을 지속시키는 핵심 동기 부여 요소다.

『Wizsurvive』의 아이템은 크게 두 가지로 나뉜다.

  • 무기 아이템:
    플레이어의 직접 공격력, 사거리, 공격 형태를 변화시키는 아이템.
    예를 들면, '대검'을 장착하면 짧지만 강력한 공격을 하고, '활'을 장착하면 원거리에서 적을 견제할 수 있다.
  • 토템 아이템:
    패시브 효과를 제공하는 보조 아이템.
    이동 속도 증가, 체력 회복, 추가 경험치 획득 등 다양한 버프를 제공한다.

아이템은 등급에 따라 구분된다.

  • 일반(Common)
  • 고급(Rare)
  • 희귀(Epic)
  • 전설(Legendary)
  • 신화(Mythic)

등급이 높을수록 능력치가 강력하고, 추가 효과가 부여된다.
이로 인해 플레이어는 더 높은 등급의 아이템을 얻기 위해 계속 플레이하거나 가챠에 도전하게 된다.


토템 시스템 구현

토템은 『Wizsurvive』만의 독특한 수집 시스템이다.
단순히 아이템을 모으는 것을 넘어서,

  • 토템 도감을 완성하면 추가 능력치가 부여되고
  • 중복 토템을 3개 모으면 새로운 토템으로 합성할 수 있다.

이 구조는 플레이어에게 다음과 같은 동기를 부여했다.

  • 수집 욕구 → 도감을 완성하고 싶은 욕구
  • 강화 욕구 → 중복 토템을 통해 더 강한 토템을 얻고 싶은 욕구
  • 성장 욕구 → 토템 효과로 캐릭터를 전략적으로 강화하고 싶은 욕구

토템은 가챠를 통해 획득하거나, 스테이지 클리어 보상으로 얻을 수 있다.
특히 합성 시스템 덕분에 중복 아이템이 쓸모없어지지 않고, 꾸준히 의미 있는 성장 수단이 되도록 설계했다.


가챠(뽑기) 시스템 구조

플레이어가 게임을 지속하게 만드는 중요한 장치 중 하나가 바로 가챠 시스템이다.

『Wizsurvive』의 가챠 시스템은 다음과 같은 구조를 가진다.

  • 골드 가챠: 인게임 재화(골드)로 일반/고급 등급의 무기, 토템 획득 가능
  • 다이아 가챠: 프리미엄 재화(다이아)로 희귀~신화 등급 아이템까지 얻을 수 있음
  • 이벤트 가챠: 특정 기간 동안만 등장하는 한정 아이템 제공

가챠 결과는 확률에 따라 결정된다.
예를 들어,

  • 일반 아이템: 60%
  • 고급 아이템: 25%
  • 희귀 아이템: 10%
  • 전설 아이템: 4%
  • 신화 아이템: 1%

초기에 단순한 골드 뽑기만 있었지만, 플레이어의 만족도를 높이기 위해 가챠 연출에 Spine 애니메이션을 추가했다.
상자가 열리면서 빛이 뿜어져 나오고, 등급에 따라 색상이 변화하는 등 시각적 피드백을 강화했다.


개발 중 겪었던 문제와 개선

가챠 시스템을 구현하면서 가장 고민했던 부분은 "운"과 "보상"의 균형이었다.

  • 운이 너무 크게 작용하면 운 나쁜 플레이어는 쉽게 포기하게 된다.
  • 반면 보상을 너무 쉽게 주면 희소성이 사라져 플레이 수명이 짧아진다.

이를 해결하기 위해,

  • 보장 시스템을 도입했다.
    일정 횟수 이상 뽑았지만 희귀 아이템 이상을 얻지 못한 경우, 강제로 높은 등급을 지급하는 구조를 추가했다.
  • 중복 보상 시스템도 강화했다.
    이미 가지고 있는 무기를 뽑으면 해당 무기의 업그레이드 포인트를 추가 지급하거나, 골드로 환산해 돌려주는 구조를 만들었다.

이러한 조정 덕분에, 플레이어는 가챠 결과에 관계없이 어느 정도 성취감을 느끼고, 다음 플레이를 이어가게 된다.

728x90
반응형
728x90
반응형

『Wizsurvive』 개발이 점점 구체화되면서, 이번 Dev Log #4에서는 UI/UX 시스템 완성Spine 애니메이션 연동 작업에 대해 이야기하려 한다.
게임의 시스템이 어느 정도 구축된 이후, 플레이어가 게임을 어떻게 경험하느냐는 UI와 UX에 달려 있다.
특히 이번 프로젝트에서는 Spine 툴을 활용해 UI 애니메이션에도 생동감을 주려고 했기 때문에, 이 과정은 꽤 신경을 많이 쓴 작업이었다.


UI/UX 시스템 완성

게임 초기에 제작한 UI는 단순한 버튼과 텍스트 위주였다.
하지만 테스트를 진행하면서 느낀 것은, 플레이어 경험(UX)을 고려하지 않은 UI는 몰입감을 심각하게 해친다는 점이었다.
특히 뱀파이어 서바이벌 장르 특성상, 게임이 빨라질수록 빠른 조작과 정보 파악이 필수적인데, 기존 UI는 이 흐름을 따라오지 못했다.

그래서 전체 UI를 다시 설계했다.

  • 로비 화면:
    • 캐릭터 초상화 뷰어 추가 (잠긴 캐릭터는 흑백 처리, 잠금 해제 시 풀컬러)
    • 무기 버튼, 토템 버튼, 상점 버튼, 플레이 버튼을 명확하게 구분
    • 상단에 다이아몬드, 골드, 부활 코인 등을 직관적으로 표시
  • 인게임 HUD:
    • 체력 바, 경험치 바, 남은 시간 표시
    • 현재 장착 중인 무기와 토템 상태를 직관적으로 보여주는 아이콘
  • 아이템 팝업:
    • 획득한 아이템을 눈에 띄게 보여주고, 등급별로 시각적 효과(광채, 오오라)를 추가

Spine 애니메이션 연동

UI의 '살아있는 느낌'을 주기 위해 Spine을 적극적으로 활용했다.
일반적인 언리얼 위젯 애니메이션만으로는 자연스럽고 복잡한 움직임을 표현하는 데 한계가 있었기 때문이다.

Spine을 활용한 UI 요소들

  • 상자 오픈 애니메이션:
    가챠 상자를 열 때, 스프링처럼 튀어나오며 반짝이는 연출을 Spine으로 제작했다.
  • 캐릭터 뷰어 이펙트:
    캐릭터 선택 시, 배경에 빛나는 원형 이펙트가 부드럽게 회전하는 애니메이션을 Spine으로 적용했다.
  • 보상 팝업 효과:
    아이템 획득 시, 보상 창이 튀어나오면서 작은 별빛 이펙트가 퍼지는 연출.

이 애니메이션들은 Spine 에디터에서 작업한 뒤, 언리얼 플러그인을 통해 임포트하고 블루프린트로 연동했다.


연동 과정에서의 어려움과 해결

Spine 애니메이션을 언리얼에 연동하는 과정은 생각보다 까다로웠다.
가장 큰 문제는 Spine 애니메이션을 UI 위젯에 자연스럽게 얹는 것이었다.

  • Spine 애셋은 3D 공간용 오브젝트처럼 작동하기 때문에, UI 좌표계와 일치시키는 데 어려움이 있었다.
  • 애니메이션 재생 타이밍을 수동으로 제어해야 했기 때문에, 버튼 클릭이나 이벤트 발생 시 별도로 Spine 플레이 함수를 호출하는 블루프린트를 짜야 했다.

이를 해결하기 위해,

  • Spine 애니메이션을 위한 별도의 캔버스 레이어를 설정하고,
  • UI 논리(버튼 클릭 등)와 Spine 재생 로직을 분리해서 관리했다.

이로써 상자 열기, 보상 표시, 캐릭터 선택 화면 등 다양한 곳에서 애니메이션이 자연스럽게 동작하게 만들 수 있었다.


최적화와 마무리 작업

Spine 애니메이션이 많아지면서 렌더링 부하도 고려해야 했다.
특히 모바일 버전을 염두에 두었기 때문에, Spine 리소스 최적화를 진행했다.

  • 필요할 때만 Spine 오브젝트 활성화
  • 재생이 끝난 Spine 애니메이션은 비활성화 처리
  • 고해상도 Spine 애셋은 크기를 리샘플링하여 용량 줄이기

덕분에 퍼포먼스 저하 없이 부드러운 애니메이션 효과를 구현할 수 있었다.

728x90
반응형
728x90
반응형

『Wizsurvive』 개발의 다음 단계는 시간 흐름에 따라 게임이 변하는 구조를 만드는 것이었다.
게임 플레이가 단조롭게 느껴지지 않게 하기 위해, 5분마다 몬스터와 맵을 바꿔주고, 주기적으로 보스 몬스터를 등장시켜 게임에 리듬과 긴장감을 더하는 시스템이 필요했다.

5분 주기 구조 설계

처음 게임 구조를 구상할 때, "얼마나 자주 변화를 줄까?"에 대해 고민이 많았다.
너무 자주 변하면 리듬이 깨지고, 너무 드물면 플레이어가 지루함을 느끼기 쉽다.
결국 실험 끝에 결정한 기준은 5분 주기였다.

  • 매 5분이 지나면 새로운 몬스터 세트 등장
  • 5분 타이밍마다 보스 몬스터 스폰
  • 맵(배경) 비주얼 변경

이 패턴이 게임이 끝날 때까지 무한 반복된다.

플레이어는 매번 변하는 환경에 적응해야 하고, 새로운 적의 패턴을 파악하면서 끊임없이 몰입감을 느끼게 된다.


몬스터 스폰 시스템 구현

5분마다 몬스터 종류를 바꾸는 로직은 기본적으로 타이머를 기반으로 만들었다.
게임 시작과 함께 총 플레이 시간을 초 단위로 누적하고, 300초(5분)가 경과할 때마다 다음 몬스터 그룹으로 넘어가는 식이다.

각 웨이브에는 별도의 몬스터 풀을 설정했다.
예를 들면,

  • 1~5분: 기본형 몬스터 등장
  • 5~10분: 강화형 몬스터 등장
  • 10~15분: 특수 능력 보유 몬스터 등장

이렇게 진행되며, 매 5분마다 난이도가 자연스럽게 상승한다.

추가로, 웨이브 간 경계에서 몬스터 스폰량을 살짝 줄였다가 다시 급격히 늘리면서
플레이어에게 '잠시 숨 돌리는 시간'을 주고, 다시 급격히 몰려오는 느낌을 연출했다.


보스 몬스터 스폰

보스 몬스터는 5분 주기에 맞춰 반드시 등장한다.
구현할 때 가장 신경 쓴 부분은 "보스 스폰 조건"이었다.

  • 5분이 정확히 지났을 때
  • 기존에 스폰된 일반 몬스터와 겹치지 않게
  • 별도의 보스 스폰 포인트에서 등장

보스는 등장 즉시 전용 음악과 함께 카메라를 약간 줌 아웃시켜, 플레이어가 "보스전이 시작됐구나"라는 느낌을 받게 했다.
보스를 처치하면 특별한 보상 아이템(레어 토템, 무기 등)을 드랍하도록 설정해, 보스전을 클리어하는 성취감을 높였다.


맵 전환 시스템

맵 역시 5분 주기로 전환된다.
단순히 배경 이미지를 교체하는 것을 넘어, 분위기도 함께 바꿨다.

  • 밝고 초록빛 풀밭 → 황량한 사막 → 음산한 늪지대
    같은 식으로,
    맵의 색감과 이펙트(먼지 효과, 비 효과 등)까지 함께 바꿔 몰입감을 높였다.

맵 전환 시에는 짧은 플래시 효과(붉은색 깜빡임)를 주어 플레이어가 다음 웨이브로 넘어갔다는 것을 직관적으로 인지할 수 있도록 했다.


구현하면서 겪은 문제와 해결 과정

이 시스템을 만들면서 예상치 못한 문제가 여럿 발생했다.
가장 큰 문제는 타이머 동기화였다.
플레이 시간이 길어질수록 타이머 오차가 쌓여, 5분이 정확히 지났을 때 이벤트가 밀리거나 중복 발생하는 경우가 생겼다.

이를 해결하기 위해, 매 프레임마다 현재 총 경과 시간을 체크해
(경과시간 % 300초) == 0
조건이 충족될 때만 이벤트를 트리거하는 구조로 고쳤다.
이 덕분에 오차 없이 정확히 5분마다 몬스터, 보스, 맵이 동시에 전환되도록 할 수 있었다.

또한, 5분 주기로 배경을 교체할 때 리소스 로딩이 순간적으로 끊기는 문제가 있었는데,
배경 리소스를 미리 로딩해 두었다가 전환 순간에는 단순히 '활성화/비활성화'만 하도록 최적화하여 문제를 해결했다.

728x90
반응형