Unreal 11

[UE5/GAS] GAS와 CharacterPlayer, GA와 AbilityTask

인프런 [이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템] 강의 공부 노트 멀티플레이 환경에서 플레이어 캐릭터에 GAS를 설정할 때 주의할 점!플레이어 = (플레이어 컨트롤러)+(조정하는 폰)→ 2개의 액터 형태이기 때문에 이를 고려한 설계가 필요하다!→ 서버에서 보관할 데이터 / 실제로 조종하는 캐릭터의 분리 필요 GAS의 데이터를 담당하는 Actor : OwnerActor상호작용과 비주얼을 담당하는 Actor : AvatarActor 주기적으로 서버-클라이언트로 배포되는 PlayerState가 데이터를 관리하기 가장 적합하다!따라서 OwnerActor는 PlayerState로 지정, AvatarActor는 조종할 Character로 설정.→ PlayerState에서 ASC 생성,..

[UE5/GAS] GameAbilitySystem기초_Actor와 GAS, Gameplay Tag

인프런 [이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템] 강의 공부 노트~이번 강의의 내용~ASC의 생성과 초기화GA의 제작과 활용Tag의 활용 1. GAS를 사용한 구현 방법 → C++로만 모든 기능 구현 가능, Actor로부터 기능 분리 장점 1) 어빌리티 발동 준비ASC (AbilitySystemComponent) 선언액터들의 중앙처리장치 ASC를 통해 GA발동 가능, 부착한 액터끼리 GAS 상호작용 가능액터에 ASC 상속받아 생성InitAbilityActorInfo(실제 작업_데이터 변동이 일어나고 있는 액터 정보, 비주얼 작업_동작만 수행하는 아바타 액터)ASC 선언액터에 단 1개 부착 가능GAS를 관리하는 핵심 컴포넌트 GA (Gameplay Ability) 생성ASC에..

[UE5/GAS] Game Ability System이란?

인프런 [이득우의 언리얼 프로그래밍 Part4 - 게임플레이 어빌리티 시스템] 강의 공부 노트이득우 교수님께서 스킬 기반의 복잡한 시스템 사용 시, GAS의 프레임워크 공부를 권장한다고 하셨다. 교육 과정에는 포함되어있지 않아, 이득우 교수님의 온라인 강의를 따로 찾아보게 되었다. GameAbilitySystem? 장점유연성과 확장성 → 생산성 차이모듈화 시스템 → 독립적인 기능으로 전체에 영향이 적음네트워크 멀티플레이 지원데이터 기반 설계높은 완성도의 프레임워크 단점학습 비용이 큼오버헤드 → 작은 프로젝트라면 GAS 도입이 너무 큰 비용일 수 있음 5가지 구성 요소ASC (Ability System Component): GAS 프레임워크를 관리하고 처리하는 액터 중앙 처리 장치Gameplay Tag :..

[UE5/LOL] Sobel Edge Filter 만들기 & UV 렌더링 문제 해결

Sobel Edge Filter의 기본은 다음 유튜브를 보며 공부하였다. https://www.youtube.com/watch?v=PXLgkxRizPI&t=11s Sobel Edge Filter?포스트 프로세싱 볼륨을 이용하여 SceneTexture에서 픽셀 정보를 받아와 아웃라인을 그려주는 필터이다. 위 필터를 공부하고 적용한 뒤, 흑백이 아니라 실제 텍스쳐 컬러와 혼합하는 작업을 추가하였다. 간단하게 원래 텍스쳐에서 컬러 값을 뽑아와 Multiply 해 주었다. 결과 화면Material 화면은 잘 나오지만, Editor Play 화면은 렌더링이 이상하게 되는 현상이 발생하였다. 위 현상을 해결하기 위하여 여러 파라미터들을 만져보다가 GetSceneTextureUV부분에서 문제가 생긴다는 것..

[UE5] Blueprint 프로젝트를 C++로 (3) 마우스 클릭으로 캐릭터 이동하기

2025.04.21 - [UnrealEngine5/프로젝트] - [UE5] Blueprint 프로젝트를 C++로 만들어보기 (3) 마우스 커서 기반 이동하기 [UE5] Blueprint 프로젝트를 C++로 만들어보기 (3) 마우스 커서 기반 이동하기1. 마우스 커서 보여주기 캐릭터 기능을 추가하기 전에, 컨트롤러에서 변경해야 할 점이 있다. 블루프린트로 만들었던 프로젝트에서는 마우스 커서의 input 위치를 바탕으로 이동했기 때문에,플narmhye.tistory.com 캐릭터를 단순 Location 변환이 아닌, 이동을 시켜야 한다. Blueprint에서는, AIController를 가져와 AI MoveTo로 Location을 전달하여 이동시켰다. 하지만, 지금 단계에서는 NavMeshVolume을 설정..

