Strikers 1945의 정신을 계승한 B급 감성 종스크롤 슈팅 액션.
Play on itch.io: shelldivers.itch.io/divers-2045
- Engine: Unreal Engine 5.4 (C++ / Blueprint)
데이터 · 기능 · 매니저 3개 층으로 역할을 분리했다.
매니저 (Blueprint) ── 기능들을 조합하고 게임 흐름을 관리
│ 호출·배치
▼
기능 (C++ / 언리얼 기능) ── 이동·공격·AI·이펙트 등 단일 책임 단위
│ 참조
▼
데이터 (DataTable) ── 스탯·밸런싱 수치
| 층 | 구현 방식 | 역할 | 예시 |
|---|---|---|---|
| 데이터 | DataTable (FTableRowBase) |
밸런싱 수치를 코드 밖으로 분리 → 재컴파일 없이 수정 | 무기 진화 스탯, 적 스탯, 아이템 드랍 |
| 기능 | C++ 코드 + 언리얼 기능 | 성능·정확도가 중요한 단일 동작을 담당 | Enhanced Input, Behavior Tree, Niagara, Actor Component |
| 매니저 | Blueprint | 기능들을 묶어 배치·연결·흐름 제어 | 스테이지 흐름, 스포너, 탄막 관리자 |
| 게임 기능 | 사용한 언리얼 기능 |
|---|---|
| 플레이어 이동·공격·봄 조작 | Enhanced Input (IMC + Input Action) |
| 다단계 보스 AI / 공격 패턴 | Behavior Tree + Blackboard + AIController |
| 무기 진화·적 스탯·아이템 밸런싱 | DataTable 기반 데이터 주도 설계 |
| 탄환 트레일 · 격파 이펙트 | Niagara |
| 체력 · 아이템 드랍 등 공통 로직 | Actor Component |
| HUD (봄 개수 · 공격 레벨 · 사망) | Delegate 이벤트 구독 |
| 스테이지 진행 · 난이도 스케일링 | 상태 머신 + 배경 스크롤 연동 |
| 사운드(BGM/플레이어/적/UI) | Data Asset 기반 오디오 Config |
평균 300개 이상의 보스 탄막을 프레임 저하 없이 처리하기 위해, 탄환을 개별 Actor로 만들지 않고 중앙 관리자(BossProjectileManager)가 Instanced Static Mesh(ISM) 로 일괄 관리했다.
- ISM 하나로 모든 탄막을 단일 드로우 콜로 배치 렌더링
- 탄환을 Actor가 아닌 경량 구조체 배열로 관리 → 개별 Actor/Tick 오버헤드 제거
- 물리 충돌 대신 커스텀 경량 충돌(플레이어 히트박스 vs 이동 선분)만 검사
- 화면 밖 탄환 뷰포트 컬링,
RemoveAtSwapO(1) 제거, 트랜스폼 일괄 갱신
