github : https://github.com/kjinwoo12/UE5NetworkFps
GitHub - kjinwoo12/UE5NetworkFps
Contribute to kjinwoo12/UE5NetworkFps development by creating an account on GitHub.
github.com
[언리얼5] 멀티플레이 FPS #0 Lyra 프레임워크 기반 1인칭 슈팅 게임 만들기
UE4로 멀티플레이 FPS를 만든 적이 있다. 그때와 비교하면 엔진도, 개발 실력도, 에픽이 내놓는 샘플의 기준점도 많이 달라졌다. 이번에는 에픽이 UE5 우수 사례로 제공하는 Lyra Starter Game 위에, 오버워치처럼 역할이 나뉘는 하이퍼 FPS를 만들어 보려고 한다.
이 글은 시리즈의 입문이다. Lyra가 무엇인지, 코드가 어떤 층으로 나뉘는지, 어떤 게임을 목표로 두는지만 정리한다.
Lyra란 무엇인가
Lyra Starter Game은 에픽 게임즈가 UE5와 함께 키워 온 학습용·출발점용 샘플 프로젝트다. Fab에서 엔진 버전에 맞는 프로젝트를 받아 시작하면 된다. 이 시리즈에서 사용하는 엔진 버전은 5.7이다.
[Lyra Starter Game
Lyra Starter Game is a new sample gameplay project released with UE5. While the feature set being released is just a core base, this game is still intended to be an excellent starting point for game developers to create new projects, as well as a hands-on
www.fab.com](https://www.fab.com/listings/93faede1-4434-47c0-85f1-bf27c0820ad0)
UE4의 ShooterGame을 그대로 이식한 프로젝트는 아니다. Gameplay Ability System, Enhanced Input, Common UI, Replication Graph, Game Features, Experience처럼 출시 게임을 전제로 한 뼈대가 처음부터 붙어 있다. 기본 모드는 팀 데스매치(Expanse)와 거점 쟁탈(Convolution, control point)이고, 캐릭터는 UE5 마네킹(Manny / Quinn)을 쓴다. 스켈레톤은 MetaHuman과 같은 계열이다.
Lyra 프레임워크 구조
게임이 Content/ 폴더 하나에 다 들어 있지 않다. 코어 시스템은 Source/LyraGame/에 있고, 플레이 가능한 한 판은 Game Feature 플러그인과 Experience 데이터로 조립된다.
대략적인 층은 아래와 같다.
| 층 | 하는 일 |
|---|---|
LyraGame |
캐릭터, GAS, 카메라 모드 스택, 인벤토리·장비, 팀, 입력, Experience 로더 |
Experience (ULyraExperienceDefinition) |
이번 판에서 켤 Game Feature, 기본 PawnData, 액션 목록 |
| Game Features | 모드·맵·무기처럼 켜고 끌 수 있는 단위. Plugins/GameFeatures/에 있다 |
| Playlist / User Facing Experience | 프론트엔드에서 어떤 Experience와 맵으로 들어갈지 정한다 |
Experience가 로드되면 GameFeaturesToEnable에 적힌 플러그인이 올라오고, DefaultPawnData로 폰·입력·기본 카메라 모드가 붙는다. 그래서 맵만 연 뒤 캐릭터 블루프린트만 고쳐 보면, Experience가 여전히 Shooter 히어로를 스폰하는 경우 1인칭 작업이 화면에 나타나지 않는다. 검증은 Fps Experience / Playlist로 들어가야 한다.
캐릭터 외형은 ULyraPawnComponent_CharacterParts가 Character Part를 ChildActorComponent로 붙이는 코스메틱 시스템이다. 몸통·머리·장비를 파트 단위로 갈아끼운다. 기본 3인칭 샘플은 이 파트에 보이는 메시가 하나다. 1인칭을 넣으면 같은 파트 액터 안에 조작하는 플레이어만 보는 메시가 하나 더 생긴다. 그 내용은 다음 글에서 다룬다.
카메라도 같은 식으로 확장한다. Lyra는 1인칭 전용 PlayerCameraManager를 새로 만들지 않는다. ULyraCameraComponent 안의 CameraMode 스택이 뷰를 계산하고, ULyraHeroComponent::DetermineCameraMode()가 폰 데이터의 기본 모드(또는 능력이 덮어쓴 모드)를 고른다. TopDownArena가 이 패턴으로 탑다운 모드를 붙인다. FPS도 같은 확장 지점에 1인칭 모드를 끼운다.
현재 저장소에서 FPS 전용으로 나눈 조각은 대략 이렇다.
Plugins/GameFeatures/FpsCore— 1인칭 카메라 모드, 히어로·애니메이션 연결Plugins/GameFeatures/FpsMaps— 사격장 같은 맵과 PlaylistPlugins/GameFeatures/ShooterCore등 — 기존 슈터 무기·능력 파이프라인
Shooter를 지우고 처음부터 짜는 작업이 아니다. 기존 Shooter 파이프라인 위에 1인칭 경험을 얹는다.
flowchart TB
Frontend["프론트엔드 / Playlist"]
Exp["Experience"]
GF["Game Features"]
Pawn["PawnData → 히어로"]
Cam["CameraMode 스택"]
Frontend --> Exp
Exp --> GF
Exp --> Pawn
Pawn --> Cam
어떤 게임을 만들까
예전에 UE4로 멀티플레이 FPS를 만들고 블로그에 글을 남겼다. 그 사이 엔진 메이저 버전이 바뀌었고, 샘플의 기준점도 ShooterGame에서 Lyra로 옮겨 갔다. 같은 장르를 조금 더 좋은 구조로, 조금 더 높은 완성도로 다시 만들고 싶다.
목표는 세 가지다.
1. 오버워치 같은 하이퍼 FPS — 히트스캔만으로 끝나지 않고, 역할·쿨타임·궁극기가 한 판을 가른다.
2. 쟁탈전 — 거점을 두고 싸운다. Lyra의 Convolution이 이미 거점 모드의 뼈대를 보여 준다.
3. 캐릭터 셋 — 탱커 / 딜러 / 힐러. 코스메틱과 능력 셋이 히어로를 구분한다.
지금은 사격장 Experience에서 1인칭이 제대로 도는지, 착지와 앉기가 카메라를 뚫지 않는지를 먼저 붙잡는 단계다. 히어로 세 명과 쟁탈 규칙은 그다음이다.
'게임개발일지 > 멀티플레이 FPS' 카테고리의 다른 글
| [언리얼5] 멀티플레이 FPS #2 1인칭 무기 장착과 양손 잡기 (0) | 2026.10.27 |
|---|---|
| [언리얼5] 멀티플레이 FPS #1 풀바디 1인칭 카메라 (0) | 2026.08.16 |
| 언리얼 엔진 네트워크 FPS 게임 개발 일지#6 에임 오프셋 기능 개선 (1) | 2023.08.17 |
| 언리얼 엔진 네트워크 FPS 게임 개발 일지#5 총알 자국(Bullet holes), 데칼(Decal) (0) | 2023.08.17 |
| 언리얼 엔진 네트워크 FPS 게임 개발 일지#4 탄퍼짐, 반동 구간 반복, 반동 안정성 (2) | 2023.08.17 |