
처음 멀티슈터 장르의 프로젝트를 설계하고 1년이 지났다. 그간 경험이 쌓이고 작고 단단한 프로젝트를 거쳤다. 다시 한번 FPS라는 장르를 천천히 해부해보며 회고와 재구현, 그리고 어떻게 설계해야 이쁠까를 고민하며 시리즈를 시작한다.
기존 FPS 템플릿처럼 Animation Blueprint에 모든 판단을 몰아넣지 않고, C++과 DataAsset이 포즈에 필요한 값을 정리해주는 구조를 따라가며 조준, IK, 제자리 회전이 어떻게 분리되는지 살펴봤다.

이번 포스팅에서 다룰 Weapon은 단순히 입력에 그치지 않고, trace, montage, cosmetic, multicast, automatic fire까지 이어지는 발사 파이프라인에 대한 고민을 담는다.

이번 챕터의 목적은 무기 상태를 HUD로 연결하는 과정에 대한 설명이다.

FPS에서 무기 교체는 내부 상태, 화면에 보이는 손 애니메이션, 다른 클라이언트가 보는 3인칭 동작, 그리고 HUD까지 함께 움직이는 작은 파이프라인에 가깝다.

재장전은 단순히 `Ammo = MagCapacity`를 대입하는 기능처럼 보이지만, FPS에서는 그 수치가 바뀌는 타이밍이 애니메이션, 서버 권위, UI 갱신과 맞아야 한다. 이를 최대한 Interface로 묶어서 최소 책임으로 처리하는 방법에 대해 알아보자.