반응형

전체 글 148

[UE5 GAS] Section 8 — RPG Attribute 초기화와 MMC 스탯 공식

UE5 Gameplay Ability System · Section 8RPG Attribute 초기화와 MMC 스탯 공식이 글은 강의를 다시 틀지 않아도 Primary → Secondary → Vital Attribute를 직접 만들고, 레벨과 스탯으로 최대 체력·마나를 계산하도록 구현하는 것을 목표로 한다.먼저 결론부터Section 8을 끝내면 캐릭터의 힘·지능·회복력·활력에서 방어력, 치명타 확률, 최대 체력, 최대 마나가 계산되고, 마지막에 현재 체력과 마나가 가득 찬 상태로 시작한다. 숫자를 캐릭터 생성자에 박아 두는 대신 Gameplay Effect를 스탯 초기화 파일처럼 사용하기 때문에 플레이어, 적, 직업별 초기값을 에디터에서 바꿀 수 있다.핵심은 Attribute를 세 층으로 나누는 것이다..

공부/UE 2026.09.29

[UE5 GAS] Section 7 — Gameplay Tags와 포션 메시지 UI

UE5 Gameplay Ability System · Section 7Gameplay Tags로 포션 메시지 UI까지 연결하기이 글만 다시 읽어도 태그 등록, Gameplay Effect 감지, Data Table 조회, 메시지 위젯 생성, 고스트 체력바와 올바른 Attribute Clamp까지 직접 구현할 수 있도록 정리했다.먼저 결론부터Section 7을 끝내면 포션을 먹었을 때 체력만 올라가는 데서 끝나지 않고, 화면에 “Health Potion Picked Up” 같은 메시지와 아이콘이 나타나게 만들 수 있다. 이때 포션마다 UI 코드를 따로 작성하지 않는다. Gameplay Effect에 Message.HealthPotion 같은 태그만 붙이면, 공통 코드가 태그를 읽고 알맞은 UI 데이터를 찾..

공부/UE 2026.09.29

[UE5 GAS] Section 6 — Gameplay Effects: 포션, 중첩, 지속 효과와 장판

Section 5까지는 체력과 마나를 화면에 보여 주는 데 집중했다. 이제부터는 그 숫자를 어떤 규칙으로 바꿀 것인지를 만든다. 포션을 먹으면 즉시 회복되고, 수정 근처에 있으면 일정 시간 동안 회복되며, 불 장판 위에 있을 때만 체력이 깎이는 기능이 모두 Gameplay Effect에서 시작된다.먼저 결론부터Section 6을 끝내면 즉시 효과, 일정 시간 효과, 주기적으로 반복되는 효과, 장판을 벗어날 때 제거되는 무한 효과를 만들 수 있다. 디아블로식 게임으로 바꾸면 체력 포션, 독, 출혈, 재생 버프, 오라, 화염 장판의 공통 기반이 완성되는 셈이다.중요한 점은 Health를 직접 SetHealth()로 바꾸지 않는다는 것이다. 변경 내용을 Gameplay Effect 에셋으로 만들고 ASC에 적..

공부/Algorithm 2026.09.29

[UE5 GAS] Section 5 — WidgetController와 Health/Mana UI

C++에서 객체 수명과 Delegate를 다뤄 본 개발자가 언리얼 UI를 처음 만드는 상황을 기준으로 정리했다. Section 4에서 Health와 Mana를 만들었고, 이번 Section에서는 그 값을 화면의 두 구체에 표시한다.먼저 결론부터 말하면 Widget이 AttributeSet을 직접 뒤지는 구조가 아니다. HUD가 Widget과 WidgetController를 만들고, WidgetController가 GAS 값을 읽어 Delegate로 방송하면, Blueprint Widget은 그 방송을 받아 Progress Bar의 Percent만 바꾼다.이번 Section을 끝내면 할 수 있는 것화면 왼쪽 아래에 Health 구체, 오른쪽 아래에 Mana 구체를 표시할 수 있다.게임 시작 직후 현재 He..

공부/UE 2026.09.28

[UE5 GAS] Section 4 — Health/Mana Attribute 복제와 Effect Actor

Section 3에서 ASC와 AttributeSet을 캐릭터에 연결했다. 하지만 아직 AttributeSet 안에는 실제 값이 하나도 없다. 이번 Section에서는 Health와 Mana를 만들고, 서버에서 바뀐 값이 클라이언트까지 전달되도록 복제한다. 마지막에는 맵에 회복 포션을 놓고 캐릭터가 주우면 Health가 25 올라가는 것까지 확인한다.앞 강의가 기억나지 않아도 이 글만 보고 네 개의 Attribute와 테스트용 포션을 다시 만들 수 있게 정리했다. 강의 저장소에는 처음에 Mana 복제 등록 두 줄이 빠졌다가 뒤에서 수정되는 이력이 있다. 아래 코드는 그 수정까지 반영한 최종 형태다.이번 Section을 끝내면 할 수 있는 것Health/MaxHealth/Mana/MaxMana가 FGame..

