일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- graphics
- 학습용
- class
- C++
- 백준
- algorithm #알고리즘 #백준
- 프로그래머스
- Overloading
- 알고리즘연습
- UNORDERED_MAP
- 논문
- ue5
- Algorithm
- game jam
- oprerator
- 2020.03.16
- sparse matrix
- 알고리즘
- rendering pipeline
- Til
- stretch force
- TIP
- ppt
- 독서
- ComputeShader
- 2020.02.23
- C
- Conjugate Gradient
- 참조자
- Implicit method
- Today
- Total
OSgood의 개발일기
[UE] Lyra Experience 시스템 본문
Lyra Experience 시스템은 Epic Games가 Unreal Engine 5 기반으로 만든 샘플 프로젝트인 Lyra Starter Game에서 설계한 커스텀 구조입니다.
Unreal Engine 자체에 내장된 공식 시스템은 아니지만, Gameplay Ability System(GAS), Game Feature Plugin, Modular Gameplay 등 최신 언리얼 생태계와 가장 잘 통합되는 게임 구조 패턴으로 사실상 Epic이 권장하는 모듈화 설계 방식이라 할 수 있습니다.
이 글에서는 Lyra의 Experience 시스템이 무엇이며, Unity 개발자의 시선에서 어떻게 이해하면 빠르게 적응할 수 있는지를 중점으로 설명합니다.
✅ Experience란 무엇인가?
Lyra의 Experience는 게임의 한 세션(월드)에서 어떤 기능, 능력, UI, 입력 구성 등을 사용할지 정의하는 상위 환경 구성 객체입니다.
ULyraExperienceDefinition이라는 Data Asset으로 구성되며, 특히 Lyra Sample Game, GAS(Ability System), Game Feature Plugin을 사용하는 프로젝트에서 핵심 역할을 합니다.
요약하자면:
"지금 이 게임 세션은 어떤 규칙, 기능, 능력 구성을 따를 것인가?" 를 결정하는 런타임 환경 정의서입니다.
🧱 Experience가 관리하는 것들
- 어떤 Ability Set을 사용할지
- 어떤 입력 맵을 쓸지
- 어떤 UI / HUD를 띄울지
- 어떤 Game Feature Plugin을 활성화할지
- 어떤 PawnData (캐릭터 구성)를 사용할지
- 어떤 팀 구성과 스폰 규칙을 적용할지
모든 것을 하나의 Experience Data Asset에 담아두고, 게임이 시작되면 해당 Experience를 비동기 로딩하여 전체 시스템을 구성합니다.
🎮 Unity와 비교해보면?
Unreal Unity 대응 설명
Experience | ScriptableObject + GameManager Init + Addressables 설정 | 다양한 시스템 초기화 구성을 묶어놓은 데이터 |
PawnData | CharacterConfig ScriptableObject | 캐릭터 능력, 입력, 무기, UI 등을 정의 |
GameFeaturePlugin | Addressables + Module Pattern | 특정 기능을 모듈화하여 필요할 때만 로딩 |
AbilitySet | Skill System ScriptableObject | 플레이어에게 부여할 스킬/능력 정의 |
🔁 예를 들어보면:
Unity에서는 PvP 모드와 PvE 모드를 다음과 같이 나눠 구성할 수 있습니다.
// Unity 방식
GameManager.Start():
if Mode == PvP:
LoadScene("Arena")
LoadUI("Scoreboard")
SetInputMap("PvP")
GiveAbilities(["Dash", "Shoot"])
else if Mode == PvE:
LoadScene("Dungeon")
LoadUI("QuestLog")
SetInputMap("PvE")
GiveAbilities(["Heal", "Fireball"])
Unreal에서는 이 모든 구성을 하나의 Experience 자산으로 만들어 둔 뒤, 매치 시작 시 그걸 한 줄로 로드합니다.
StartExperience("PvP_Experience");
📦 Experience 내부 구조
ULyraExperienceDefinition (Data Asset)
├── DefaultPawnData (캐릭터 능력/입력/무기 구성)
├── GameFeaturesToEnable (플러그인 기반 기능 모듈들)
├── ActionSets (UI 표시, 카메라 설정 등 실행 로직)
├── TeamsConfig (팀 수 및 규칙)
└── GameplayAbilitySets (기본 능력 세트)
즉, 게임 개발 시 모드를 바꾸고 싶다면 Experience 자산만 바꾸면 끝입니다.
🔧 실전 예시: PvP vs PvE
항목 PvP Experience PvE Experience
PawnData | Dash + Shotgun + Arena HUD | Heal + Fireball + Quest UI |
GameFeature | Scoreboard, MatchTimer | EnemySpawner, QuestSystem |
InputMap | WASD + ShiftDash | WASD + QSpell |
AbilitySet | Dash, DoubleJump, Shoot | Heal, Shield, AoE |
UI | Score + Timer | HP + QuestLog |
각 Experience는 서로 전혀 다른 시스템 구성을 가질 수 있으며, 런타임 중 전환도 가능합니다.
🧠 왜 이게 좋은가?
- 기능 모듈화: UI, 능력, 팀 설정 등을 상황에 따라 선택적으로 로드 가능
- 확장성: 새로운 모드를 만들기 쉬움 (Experience만 복사해서 수정)
- 성능 최적화: 쓰지 않는 기능은 로딩하지 않음 (GameFeaturePlugin 연동)
- 디자이너 친화적: Blueprint 기반으로 경험 설정 가능
📌 정리
개념 Unreal Unity 대응 개념
게임 실행 환경 | World | Scene + GameManager |
환경 정의 | Experience | ScriptableObject + Game Init |
캐릭터 초기화 | PawnData | CharacterConfig |
능력 세트 | AbilitySet | SkillSet ScriptableObject |
기능 로딩 | GameFeaturePlugin | Addressables or Modules |
🔚 마무리
Unity에 익숙한 개발자라면 Lyra의 Experience 시스템은 처음엔 다소 복잡해 보일 수 있습니다.
하지만 이해하고 나면 훨씬 강력하고 구조적인 게임 시스템 구성 방식임을 알 수 있습니다.
특히 GAS, Game Feature Plugin, PawnData와 연동하면 모듈화된 AAA급 게임 환경 구축이 가능하며, 다양한 게임 모드를 유연하게 구성할 수 있게 됩니다.
다음 포스팅에서는 PawnData, GameFeaturePlugin, AbilitySet의 연결 흐름을 코드 예제와 함께 더 깊이 파헤쳐보겠습니다!
참고
https://dev.epicgames.com/documentation/ko-kr/unreal-engine/lyra-sample-game-in-unreal-engine
* 해당 글은 GPT를 이용해서 작성되었습니다.
'Game Programing > UnrealEngine' 카테고리의 다른 글
언리얼 - 모듈 (0) | 2025.05.22 |
---|