[UE5] Blueprint 프로젝트를 C++로 만들어보기 (3) 마우스 input 설정

1. 마우스 커서 보여주기 캐릭터 기능을 추가하기 전에, 컨트롤러에서 변경해야 할 점이 있다. 블루프린트로 만들었던 프로젝트에서는 마우스 커서의 input 위치를 바탕으로 이동했기 때문에,플레이어 컨트롤러에서 마우스 커서를 보여주는 설정을 추가해야 한다. PlayerController의 BeginPlay에서 SetShowMouseCursor로 설정 가능하다. // 마우스 커서 보이도록 설정. SetShowMouseCursor(true); 2. 캐릭터 input 설정_Move우선, input과 연관된 캐릭터 행동에는 이동밖에 없어 이동만 우선 구현해 보았다. 다른 행동들은 모두 UI로 델리게이트에 등록할 것이다. 1) 마우스 클릭이 완료된 시점(Trigger되었다 해제된 시점) 상태 확인하기블루프린..

[UE5] Blueprint 프로젝트를 C++로 만들어보기 (2)

전에 생성한 Bluprint 캐릭터의 설정을 확인하며 cpp로 설정해 준다. character controller 설정 capsule conponent collision 설정 Mesh Transform 설정 Animation Mode 설정 Mesh Collision 설정 Mesh 설정이전 글의 Actor와 마찬가지로 Skeletal Mesh의 레페런스를 복사하여 cpp에 넣어준다. CharacterBase.cpp// Fill out your copyright notice in the Description page of Project Settings.#include "Character/MABCharacterBase.h"#include "Components/CapsuleComponent.h"// Sets..

[UE5] Transform Scale과 Shape Extent의 차이

collision을 다루다가 scale과 extent가 겉으로 보기에는 비슷해보여 궁금해졌다.scale은 자식에 영향을 미친다는 점 외에 어떤 차이가 있는지 궁금하여 알아보았다. 1. scale은 Transform의 일부 / extent는 Collision의 Shape의 고유 속성이다. 2. scale은 자식계층을 비롯한 구조 전체에 영향을 준다 / extent는 독립적이라 충돌 범위에만 영향을 준다. 3. extent는 기본적으로 렌더링X. CollisionDebug를 해야만 렌더링된다. extent는 오직 충돌 처리 범위만을 늘려야 할 때 사용을 권장한다고 한다. 실제 렌더링 과정에는 영향이 없고 충돌 범위만 늘어나기 때문에 사용한다. 또한 자식 계층에 대해 독립적이라 안전하게 사용 가능하다. ..

[UE5] Blueprint 프로젝트를 C++로 만들어보기 (1)

게임 모드 - 캐릭터 - 플레이어 컨트롤러 - 액터 순으로 생성1. GameModeBase 생성 Game 폴더를 만들어 안에 넣어주고, 상위 경로를 include에 추가해준다. 2. 모듈 추가하기프로젝트이름.Build.cs 파일에 다음을 추가해준다. PublicIncludePaths.AddRange(new string[] { "프로젝트이름" });이 때, 빌드하면 컴파일 오류가 뜨는데 이를 라이브코딩으로 리로드 해야 한다. 엔진 끄고 빌드하면 계속 오류가 난다. 3. 플레이어 컨트롤러, 캐릭터 추가1) 플레이어 컨트롤러 2) 캐릭터 - 베이스용 캐릭터 추가플레이어와 npc 등 모든 캐릭터의 베이스가 될 캐릭터 3) 캐릭터 - 플레이어용 캐릭터 추가위에서 생성한 CharacterBase를 추가한다..

[UE5] Dedicated server 전용 서버 독학하기 1) 공식 문서 튜토리얼

1. 어떤 부분을 리플리케이트 할지 구분하기어떤 자원을 공유&동기화 할 것인지 구분해야 한다. 필요한 자원을 구분하여, 서버 비용을 최적화하는 것이 개발 측과 게임 플레이 모두 영향을 미치기 때문에 매우 중요한 부분이라고 생각한다.  2. Listen server / Dedicated server 가장 큰 차이는, 플레이어가 서버가 되는가?이다. Listen server는 플레이어가 서버가 되어 서버를 호스팅 하여 다른 플레이어들(client) 간의 자원을 관리한다. 실제 플레이중에 서버를 통하여 동기화되기 때문에 서버가 된 플레이어가 유리하다.  Dedicated server는 전용 서버가 따로 존재하여 참여하는 플레이어들은 모두 client이다. 그렇기 때문에 Listen server와는 다르게 공정..