오늘
과제 필수 구현 기능
5-1. 멀티 웨이브 및 레벨 시스템 구축

GameMode 생성
Tools → New C++ Class → GameMode 선택 → 이름 설정 (MyGameMode)
MyGameMode.h


MyGameMode.cpp



BP_MyGameMode 생성
빌드 후, MyGameMode → Create Blueprint class based on MyGameMode → BP_MyGameMode 생성

BP_MyGameMode → Details 창에서 Wave 검색 후 설정
Wave Settings: 배열에 + 눌러 3개를 만들기
Duration : 각 Wave마다 제한 시간
SpawnCount : 아이템 스폰 횟수
Index 0: Wave 1
Index 1: Wave 2
Index 2: Wave 3

SpawnVolume 생성
Tools → New C++ Class → Actor 선택 → 이름 설정 (SpawnVolume)
SpawnVolume.h

SpawnVolume.cpp

MyGameMode.cpp 수정

SpawnVolume 스폰 영역 설정

ItemBase 생성
Tools → New C++ Class → Actor 선택 → 이름 설정 (ItemBase)
ItemBase.h

ItemBase.cpp

BP_Bomb / BP_Potion 생성
ItemBase 우클릭 → Create Blueprint class based on ItemBase
2개 생성하여 각각 BP_Bomb / BP_Potion 으로 만들고 Static Mesh 넣기


Static Mesh 설정


아이템 블루프린트 설정 확인
Collision Comp
Collision Presets → OverlapAllDynamic 인지 확인


GameMode에서 Item 연결
BP_MyGameMode → Details 패널 Wave System
Bomb Class / Potion Class 에 각각 BP_Bomb / BP_Potion 넣기

PIE 테스트
“Wave 1 시작!” 알림을 출력
SpawnVolume 박스 안에서 아이템이 랜덤 생성

Wave 2 시작!, Wave 3 시작!, 레벨 클리어! 까지 잘 뜨는 모습



레벨 전환
UGameplayStatics::OpenLevel 함수 사용
레벨 이름만 인자로 넘기기 → 자동으로 맵이 바뀜
새로 바뀐 맵에서도 동일한 MyGameMode 로직이 돌아가게
MyGameMode.cpp 수정

모든 레벨에 동일한 GameMode를 설정
나머지 레벨 Level_2_Map, Level_3_Map 설정


PIE 테스트
Wave 와 Level 이 진행되는지 확인하기 위해 Wave 시간을 2초로 잠시 수정하였음


마지막 레벨인 Level_3_Map 클리어를 했을 때,
"레벨 클리어! 다음 레벨로 진입합니다." 와 "★ 모든 레벨 클리어 ★" 가 같이 뜨는 문제를 수정

문제점
5-1. 멀티 웨이브 및 레벨 시스템 구축 구현은 됐지만, 현재 GameMode 하나에서 전부 다 처리하고 있음.
구현해야 될 것이 많지 않아서 괜찮지만, 프로젝트가 커진다면 GameMode 가 스파게티 코드가 될 수도 있음
GameState 을 따로 추가하여 역할을 분리 시키고 코드를 더 깔끔하게 쓰는 것이 낫다고 봄
AMyGameState 클래스 추가
- CurrentWaveIndex, WaveSettings을 GameState가 관리하게 코드 수정
- GameMode → GameState 다음 웨이브로 넘어가라고 명령을 해주고,
- GameState가 Wave Index를 올려서 상태 업데이트하게끔 코드 수정
회고
과제 5-1. 멀티 웨이브 및 레벨 시스템 구축을 하였다.
GameMode , SpawnVolume, ItemBase를 만들어 코드를 짜고 폭탄과 포션 메쉬도 넣으며 진행하였는데,
문제점이 있어서 따로 기재하였다.
주말동안 해야될 것
확장성과 가독성을 GameState을 추가하여 높이기
→ GameState에 데이터가 있으니 5-2를 진행할 때 (UI 추가), GetGameState<AMyGameState>() 이것만 호출한다면
현재 Wave와 시간을 쉽게 띄울 수 있을 것이다.
주말동안 컨디션 관리를 하는 것도 좋지만, 할 일을 하면서 쉬는 것이 더 중요하다고 본다.
'본 캠프 TIL' 카테고리의 다른 글
| 26.06.30 TIL / 기초반 4강 정리 및 트러블슈팅 해결 / 밍글데이 (0) | 2026.06.30 |
|---|---|
| 26.06.29 TIL / 5번 과제 완료 (0) | 2026.06.29 |
| 26.06.25 TIL / 강의 복습, AI 문제 풀기 (0) | 2026.06.25 |
| 26.06.24 TIL / 3D 게임 개발 챕터4 정리 완료, 과제 5번 준비 (0) | 2026.06.24 |
| 26.06.23 TIL / 3D 게임 개발 강의 정리, 방어 코드 짜보기 (0) | 2026.06.23 |