언리얼521 [UE5 Multiplayer Shooting-End] 최종 인게임 영상 2개월이라는 시간을 걸쳐 결국 완성을 했다. 진짜 클라이언트만 개발하다 서버가 들어오니깐 급격하게 어려웠다.(지금도 어렵다..) 하지만 진짜 누구보다 열심히했다고 생각한다. 열심히 노력한 만큼 값진 결과가 있었다 생각한다. 지인들도 게임 재밌다고 테스트 끝나고 몇번을 더 플레이 한거보면 대만족!! ■기본적인 KEY 입력■ 이동 : W A S D 발사 : 좌 클릭 줌 : 우 클릭 장전 : R 총기 스왑 : E(총이 메인, 서브 둘 다 장착이 되어있을 경우 가능) 수류탄 : G (수류탄이 좀 낮게 발사되어 좀 위로 포물선으로 날리는것 추천) 앉기 : C (발소리 작게 들림) ■플레이어 관련■ HP : 100 Shield : 100 ■무기 종류 및 설명■ Main Weapon 1. 라이플 소총 : 에임에 고정.. 언리얼5 2023. 10. 3. [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-15] 팀 데스매치, 점령전 구현(영상) 그동안 너무 구현만 하느라 언리얼 관련 블로그를 너무 못 올린 거 같네요. 다시 구현한 내용 올려보도록 하겠습니다. 구현내용 TeamsGameMode 구현, CaptureThePointGameMode 구현 TeamScores Widget 추가 TeamPlayerStart 구현 BlasterGameState에 TeamScore관련 추가 WeaponSelectUI 구현(부활할때마다 무기 선택 가능) StartUpMap관련 UI 구현(맵 선택) 버그 수정 수류탄 처음에 2발로 나와있음 표시 오류 게임 종료 후 Blue Team 텍스트 잘못된거 수정 장전도중 피격되면 장전 멈추고 공격도 안됨 DeathMatch맵 클라이언트에서 팀 스코어 표기되는거 수정 스나이퍼 줌에 플레이어 가림 두 무기중에 하나만 선택하면 .. 언리얼5 2023. 9. 27. 언리얼 엔진 PostEditChangeProperty에 대해서 PostEditChangeProperty함수란 에디터 상에서 프로퍼티의 값을 변경할 때 호출되는 콜백 함수라고 보면 된다. 사용 전 생성자에서 InitialSpeed를 활용하여 다른 값들을 변경해도 생성자 호출 당시뿐이지 에디터에서 InitialSpeed를 수정한다고 ProjectileMovementComponent->InitialSpeed값이나 ProjectileMovementComponent->MaxSpeed값이 바뀌진 않는다. AProjectileBullet::AProjectileBullet() { ProjectileMovementComponent = CreateDefaultSubobject(TEXT("ProjectileMovementComponent")); // 총알이 속도에 맞춰서 회전 // 중.. 언리얼5 2023. 9. 5. [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-12] UE5 Framework 구조 GameFramework 클래스별 범위 CLASSES GameMode GameState PlayerState PlayerController Server Only Server and all Cients Server and all Clients Server and Owning Client Pawn HUD/Widgets Server and all Clients Owning Client Only 클래스별 역할 CLASSES GameMode GameState PlayerState PlayerController ●Default Classes ○Pawn ○PlayerController ○HUD ●Rules ○Player Eliminated ○Respawning Players ●Match State ●Warmup Ti.. 언리얼5 2023. 8. 11. [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-10] 반자동 라이플 발사, Crosshair 일부 안녕하세요 틴구입니다 이틀간 프로젝트 구현한 부분을 작성하려고 했는데 코드 양이 방대해 하나하나 설명하기 너무 어려워 플레이 영상으로 대체하려고 합니다. 구현 내용 Projectile Weapon 클래스 구현ㄱ Projectile Weapon 클래스는 Weapon 클래스를 상속받은 클래스 Projectile 클래스 구현ㄱ Projectile는 Fire Button Pressed 했을 경우 Weapon의 Muzzle Socket에 생성되어 날아가는 Actor Cashing 클래스 구현 Cashing는 Fire Button Pressed 했을 경우 Weapon의 AmmoEject 소켓의 위치에 생성되어 탄피가 날아가는 것을 표현해 주기 위한 클래스 BlasterPlayerController 클래스 Blast.. 언리얼5 2023. 8. 8. [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-8] 무기 HUD 표시 및 장착 | RPC 오늘은 무기 위에 TextWidget을 띄우고 Key Input시 무기를 장착하는 과정까지 진행하였습니다. 이 과정에서 RPC에 대해 공부를 하였고 공부 내용과 작업 현황을 공유하고자 이 글을 작성합니다. RPC란? RPC는 컴퓨터 프로그램이 네트워크를 통해 다른 주소 공간에서 서브루틴 또는 프로시저를 실행할 수 있게 하는 프로토콜입니다. 언리얼 엔진에서는 RPC를 이용하여 서버와 클라이언트 간에 함수를 호출하며, 게임 상태를 동기화하는데 사용합니다. RPC 방식 종류 기본적으로 RPC 는 3가지의 방식을 갖고있습니다 Client Server Multicast UE5에서의 RPC 사용법 Client RPC 아래와 같은 방식의 RPC는 서버에서 호출되지만 클라이언트에서 동작됩니다. UFUNCTION( Cl.. 언리얼5 2023. 8. 2. [UE5 Multiplayer Shooting-7] Network Role에 관해 언리얼 엔진 Network Role은 게임 오브젝트가 네트워크에서 어떤 동작을 할 수 있는지를 결정하는 방식입니다 ENetRole ROLE_None : 객체가 네트워크 통신에 참여하지 않음을 의미합니다. ROLE_SimulatedProxy : 서버에서 상태 업데이트를 받아들이는 객체에 부여됩니다. 이 객체들은 상태 업데이트를 받아들이는 것은 가능하지만, 자신의 상태를 변경하거나 네트워크 상태를 변경하지는 않습니다. ROLE_AutonomousProxy : 서버에 상태 변경을 보고하고, 자신의 상태를 직접 제어할 수 있는 객체에 부여됩니다. 일반적으로 플레이어가 직접 제어하는 캐릭터나 게임 오브젝트가 이 역할을 가집니다. ROLE_Authority : 객체가 네트워크 상태를 결정하고, 모든 클라이언트에 상.. 언리얼5 2023. 8. 1. 이전 1 2 다음