UE5 Issues - 파괴되는 Mesh
·
Unreal Engine
보스 레벨에서 플레이어들이 사용하는 다리 Mesh가 있는데, 이것을 파괴하는 시스템을 개발하게 되었다. 1. 고민처음에는 해당 기획을 듣고 여러 방식을 떠올리게 되었다.ChaosPhysics Constraintetc...개발하기 전 가장 중요하게 생각했던 부분은 "부서진 이후의 결과물"에 대한 고민이었다.파괴된 이후의 Mesh가 사라지도록 하여 게임에 영향을 미치지 않도록 할 것인가파괴된 이후의 Mesh가 이후 게임에 영향을 미치도록 할 것인가이 부분은 게임 플레이에 영향을 미칠 수 있는 부분이라고 생각하여 최대한 게임 플레이에 있어서 지장을 주지 않는 방향으로 생각하고 개발을 하였다. 다음으로는 고민한 내용은 얼마나 예쁘게 부술 수 있는가에 대한 내용이었다.현재 팀에는 배경 모델링을 담당해주시는 분이 ..
UnrealEngine - HitStop
·
Unreal Engine
전투 게임에 있어서 가장 중요한 부분중에 하나가 타격감이다. 여러가지 정보를 찾다가 아래 영상을 통해 Hit Stop이라는 것을 접하게 되었고 게임에 적용해 보게 되었다.https://youtu.be/IL9j4NchTvA?si=MM6F7kJEw7RysZRI&t=1951 1. 기능 구현가장 간단한 방식으로는 해당 시점에 시간을 느리게 만들어주는 방식이 존재한다. 코드를 보면SetGlobalTimeDilation을 통해 World의 시간을 지연시켜서 느려지도록 하는 방식이다.단순히 싱글플레이 게임에 있어서는 아래와 같은 방식을 사용해도 문제가 없을것이지만, 현재 게임은 멀티플레이 게임이기 때문에 멀티캐스트를 통해서 시간 지연하는 함수를 사용하기 때문에 월드에 존재하는 모든 플레이어들의 시간이 느려지는 문제..
UE5 Issues - 서버 & 클라이언트 로직
·
Unreal Engine
보호되어 있는 글입니다.
UE5 Issues : 데디케이트 서버 UI에 관해
·
Unreal Engine
멀티플레이 게임에서 UI를 개발함에 있어서 고려할 만한 점이 있다. Owner설정UI의 OwnerUI에 띄울 정보를 가질 Owner 보이는 곳Owner에게만 보여줄 것인가다른 유저들에게도 보여줄 것인가위젯에서 표시할 값이 어디에서 변하는가서버에서 변경클라이언트에서 변경1. Owner 설정과 보여지는 곳예를 들어, 우리가 자신의 체력 바를 만든다고 했을 때를 생각해 보자UI의 Owner는 나 자신이고, 띄울 정보의 Owner도 나 자신이다.보여지는 곳은 나 자신이 될 것이다.이 경우는 크게 생각할 문제가 없다.그러나 우리가 다른 플레이어의 체력 바를 또한 띄우고 싶다면UI의 Owner는 나 자신이지만, 띄울 정보는 다른 플레이어의 정보이다.보여지는 곳은 여전히 나 자신이 된다.이 경우 해당 Widget을 ..
Unreal Engine - 데디케이티드 서버 11 (콤보 공격 최적화)
·
Unreal Engine
1. 언리얼 인사이트언리얼 프로파일링 툴인 Unreal Insights를 통해서 최적화 테스트를 해 볼 생각이다. 1 - 1. 설정언리얼 엔진을 다운로드한 경로로 가서 아래와 같이 UnrealInsights.exe 파일을 찾는다.일반적으로 아래와 같은 경로로 저장된다. C:\Program Files\Epic Games\UE_5.5\Engine\Binaries\Win64쉽게 사용하기 위해 환경변수에 등록을 한다이후 프로파일링을 하고자 하는 프로젝트가 있는 폴더로 들어가서 bat 파일을 만들어준다내용은 아래와 같이 환경변수를 사용하여 만들면 된다.UnrealEditor.exe %cd%\SCC_DedicatedX.uproject -NetTrace=1 -Trace=Net 1 - 2. 사용bat 파일을 더블클릭하..
Unreal Engine - 데디케이티드 서버 10 (콤보 공격)
·
Unreal Engine
1. 플레이어 쪽 함수 세팅새로운 인풋 액션인 IA_ComboAttack을 추가한 후 Input Binding 진행Section을 사용해야 하기 때문에, SectionName에 사용할 변수를 추가//헤더FName ComboAttackSectionName;FName DefaultComboAttackSectionName;//cppvoid ADXPlayerCharacter::HandleComboAttackInput(const FInputActionValue& InValue){ if (!HasAuthority() && IsLocallyControlled()) { PlayAnimMontage(ComboAttackMontage, 1.f, ComboAttackSectionName); //ServerRPCCombo..
UE5 Issues - Dash Skill (데디케이티드 서버)
·
Unreal Engine
1. Dash 애니메이션 세팅Dash 애니메이션 같은 경우는 대체로 Root Motion 애니메이션이 많다.그러나 우리가 원하는 속도나 거리, 시간을 이동시키기 위해서는 루트 모션을 사용하지 않고, 아래와 같은 세탕으로 코드를 잠금시킨 후 코드에서 움직이도록 하였다. 해당 애니메이션을 이용해 애니메이션 몽타주를 만들어 주면 된다. 2. 스킬 시스템과 연동현재 스킬은 아래와 같은 구조로 구성되어 있다.UObject를 상속받은 SkillBase 를 상속하여 만든 각각의 스킬 클래스 (실제 스킬의 실체)UActorComponent를 상속받은 SkillComp를 통해 스킬 사용스킬을 사용하는 흐름은 아래와 같이 정리할 수 있다.PlayerController와 IMC 바인딩void AGS_GuardianCont..
Unreal Engine - 데디케이티드 서버 9 (게임 종료)
·
Unreal Engine
1. 캐릭터 Death 처리 흐름StatComponent의 OnOutOfCurrentHP -> PlayerCharacter와 Delegate 바인딩PlayerCharacter -> PlayerControllerPlayerController -> GameMode 코드//게임 모드void ADXGameModeBase::OnCharacterDead(ADXPlayerController* InController){ if (!IsValid(InController) || AlivePlayerControllers.Find(InController) == INDEX_NONE) { return; } AlivePlayerControllers.Remove(InController); DeadPlayerControllers.Ad..
Unreal Engine - 데디케이티드 서버 8 (게임 흐름)
·
Unreal Engine
1. PlayerController타이틀 전용 컨트롤러 및 맵 추가 동작 모습게임 시작 전 start 화면 구현Start 버튼을 누르면 Join Server 수행 구조Title Level (새로운 레벨 추가)GameModeBase_Title (새로운 GameMode 추가)DXTitlePlayerController (새로운 PlayerController 추가 -> 위젯 띄워주기)구현 내용ADXTitlePlayerControllervoid ADXTitlePlayerController::BeginPlay(){ Super::BeginPlay(); if (!IsLocalController()) { return; } //not server if (IsValid(UIWidgetClass)) { UIWidgetI..
Unreal Engine - AI (2)
·
Unreal Engine
1. AI 애니메이션 구현1 - 1. Overview캐릭터와 AI의 입력 방식의 차이점캐릭터플레이어의 입력을 받은 후 AddMovementInput을 통해 이동 처리가 이루어진다."입력값"에 따라 애니메이션 블랜딩을 수행AIAIController가 이동 및 행동을 결정, MoveToActor 또는 MoveToLocation을 통해 내비게이션 기반 이동 처리"AI의 상태 (이동속력 등)" 에 따라 애니메이션 변경애니메이션 전환 방식캐릭터애니메이션 BP에서 플레이어의 입력값을 기반으로 Speed나 Direction 값을 세팅,Speed나 Direction 등의 변수를 통해 애니메이션 전환AIBT나 BB에서의 AI 행동감지 또는 애니메이션 BP로직으로 애니메이션 변경MoveTo 등의 함수를 통해 움직임이 실행..