공부/UE 2026.09.17

[UE5 GAS] Section 3 — ASC, AttributeSet와 Owner/Avatar 구조

C++에서 객체 수명과 네트워크 동기화를 다뤄 본 개발자가 언리얼 GAS를 처음 붙이는 상황을 기준으로 썼다.Section 3에서는 GAS에 필요한 클래스를 만들고, 플레이어와 적이 실제로 그 클래스를 사용하도록 연결한다.Section 2에서 움직이는 캐릭터를 만들었다. 이제 그 캐릭터에 체력, 마나, 스킬, 버프와 디버프를 관리할 GAS를 붙인다. 이때 Owner Actor와 Avatar Actor라는 낯선 이름이 나온다. 먼저 간단히 말하면 Owner는 GAS 데이터를 보관하는 객체, Avatar는 월드에서 실제로 움직이고 애니메이션을 재생하는 캐릭터다.먼저 확인할 것: 강의 하나가 끝날 때마다 무엇이 달라지나16강 — The Gameplay Ability System이번 강의가 끝나면: GAS가 왜..

공부/UE 2026.09.17

[UE5 GAS] Section 2 — 프로젝트 생성, 입력, 애니메이션과 적 하이라이트

C++ 경력은 있지만 언리얼은 처음인 개발자를 기준으로 썼다.목표는 강의 내용을 요약하는 것이 아니다. 빈 UE5 C++ 프로젝트를 열고 이 글만 따라가도 같은 캐릭터 이동, 애니메이션, 적 하이라이트를 다시 만들 수 있게 하는 것이다.Section 2에서는 아직 GAS를 사용하지 않는다. 먼저 캐릭터를 만들고, 키보드로 움직이고, 움직임에 맞춰 애니메이션을 재생하고, 마우스를 올린 적에게 테두리를 표시한다. GAS를 배우기 전에 게임에서 직접 움직이는 캐릭터 한 명을 완성하는 구간이라고 생각하면 된다.먼저 확인할 것: 강의 하나가 끝날 때마다 무엇이 생기나4강 — Initial Project Files이번 강의가 끝나면: 강의에서 사용하는 캐릭터, 무기, 이펙트가 들어 있는 Aura 프로젝트를 같은 환..

공부/UE 2026.09.17

[UE] 언리얼 네트워크 프로그래밍 - GameMode와 로그인

GameMode의 주요 함수PreLogin : 클라이언트의 접속 요청을 처리하는 함수 - 서버는 실행 XLogin : 접속을 허용한 클라이언트에 대응하는 플레이어 컨트롤러를 만드는 함수PostLogin : 플레이어 입장을 위해 플레이어에 필요한 기본 설정을 마무리하는 함수StartPlay : 게임의 시작을 지시하는 함수BeginPlay : 게임 모드의 StartPlay를 통해 게임이 시작될 때 모든 액터에서 호출하는 함수 클라이언트에는 GameMode가 없음(서버에만 있음)-> 클라이언트는 게임의 시작을 알기 위해 GameState를 서버로부터 Replicate받음-> GameMode의 명령을 받은 GameState는 모든 액터들이 BeginPlay를 호출하도록함-> GameMode의 게임 시작 명령을 ..

공부/UE 2026.02.08

[UE] Meta Attribute

Meta Attribute란?상태(state)가 아닌 AttributeHealth, Mana, Stamina → 상태IncomingDamage → 계산 입력값즉,“현재 데미지가 몇이다”가 아니라“이번 Effect에서 들어온 데미지 값”이건 지속 상태로 유지될 이유가 없는 값이다.➡️ GAS 설계상 이런 값은 Meta Attribute로 분류된다. 따라서 Meta Attribute는 보통 Replicate 대상이 아님 Meta Attribute는 왜 Replication을 안 하나?Meta Attribute의 성격IncomingDamageOutgoingDamageDamageHealingDone이런 것들은:계산 중간값한 프레임 / 한 Effect 단위PostGameplayEffectExecute에서 소비 후..

공부/UE 2026.01.14

[UE] PreAttributeChange가 아니라 PostGameplayEffectExecute에서 Clamp 해야 하는 이유

불에 들어가면 HP가 감소해야 하는데 감소하지 않는 것을 볼 수 있다.이유는 지금 HP에 대한 Clamp 처리를 PreAttributeChange에서 해주고 있기 때문이다 왜 PreAttributeChange에서 해주면 문제가 되는걸까찾아보니 PreAttributeChange는 BaseValue가 바뀐 직후, CurrentValue는 바뀌기 전에 호출된다고 하더라 못믿겠어서 엔진 코드를 직접 찾아봤다진짜로 PreAttributeChange 이전 콜스택에 FActiveGameplayEffectsContainer::SetAttributeBaseValue 함수 내부에서 BaseValue를 먼저 세팅한 후에 PreAttributeChange를 호출해주고 있었다. 그럼 왜 CurrentValue를 바꾸기 전에 C..

공부/UE 2025.11.02
반응형