언리얼 엔진59 [UE5 Multiplayer Shooting-16] 마우스 민감도 UI 구현 개발을 진행하고 테스트하면서 민감도가 너무 빠르다는 것을 느꼈다. (저감도 유저...) 그래서 인게임에서 마우스 민감도를 조절할 수 있도록 구현하였다. 구현 방법 esc버튼 or 특정버튼 키 입력 설정 UserWidget을 상속받은 설정위젯 클래스 선언 및 구현 플레이어 캐릭터에서 마우스 민감도를 조절할 float 변수 선언 마우스 민감도 조절할 위젯을 meta = (BindWidget)으로 선언 위젯의 입력값이 바뀌었을때 각 함수 바인딩 -> 플레이어에게 해당 값 전달 코드 // Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "Bl.. 언리얼5 2023. 9. 28. [UE5 Multiplayer Shooting-14] Reload, Match State, Scatter 알고리즘 구현 및 무기 추가 구현 내용 Reloading 구현(Effect, Sound 등) Updating Ammo Match State WarmingUpState - 게임 입장 후 대기시간 CooldownState - 게임 끝나고 대기시간 Rocket 구현 히트스캔 무기 구현 권총, SMG, 샷건 Scatter 알고리즘 구현 랜덤하게 총알을 흩뿌리는 알고리즘(랜덤하게 총알이 발사됨) 중요한 부분 게임 모드와 게임 모드 베이스의 차이 게임 모드 (Game Mode): 게임 모드는 게임의 규칙과 로직을 관리하는 클래스입니다. 말 그대로 게임의 '모드'를 설정하며, 플레이어들이 어떻게 상호작용하고 승패를 결정할지를 결정한다고 합니다. 예를 들어 만들고자 하는 게임이 팀 전투를 다룬다면, 여기서 각 팀의 승패 조건을 정할 수 있습니다... 언리얼5 2023. 8. 21. [UE5 Multiplayer Shooting-13] Health 및 PlayerState 추가Score, Defeasts 관련 구현 내용 CharacterOverlay Class 구현 (Health ProgressBar, Score, Defeats 관련) Projectile 피격 구현(Damage) BlasterGameMode Class 생성 및 관리 구현 Elim Animation 및 Dissolve Material 구현 Elim Bot 구현 Weapon Change 구현 Random Spawn 구현 중요한 부분 1. Projectile 피격 관련 대미지 적용 (ApplyDamage 호출): UGameplayStatics::ApplyDamage 함수를 호출하여 대미지를 적용하면, 해당 대상의 AActor 클래스로 대미지 정보가 전달되고 이 정보에는 대미지의 양, 대미지 유형, 어떤 컨트롤러가 대미지를 일으켰는지, 대미지의 원인.. 언리얼5 2023. 8. 14. [UE5 Multiplayer Shooting-11] Automatic Fire, CorsshiarHUD, Zoom 완성 구현 내용 런타임 도중 움직임에 따른 Crosshair 변경 Aim의 LineTrace - HitResult.GetActor가 플레이어이고 인터페이스를 갖고있다면 Crosshair 색상 변경 BlasterCharacter가 Interface를 상속받는 클래스로 수정 Automatic Fire 구현 Crosshair HUD관련 코드 TraceUnderCrosshairs함수 뷰포트의 크기를 얻어와 화면 중앙의 위치를 얻어낸 뒤 3D공간의 월드 좌표와 방향을 얻은 뒤 해당 방향으로 LineTrace를 쏴 충돌된 Actor가 있고 해당 액터가 인터페이스를 갖고있다면 Crosshair의 색상을 빨간색으로 표시 플레이어 액터만 인터페이스를 상속받고 있기때문에 아래와 같은 코드 구성이 가능한것 void UCombat.. 언리얼5 2023. 8. 11. [UE5 Multiplayer Shooting-9] FABRIK IK를 활용한 무기 장착, AimOffset, FootStepSound 구현 FABRIK IK FABRIK (Forward and Backward Reaching Inverse Kinematics)는 효율적인 Inverse Kinematics (IK) 해결 방법 중 하나로, 복잡한 연산 없이도 연결된 관절 구조를 효율적으로 조작할 수 있게 해 줍니다. 구현 과정 무기별 스켈레탈 메쉬 - 스켈레톤 트리의 Root_Bone에 소켓 추가 LeftHandSocket로 이름 수정 플레이어 AnimInstance의 업데이트에서 FABRIK IK코드 구현 void UBlasterAnimInstance::NativeUpdateAnimation(float DeltaTime) { Super::NativeUpdateAnimation(DeltaTime); // 처음 널이라면 얻어옴 if (Blaste.. 언리얼5 2023. 8. 6. [UE5 Multiplayer Shooting-7] Network Role에 관해 언리얼 엔진 Network Role은 게임 오브젝트가 네트워크에서 어떤 동작을 할 수 있는지를 결정하는 방식입니다 ENetRole ROLE_None : 객체가 네트워크 통신에 참여하지 않음을 의미합니다. ROLE_SimulatedProxy : 서버에서 상태 업데이트를 받아들이는 객체에 부여됩니다. 이 객체들은 상태 업데이트를 받아들이는 것은 가능하지만, 자신의 상태를 변경하거나 네트워크 상태를 변경하지는 않습니다. ROLE_AutonomousProxy : 서버에 상태 변경을 보고하고, 자신의 상태를 직접 제어할 수 있는 객체에 부여됩니다. 일반적으로 플레이어가 직접 제어하는 캐릭터나 게임 오브젝트가 이 역할을 가집니다. ROLE_Authority : 객체가 네트워크 상태를 결정하고, 모든 클라이언트에 상.. 언리얼5 2023. 8. 1. [UE5 Multiplayer Shooting-5] UE 멀티 플레이어 플러그인 생성 03 지난 [UE5 Multiplayer Shooting-4] 포스팅에서 CharacterActor 클래스에서 Online Subsystem활용하여 스팀에 접속하는 방법을 포스팅하였다. 이번 포스팅은 CharacterActor클래스에서 진행하는 것이 아닌 따로 플러그인 관련 클래스를 만들어 모듈화해 다른 프로젝트에 가져다 사용할 수 있게끔 만들어보는 시간을 가져보겠습니다. 플러그인 생성 순서 여기까지 진행을 하면 프로젝트 파일 내부에 Plugins라는 폴더가 생기고 해당 폴더에 플러그인 클래스가 아래와 같이 생성이 됩니다. 플러그인에 사용될 모듈 설정 Plugins폴더의 MultiplayerSessions.Build.cs파일 사용할 플러그인 모듈을 적어줘야 코드에서 사용가능합니다. PublicDependenc.. 언리얼5 2023. 7. 29. [UE5 Multiplayer Shooting-1] UE 멀티플레이 서버 모델에 대해서 멀티플레이 멀티플레이 게임을 구현하는 방법에는 크게 두 가지 방법이 있습니다. P2P Client - Server P2P 모델 P2P(Peer-to-Peer) 모델은 모든 피어(또는 참가자, 노드 등)가 서로 직접 연결되어 데이터를 공유하는 네트워킹 아키텍처를 말합니다. 장점 정보를 전송하기 가장 간단하다. 단점 플레이어가 많아지면 많아질수록 데이터 전송이 급격하게 많아져 비효율적이다. ex) 플레이어간 정보를 보내며 소통 해야하기 때문에 비효율 각 플레이어가 서버의 역할을 수행하기 때문에, 핵킹이나 치트에 더 취약할 수 있다 Client-Server 모델 Client-Server모델이란 하나 또는 여러 개의 중앙 서버가 클라이언트로부터 정보를 받아 처리하고, 그 결과를 다시 클라이언트에게 전송하는 개념.. 언리얼5 2023. 7. 25. UE5 데디케이티드 서버 구현 01 데디케이티드 서버 구현 먼저 기본적인 데디케이티트 서버를 열어서 서버에 입장하는것까지 구현?하였습니다. 데디케이티드 서버 구현방법은 구글에 검색하면 많이 나와있어서 그 부분 참고하였습니다. 데디케이티드 서버 연동 기본적으로 Title Level -> InGame Level(서버 맵)로 이동하는 부분을 구현해봤습니다. UE5에서 플레이어가 Level을 이동하는 방법은 두 가지가 있습니다. Client Travel Server Travel Client Travel은 플레이어 컨트롤러에 속해 각 클라이언트의 플레이어가 개별적으로 Level 이동할 수 있는 형태이고 Server Travel은 현재의 World에 속해있는 함수로 서버에 연동된 모든 플레이어를 서버가 지정한 Level로 이동하는 형태입니다 이번 포.. 언리얼5 2023. 7. 21. 이전 1 다음